Sous RedHat Linux 6.2, je lance free -m
Et il affiche 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é ceci ps mem script mais il montre seulement environ 400 Mo de mémoire utilisée.
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 mémoires tampons non critiques, mais le cache utilisera la plus grande partie de cette utilisation). Cette mémoire est abandonnée aux processus quand ils le demandent. La ligne "-/+ buffers/cache" affiche les valeurs ajustées après la comptabilisation 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, 578 Mo utilisés et 7411MB gratuit).
La différence de mémoire utilisée entre les lignes "Mem" et "-/+ buffers/cache" indique la quantité utilisée par le noyau aux fins de 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.
En outre, 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 nous ajoutons (mis en cache [7128] + tampons [28] + libre [254]), nous aurons environ la valeur [7411] libre de la deuxième ligne 7128 + 28 + 254 = 7410
Si le cache est petit, essayez cette commande:
ps aux --sort -rss