Vorrei impostare il sistema in modo da utilizzare la maggior parte della RAM per la memorizzazione nella cache dei metadati del file system, ma solo una quantità ragionevolmente piccola per la memorizzazione nella cache di lettura / scrittura e il prefetch dei file. Idealmente, vorrei essere in grado di sfogliare il filesystem (tanto quanto si adatta alla RAM) senza far girare i dischi fino a quando non apro effettivamente un file.
Ecco i dettagli:
Ho un file server fatto in casa. Ha cinque dischi in un volume LVM intorno a 9 TB, ma solo 4 GB di RAM. Poiché il server non fa molto altro che servire i file, la maggior parte della RAM viene utilizzata per la memorizzazione nella cache. (Rapporti "gratuiti" 3,4 G su 3,9 G utilizzati per la cache.)
Il server vive nella mia camera da letto e se tutti i dischi girano, fa abbastanza rumore da essere fastidioso quando è silenzioso. (Non intendo cercare il rumore, solo il rumore di rotazione. I dischi sono di varie marche e modelli, e penso che lievi differenze nelle velocità di rotazione causino interferenze. Nessun disco è rumoroso da solo, ma se alcuni di essi ruotano insieme c'è un leggero rumore con un periodo sotto Hertz.) Quindi ho configurato il server per far girare i dischi per la maggior parte del tempo.
Naturalmente, se i dischi vengono spenti quando apro una cartella nel mio file manager, c'è un ritardo mentre qualunque dei dischi ha quella cartella si gira. Solo che non è un grosso problema. Ma a seconda di dove guardo, può succedere più volte di seguito, se LVM diffonde i metadati per ogni sottocartella sui diversi dischi.
Ho il sospetto che Linux riempia principalmente la sua cache con contenuti di file e possibilmente dati precaricati. La memorizzazione nella cache non è molto utile oltre alcuni MB per garantire una riproduzione fluida; se ho appena visto un film, probabilmente non lo rivedrò presto. Il prefetch, se succede, è anche completamente inutile nel mio caso , dopo più di qualche MB.
Ma si potrebbe pensare che 4 GB dovrebbero essere sufficienti per poter memorizzare nella cache la maggior parte dei metadati del file system, almeno quelle parti che sono già state visitate, in modo che io possa sfogliare i file senza bisogno di far girare i dischi se si scopre che sono dormire.
Ci sarebbe ancora un ritardo all'apertura del file, ma va bene. Confronta "clic; aspetta ; clic; aspetta ; clic; aspetta ; giocare; guarda "con" clic; clic; clic; giocare; aspetta ; orologio". Il primo è incredibilmente frustrante; quest'ultimo è quasi previsto.
Appunti:
Se è importante, il kernel è 3.2, il sistema operativo è Debian, il volume è lvm2 e FS è ext4.
L'unica ragione per lo spin down è il rumore durante la notte; altrimenti il server funziona continuamente. (L'ho reso a bassa potenza quanto ragionevole.) Il ritardo di spin-down varia a seconda dell'ora del giorno.
I dischi rigidi sono solo per supporti. Il sistema operativo si trova su un'unità flash (piccola) separata. (Il che significa che i ritardi di spin-up provengono dai dati, non solo perché avevano bisogno di qualcosa
/usr
o qualcosa del genere. Potrei risparmiare qualche GB su di esso se in qualche modo potesse aiutare con il mio problema.Un impatto ragionevole sulle prestazioni non è un grosso problema. I dischi sono comunque più veloci della mia rete.