Linux free montre une utilisation élevée de la mémoire mais top ne le fait pas
Sur RedHat Linux 6.2 Je cours free -m
et il montre presque tous les 8GB
utilisés
total used free shared buffers cached
Mem: 7989 7734 254 0 28 7128
-/+ buffers/cache: 578 7411
Swap: 4150 0 4150
Mais en même temps dans top -M
Je ne vois aucun processus utilisant toute cette mémoire:
top - 16:03:34 up 4:10, 2 users, load average: 0.08, 0.04, 0.01
Tasks: 169 total, 1 running, 163 sleeping, 5 stopped, 0 zombie
Cpu(s): 0.7%us, 0.3%sy, 0.0%ni, 98.6%id, 0.4%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 7989.539M total, 7721.570M used, 267.969M free, 28.633M buffers
Swap: 4150.992M total, 0.000k used, 4150.992M free, 7115.312M cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1863 sroot 20 0 398m 24m 9.8m S 0.3 0.3 3:12.87 App1
1 sroot 20 0 2864 1392 1180 S 0.0 0.0 0:00.91 init
2 sroot 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd
3 sroot RT 0 0 0 0 S 0.0 0.0 0:00.07 migration/0
4 sroot 20 0 0 0 0 S 0.0 0.0 0:00.00 ksoftirqd/0
5 sroot RT 0 0 0 0 S 0.0 0.0 0:00.00 migration/0
6 sroot RT 0 0 0 0 S 0.0 0.0 0:00.00 watchdog/0
7 sroot RT 0 0 0 0 S 0.0 0.0 0:00.08 migration/1
8 sroot RT 0 0 0 0 S 0.0 0.0 0:00.00 migration/1
J'ai aussi essayé ce script ps mem mais onlt montre à propos de la mémoire 400MB utilisée.
2 réponses
Ne regardez pas la ligne "Mem", regardez celle en dessous.
Le noyau Linux consomme autant de mémoire que possible pour fournir le cache d'E/S (et d'autres tampons non critiques, mais le cache sera la plus grande partie de cette utilisation). Cette mémoire est abandonnée aux processus lorsqu'ils le demandent. La ligne" - / + buffers/cache " vous montre les valeurs ajustées après la prise en compte du cache d'E / S, c'est-à-dire la quantité de mémoire utilisée par les processus et la quantité disponible pour les processus (dans ce cas cas, 578MB utilisé et 7411MB gratuit).
La différence de mémoire utilisée entre la ligne " Mem " et "- / + buffers / cache " vous montre combien est utilisé par le noyau pour la mise en cache: 7734MB-578MB = 7156MB dans le cache d'E/S. Si les processus ont besoin de cette mémoire, le noyau réduira simplement la taille du cache d'E/S.
Aussi, comme le montre la première ligne
total used free shared buffers cached
Mem: 7989 7734 254 0 28 7128
-/+ buffers/cache: 578 7411
Si l'on ajoute (en cache[7128] + tampons[28] + gratuit[254]), on va obtenir environ la deuxième ligne gratuit[7411] valeur
7128 + 28 + 254 = 7410