GNU/Linux >> Tutoriels Linux >  >> Linux

Linux - Comment vider les tampons et le cache sur un système Linux ?

Avant de faire un travail d'analyse comparative, comment libérer la mémoire (RAM) que le noyau Linux consomme pour ses tampons et son cache ?

Notez que cela est surtout utile pour l'analyse comparative. Vider les tampons et le cache réduit performance! Si vous êtes ici parce que vous pensiez que la libération des tampons et du cache était une chose positive, allez lire Linux a mangé ma RAM !. L'histoire courte :la mémoire libre est la mémoire inutilisée est gaspillée mémoire.

Réponse acceptée :

Vider le cache des tampons

Si jamais vous voulez le vider, vous pouvez utiliser cette chaîne de commandes.

# free && sync && echo 3 > /proc/sys/vm/drop_caches && free

             total       used       free     shared    buffers     cached
Mem:       1018916     980832      38084          0      46924     355764
-/+ buffers/cache:     578144     440772
Swap:      2064376        128    2064248
             total       used       free     shared    buffers     cached
Mem:       1018916     685008     333908          0        224     108252
-/+ buffers/cache:     576532     442384
Swap:      2064376        128    2064248

Vous pouvez signaler au noyau Linux de supprimer divers aspects des éléments mis en cache en remplaçant l'argument numérique par la commande ci-dessus.

  • Pour libérer le pagecache :

    # echo 1 > /proc/sys/vm/drop_caches
    
  • Pour libérer les dentries et les inodes :

    # echo 2 > /proc/sys/vm/drop_caches
    
  • Pour libérer le pagecache, les dentries et les inodes :

    # echo 3 > /proc/sys/vm/drop_caches
    

Les éléments ci-dessus sont destinés à être exécutés en tant que root. Si vous essayez de les faire en utilisant sudo alors vous devrez changer légèrement la syntaxe en quelque chose comme ceci :

$ sudo sh -c 'echo 1 >/proc/sys/vm/drop_caches'
$ sudo sh -c 'echo 2 >/proc/sys/vm/drop_caches'
$ sudo sh -c 'echo 3 >/proc/sys/vm/drop_caches'

REMARQUE : Il existe une version plus ésotérique de la commande ci-dessus si vous aimez cela :

$ echo "echo 1 > /proc/sys/vm/drop_caches" | sudo sh

Pourquoi le changement de syntaxe ? Le /bin/echo le programme s'exécute en tant que root, à cause de sudo , mais le shell qui redirige la sortie d'echo vers le fichier racine uniquement s'exécute toujours sous votre nom. Votre shell actuel effectue la redirection avant sudo démarre.

Voir ce qu'il y a dans les tampons et le cache

Jetez un œil à linux-ftools si vous souhaitez analyser le contenu des tampons et du cache. Plus précisément, si vous souhaitez voir quels fichiers sont actuellement mis en cache.

fincore

Avec cet outil, vous pouvez voir quels fichiers sont mis en cache dans un répertoire donné.

fincore [options] files...

  --pages=false      Do not print pages
  --summarize        When comparing multiple files, print a summary report
  --only-cached      Only print stats for files that are actually in cache.

Par exemple, /var/lib/mysql/blogindex :

[email protected]:/var/lib/mysql/blogindex# fincore --pages=false --summarize --only-cached * 
stats for CLUSTER_LOG_2010_05_21.MYI: file size=93840384 , total pages=22910 , cached pages=1 , cached size=4096, cached perc=0.004365 
stats for CLUSTER_LOG_2010_05_22.MYI: file size=417792 , total pages=102 , cached pages=1 , cached size=4096, cached perc=0.980392 
stats for CLUSTER_LOG_2010_05_23.MYI: file size=826368 , total pages=201 , cached pages=1 , cached size=4096, cached perc=0.497512 
stats for CLUSTER_LOG_2010_05_24.MYI: file size=192512 , total pages=47 , cached pages=1 , cached size=4096, cached perc=2.127660 
stats for CLUSTER_LOG_2010_06_03.MYI: file size=345088 , total pages=84 , cached pages=43 , cached size=176128, cached perc=51.190476 
stats for CLUSTER_LOG_2010_06_04.MYD: file size=1478552 , total pages=360 , cached pages=97 , cached size=397312, cached perc=26.944444 
stats for CLUSTER_LOG_2010_06_04.MYI: file size=205824 , total pages=50 , cached pages=29 , cached size=118784, cached perc=58.000000 
stats for COMMENT_CONTENT_2010_06_03.MYI: file size=100051968 , total pages=24426 , cached pages=10253 , cached size=41996288, cached perc=41.975764 
stats for COMMENT_CONTENT_2010_06_04.MYD: file size=716369644 , total pages=174894 , cached pages=79821 , cached size=326946816, cached perc=45.639645 
stats for COMMENT_CONTENT_2010_06_04.MYI: file size=56832000 , total pages=13875 , cached pages=5365 , cached size=21975040, cached perc=38.666667 
stats for FEED_CONTENT_2010_06_03.MYI: file size=1001518080 , total pages=244511 , cached pages=98975 , cached size=405401600, cached perc=40.478751 
stats for FEED_CONTENT_2010_06_04.MYD: file size=9206385684 , total pages=2247652 , cached pages=1018661 , cached size=4172435456, cached perc=45.321117 
stats for FEED_CONTENT_2010_06_04.MYI: file size=638005248 , total pages=155763 , cached pages=52912 , cached size=216727552, cached perc=33.969556 
stats for FEED_CONTENT_2010_06_04.frm: file size=9840 , total pages=2 , cached pages=3 , cached size=12288, cached perc=150.000000 
stats for PERMALINK_CONTENT_2010_06_03.MYI: file size=1035290624 , total pages=252756 , cached pages=108563 , cached size=444674048, cached perc=42.951700 
stats for PERMALINK_CONTENT_2010_06_04.MYD: file size=55619712720 , total pages=13579031 , cached pages=6590322 , cached size=26993958912, cached perc=48.533080 
stats for PERMALINK_CONTENT_2010_06_04.MYI: file size=659397632 , total pages=160985 , cached pages=54304 , cached size=222429184, cached perc=33.732335 
stats for PERMALINK_CONTENT_2010_06_04.frm: file size=10156 , total pages=2 , cached pages=3 , cached size=12288, cached perc=150.000000 
---
total cached size: 32847278080

Avec la sortie ci-dessus, vous pouvez voir qu'il existe plusieurs fichiers *.MYD, *.MYI et *.frm qui sont actuellement mis en cache.

Connexe :Debian – Pourquoi « ls » enveloppe-t-il soudainement des éléments avec des espaces entre guillemets simples ?

Échanger

Si vous souhaitez effacer votre swap, vous pouvez utiliser les commandes suivantes.

$ free
             total       used       free     shared    buffers     cached
Mem:       7987492    7298164     689328          0      30416     457936
-/+ buffers/cache:    6809812    1177680
Swap:      5963772     609452    5354320

Utilisez ensuite cette commande pour désactiver le swap :

$ swapoff -a

Vous pouvez confirmer qu'il est maintenant vide :

$ free
             total       used       free     shared    buffers     cached
Mem:       7987492    7777912     209580          0      39332     489864
-/+ buffers/cache:    7248716     738776
Swap:            0          0          0

Et pour le réactiver :

$ swapon -a

Et maintenant reconfirmez avec free :

$ free
             total       used       free     shared    buffers     cached
Mem:       7987492    7785572     201920          0      41556     491508
-/+ buffers/cache:    7252508     734984
Swap:      5963772          0    5963772

Linux
  1. Comment vérifier la version du système d'exploitation et de Linux

  2. Comment changer l'identité d'un système Linux

  3. Comment supprimer les tampons de mémoire et le cache sous Linux

  4. Comment monter et démonter un système de fichiers sous Linux

  5. Quelle est la différence entre la mémoire tampon et la mémoire cache sous Linux ?

Comment suivre et tracer un processus Linux

Comment installer et utiliser YouTube-DL sur le système Linux

Comment changer le nom d'utilisateur et le nom d'hôte sur le système Linux

Comment installer et configurer AnyDesk sur le système Linux

Comment installer et configurer Django sur le système Linux

Comment installer et configurer PrestaShop sur le système Linux