Sepertinya pertama kali saya menjalankan find
atau ls
pada direktori, perlu beberapa saat untuk bekerja. Tapi, setiap kali sesudahnya, itu cepat, seolah-olah daftar isi direktori telah di-cache atau diindeks di suatu tempat.
Apakah ada cara untuk melestarikan cache ini di reboot komputer?
Jawaban:
Anda dapat menggunakan vmtouch untuk menambahkan file ke cache halaman Anda (cache disk).
Masukkan file
nohup vmtouch -dl <files or directories> &
Anda/etc/rc.local
untuk menambah dan mengunci file ke dalam cache halaman Anda saat boot. Jika Anda ingin menambahkan file ke cache halaman Anda, tetapi tidak ingin menguncinya ke dalam memori, gunakan-t
flag sebagai ganti-ld
flag.Untuk informasi lebih lanjut tentang cache halaman, lihat di sini , di sini , dan di wikipedia .
sumber
build-essential
paket. Unduhvmtouch.c
. Jalankangcc -O2 -o vmtouch vmtouch.c
ataumake vmtouch
dan Anda mendapatkan binervmtouch
yang kemudian dapat Anda salin misalnya/usr/local/bin
atau panggil oleh./vmotouch
.vmtouch
sebagai perintah boot saat memperlambat seluruh bekerja? Harapan saya adalah untuk melestarikan cache melewati boot daripada (mahal) regenerasi setiap kali."Simpan di seluruh reboot", saya ragu. Tetapi Anda dapat dengan mudah membangun kembali cache saat boot, yang mencapai hal yang hampir sama tanpa penundaan kecil.
Buat file
/etc/cron.d/rebuild-fs-cache
dan masukkan yang berikut di dalamnya:Ini menggunakan
nice
danionice
(yang harus diinstal secara default, dan pasti tersedia melalui manajer paket; Debian memasukkannya ke dalam ,coreutils
danutil-linux
, masing-masing) untuk menurunkan prioritasfind
proses ke tingkat terbaik yang mungkin, yang berarti tidak boleh mengganggu hal lain. berjalan di sistem Anda tetapi akan membutuhkan waktu sedikit lebih lama untuk diselesaikan.find
itu sendiri akan melalui danstat()
semuanya, yang memaksa kernel untuk memuat data sistem file dari disk ke memori.Begitu cache telah dibangun, selama tidak dibersihkan karena OS membutuhkan memori untuk hal lain, itu harus dipertahankan. Saya telah menggunakan ini untuk sementara waktu dan daftar direktori bahkan di direktori besar secara signifikan lebih cepat daripada tanpa pekerjaan cron di atas, meskipun saya tidak dapat menyebutkan angka pastinya.
sumber
locate
, yang datang denganupdatedb
memperbarui basis data lokasi: en.wikipedia.org/wiki/Locate_(Unix)locate
sama sekali, tapi saya menggunakanls
banyak. Dan terkadangfind
. (Juga, temukan dan ls adalah perintah khusus yang ditanyakan oleh OP.) Maksud dari penggunaan difind
sini adalah bahwa ia mengulangi semua yang ada pada stat panggilan penyimpanan (), sehingga kernel harus memuat metadata ke dalam memori. Setelah itu ada, sama baiknya jika disimpan di reboot.