GNU/Linux >> Belajar Linux >  >> Linux

Linux – Apakah `sync + Drop_caches` Tidak Menjatuhkan Cache?

Saya memiliki kasus uji untuk journalctl di mana ia menghabiskan beberapa detik membaca dari disk. Tetapi jika saya mencoba untuk membandingkan beberapa percobaan dari kasus uji, saya menemukan bahwa itu tidak mungkin cepat setelah percobaan pertama. Bahkan jika saya mencoba untuk menjatuhkan cache. Mengapa?

$ sync && echo 1 | sudo tee /proc/sys/vm/drop_caches && /usr/bin/time journalctl -b -u dev-shm.mount
1
0.01user 0.03system 0:04.50elapsed 1%CPU (0avgtext+0avgdata 30956maxresident)k
95424inputs+0outputs (424major+665minor)pagefaults 0swaps
$ sync && echo 1 | sudo tee /proc/sys/vm/drop_caches && /usr/bin/time journalctl -b -u dev-shm.mount >/dev/null
1
0.00user 0.01system 0:00.08elapsed 26%CPU (0avgtext+0avgdata 31832maxresident)k
94992inputs+0outputs (422major+445minor)pagefaults 0swaps

Menariknya time masih menunjukkannya melakukan banyak IO melalui kesalahan halaman (inputs ). Saya perhatikan bahwa jika saya melewatkan drop_caches antara berjalan, itu menunjukkan 0 sebagai gantinya.

Jawaban yang Diterima:

drop_caches hanya mempengaruhi cache sistem file kernel. Itu tidak memengaruhi cache di perangkat keras yang mendasarinya. Rupanya perangkat keras Anda memiliki ratusan megabyte cache (94992 * 4096 ~=400MB). Luar biasa!

Dalam kasus saya, itu karena kernel berjalan di VM. Jadi "perangkat keras yang mendasarinya" bukanlah hard disk sederhana. Ini menggambarkan pengaturan disk yang digunakan oleh virt-manager .

Opsi yang digunakan untuk "mode caching" mengacu pada penulisan flush (menggunakan fsync() ), tetapi sebaliknya memungkinkan caching menulis dan membaca di cache halaman kernel host. “Perangkat keras yang mendasarinya” secara efektif mencakup cache disk di dalam RAM host, yang berpotensi tumbuh hingga beberapa gigabyte.

libvirt / KVM menyebut ini sebagai cache "writeback".

Saya juga memperhatikan bahwa ini mempercepat boot ulang VM.


Linux
  1. fflush() tidak berfungsi di Linux

  2. linux limit.conf tidak berfungsi?

  3. Menghapus laptop Linux

  1. Gunakan df untuk memeriksa ruang disk kosong di Linux

  2. Periksa ruang disk yang digunakan di Linux dengan du

  3. Linux tidak membebaskan cache disk yang besar saat permintaan memori naik

  1. Cara mempartisi disk di Linux

  2. Linux – Referensi Tapi Untuk Linux?

  3. Linux – Membuat Penyalinan Disk/disk Lebih Lambat?