Qu'est-ce qui est "caché" dans la commande top?

46

En courant top, je reçois:

top - 09:10:52 up 18:37,  1 user,  load average: 1.56, 1.33, 1.15
Tasks:  39 total,   1 running,  38 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.1%us,  0.6%sy,  1.0%ni, 92.5%id,  5.8%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:   4194304k total,  3045460k used,  1148844k free,        0k buffers
Swap:        0k total,        0k used,        0k free,  2256128k cached

Voir la partie: 2256128k en cache? Qu'est-ce que cela veut dire exactement?

Je compare deux VPS de deux fournisseurs, celui-ci a toujours une grande quantité là-bas (70% de la mémoire utilisée) et l’autre fournisseur de VPS indique toujours 0.

KKK
la source

Réponses:

15

Ce nombre avant la mise en cache est la quantité de mémoire physique utilisée par les tampons de cache pour vos systèmes de fichiers.

Ce n'est pas réellement lié à SWAP, bien qu'il soit sur la ligne "Swap:".

Pour vérifier ma réponse avec une petite expérience, essayez ce qui suit:

Exécutez top et notez la valeur 'cached'. Maintenant courir

dd if=/dev/zero of=~/trick bs=1M count=128

si vous lancez à nouveau dessus, vous remarquerez que la mémoire cache a augmenté de 128 millions

Maintenant, supprimez le fichier

rm ~/trick

Redémarrez en haut et vous verrez que 'caché' a été supprimé de 128M

Donc pour Mem:

total = used + free et

used = <all apps> + buffers + cached

(où les tampons sont essentiellement des métadonnées pour le cache). Un peu déroutant d'une interface utilisateur.

rogerdpack
la source
et je peux influencer cela de toute façon, par exemple le limiter ou le désactiver complètement?
KKK
2
Pourquoi voulez-vous faire cela?! avec quoi allez-vous faire? son sur la façon dont le système de fichiers cache dans la mémoire physique.
Parce que la plupart du système de fichiers est une base de données, la base de données a son propre cache, donc je suppose qu'il serait bon de limiter cette partie d'une manière ou d'une autre.
KKK
Vous pouvez le faire avec une recherche, mais je ne vous conseille pas. Cela limitera les performances du FS
117

le noyau Linux utilisera la mémoire disponible pour la mise en cache du disque, sauf si cela est requis par un programme en cours d'exécution.

Ceci est considéré comme bon; Disons que vous avez 4 Go de RAM et que vos programmes n’utilisent que 1 Go. Les 3 autres Go vont être gaspillés. Malgré l'impression de "bien-être" de savoir que vous n'utilisez que 25% de votre mémoire, la contrepartie est que les 75% restants sont inutilisés. Le noyau utilise donc cela pour la mise en cache des fichiers, ce qui améliore considérablement les performances. C'est automatique; contrairement aux systèmes d'exploitation plus anciens, vous n'avez pas besoin de décider combien vous allez consacrer au cache disque ni de le configurer manuellement.

"Le cache disque de Linux est très discret. Il utilise de la mémoire de réserve pour augmenter considérablement la vitesse d'accès au disque, sans perdre de mémoire pour les applications. Un magasin entièrement utilisé de RAM sur Linux est une utilisation matérielle efficace, pas un signal d'alarme."

C’est une question tellement courante qu’un site Web entier lui est consacré:

http://www.linuxatemyram.com

Le site Web a même un moyen de vider le cache disque afin que vous puissiez ensuite exécuter certaines applications et voir à quelle vitesse elles sont avec le cache activé :)

roadmr
la source
4
J'adore la réponse, mais à cause du manque de réputation, je ne peux pas (encore) le surclasser. Pardon.
KKK
4
Ne vous inquiétez pas, je suis heureux de pouvoir vous aider. J'espère que l'information est utile!
roadmr
CECI devrait être la réponse acceptée. Tant pis . . . :(
ankush981
devrait certainement être la réponse acceptée. linuxatemyram est une excellente information!
Rafaelbattesti