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.

53
demandé sur Vadim Kotov 2013-07-12 19:41:40

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.

107
répondu cdhowie 2013-07-12 15:46:48

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

13
répondu Gnana 2014-11-18 17:08:11