GNU/Linux >> Linux Esercitazione >  >> Linux

Linux – `sync + Drop_caches` non sta eliminando le cache?

Ho un test case per journalctl dove trascorre diversi secondi a leggere dal disco. Ma se provo a confrontare più esecuzioni del test case, scopro che è incredibilmente veloce dopo la prima esecuzione. Anche se provo a eliminare le cache. Perché?

$ 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

Interessante time mostra ancora che esegue molti I/O a causa di errori di pagina (inputs ). Noto che se salto il drop_caches tra le corse, mostra invece 0.

Risposta accettata:

drop_caches influisce solo sulla cache del filesystem del kernel. Non influisce sulle cache nell'hardware sottostante. Apparentemente il tuo hardware ha centinaia di megabyte di cache (94992 * 4096 ~=400 MB). Fantastico!

Nel mio caso, è perché il kernel è in esecuzione in una macchina virtuale. Quindi "l'hardware sottostante" non è un semplice disco rigido. Questo illustra le impostazioni del disco utilizzate da virt-manager .

L'opzione utilizzata per la "modalità cache" rispetta i flush di scrittura (usando fsync() ), ma per il resto consente di memorizzare nella cache sia le scritture che le letture nella cache della pagina del kernel host. L '"hardware sottostante" include effettivamente una cache del disco all'interno della RAM dell'host, potenzialmente in crescita fino a più gigabyte.

libvirt / KVM chiama questa cache "writeback".

Ho anche notato che questo accelera il riavvio della VM.


Linux
  1. Linux – Riferimenti ma per Linux?

  2. Linux – Rendi più lenta la copia del disco/disco?

  3. Il dispositivo Linux non mostra lo spazio su disco corretto dopo un ridimensionamento

  4. Come eliminare le cache di I/O su disco su Linux?

  5. Il comando Linux 'll' non funziona

Come controllare lo spazio su disco in Linux

Come eliminare la partizione in Linux

Come elencare le partizioni del disco in Linux

RAID Linux

Come crittografare la partizione su Linux

Comando Linux df per controllare lo spazio su disco