GNU/Linux >> Tutoriels Linux >  >> Linux

Linux - `sync + Drop_caches` ne supprime-t-il pas les caches ?

J'ai un cas de test pour journalctl où il passe plusieurs secondes à lire sur le disque. Mais si j'essaie de comparer plusieurs exécutions du cas de test, je trouve que c'est incroyablement rapide après la première exécution. Même si j'essaie de supprimer des caches. Pourquoi ?

$ 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

Intéressant time montre toujours qu'il fait beaucoup d'E/S via des défauts de page (inputs ). Je remarque que si je saute les drop_caches entre les exécutions, il affiche 0 à la place.

Réponse acceptée :

drop_caches n'affecte que le cache du système de fichiers du noyau. Cela n'affecte pas les caches du matériel sous-jacent. Apparemment, votre matériel a des centaines de mégaoctets de cache (94992 * 4096 ~=400 Mo). Génial !

Dans mon cas, c'est parce que le noyau s'exécute dans une machine virtuelle. Ainsi, le "matériel sous-jacent" n'est pas un simple disque dur. Ceci illustre les paramètres de disque utilisés par virt-manager .

L'option utilisée pour le "caching mode" respecte les vidages d'écriture (en utilisant fsync() ), mais permet sinon de mettre en cache les écritures et les lectures dans le cache de page du noyau hôte. Le "matériel sous-jacent" comprend en fait un cache disque dans la RAM de l'hôte, pouvant atteindre plusieurs gigaoctets.

libvirt / KVM appelle cette mise en cache "réécriture".

J'ai également remarqué que cela accélère le redémarrage de la VM.


Linux
  1. Utilisez df pour vérifier l'espace disque libre sous Linux

  2. Linux – Refs Mais pour Linux ?

  3. Linux - Rend la copie de disque/disque plus lente ?

  4. Linux limits.conf ne fonctionne pas ?

  5. Linux ne libère pas de cache disque volumineux lorsque la demande de mémoire augmente

Comment vérifier l'espace disque sous Linux

Comment supprimer une partition sous Linux

Comment répertorier les partitions de disque sous Linux

RAID Linux

Comment chiffrer une partition sous Linux

Commande Linux df pour vérifier l'espace disque