Saya ingin mengatur sistem agar menggunakan sebagian besar RAM untuk caching metadata sistem file, tetapi hanya jumlah yang cukup kecil untuk membaca / menulis caching dan membuat prefetch file. Idealnya saya ingin dapat menelusuri sistem file (sebanyak yang sesuai dengan RAM) tanpa memutar disk sampai saya benar-benar membuka file.
Berikut detailnya:
Saya memiliki server file buatan sendiri. Ada lima disk dalam volume LVM sekitar 9TB, tetapi hanya 4GB RAM. Karena server tidak melakukan banyak hal selain melayani file, sebagian besar RAM digunakan untuk caching. ("Gratis" melaporkan 3,4G dari 3,9G yang digunakan untuk cache.)
Server tinggal di kamar saya, dan jika semua disk berputar itu membuat suara yang cukup mengganggu ketika itu tenang. (Maksud saya bukan mencari noise, hanya noise yang berputar. Disk-disk tersebut terdiri dari berbagai merek dan model, dan saya pikir sedikit perbedaan dalam kecepatan rotasi menyebabkan gangguan. Tidak ada disk yang berisik sendiri, tetapi jika beberapa dari mereka berputar bersama, ada sedikit kebisingan dengan periode sub-Hertz.) Jadi saya mengkonfigurasi server untuk menurunkan disk sebagian besar waktu.
Tentu saja, jika disk diputar ketika saya membuka folder di manajer file saya, ada penundaan sementara mana dari disk yang memiliki folder itu berputar. Hanya saja, itu bukan masalah besar. Tetapi tergantung di mana saya melihat, itu bisa terjadi beberapa kali berturut-turut, jika LVM kebetulan menyebarkan metadata untuk setiap subfolder pada disk yang berbeda.
Saya menduga bahwa sebagian besar Linux mengisi cache-nya dengan konten file, dan mungkin mengambil data sebelumnya. Tembolok tidak terlalu berguna di luar beberapa MB untuk memastikan pemutaran lancar; jika saya hanya menonton film, saya mungkin tidak akan melihatnya lagi dalam waktu dekat. Prefetching, jika itu terjadi, juga sama sekali tidak berguna dalam kasus saya , setelah lebih dari beberapa MB.
Tetapi orang akan berpikir bahwa 4GB harus banyak untuk dapat me-cache sebagian besar metadata sistem file, setidaknya bagian-bagian yang sudah dikunjungi, sehingga saya dapat menelusuri file tanpa perlu memutar disk jika ternyata mereka sedang tidur.
Masih akan ada penundaan saat membuka file, tapi tidak apa-apa. Bandingkan “klik; tunggu ; klik; tunggu ; klik; tunggu ; bermain; tonton ”dengan“ klik; klik; klik; bermain; tunggu ; menonton". Yang pertama sangat membuat frustrasi; yang terakhir hampir diharapkan.
Catatan:
Jika itu penting, kernelnya adalah 3.2, OS adalah Debian, volumenya adalah lvm2, dan FS adalah ext4.
Satu-satunya alasan spin-down adalah kebisingan di malam hari; server jika tidak berjalan terus menerus. (Saya membuatnya sebagai daya rendah sebagai masuk akal.) Penundaan spin-down bervariasi tergantung pada waktu hari.
Hard disk hanya untuk media. OS berada pada flash drive terpisah (kecil). (Yang berarti keterlambatan spin-up datang dari data, bukan hanya karena diperlukan sesuatu
/usr
atau apa pun. Saya dapat menyimpan beberapa GB di dalamnya jika itu akan membantu masalah saya entah bagaimana.Dampak yang wajar pada kinerja bukanlah masalah besar. Disknya lebih cepat dari jaringan saya.
sumber
find / -ls > /dev/null
, kemudian putar disk, lalufind
semua file lagi, disk tidak berputar.free
menunjukkan buffer naik hingga sekitar 202MB saat melakukan ini. Tapi, jika saya melakukanfind
, kemudiancat /file/bigger/than/ram > /dev/null
, kemudianfree
menunjukkancached
naik untuk mengisi ruang kosong, dan untuk beberapa alasanbuffers
turun menjadi sekitar 195MB. Kemudian jika saya memutar disc dan melakukanfind
lagi disk masih berputar :-(swappiness
: Diatur ke default60
, tetapi mesin tidak memiliki partisi swap, jadi saya tidak yakin apakah itu banyak. Saya kira saya bisa meletakkan file swap di flash drive, tapi saya tidak tahu bagaimana ini akan membantu, atau bagaimana cara mengukurnya.