63

RedHat Linux 6.2 で実行していますが、使用されfree -mているほとんどすべてが表示されます8GB

             total       used       free     shared    buffers     cached
Mem:          7989       7734        254          0         28       7128
-/+ buffers/cache:        578       7411
Swap:         4150          0       4150

しかし同時に、top -Mこのすべてのメモリを使用しているプロセスを確認できません。

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

このps mem スクリプトも試しましたが、約 400MB のメモリが使用されていることが示されています。

4

3 に答える 3

114

「Mem」行を見ないで、その下の行を見てください。

Linux カーネルは、I/O キャッシュ (およびその他の重要でないバッファーですが、この使用量のほとんどはキャッシュです) を提供するために、できるだけ多くのメモリを消費します。このメモリは、プロセスが要求したときに解放されます。「-/+ buffers/cache」行は、I/O キャッシュが考慮された後に調整された値、つまり、プロセスが使用するメモリの量とプロセスが使用できる量を示しています (この場合、578MB が使用され、 7411MB 空き)。

「Mem」行と「-/+ buffers/cache」行の使用済みメモリの差は、カーネルがキャッシュのためにどれだけ使用しているかを示しています: 7734MB - 578MB = I/O キャッシュで 7156MB。プロセスがこのメモリを必要とする場合、カーネルは単純に I/O キャッシュのサイズを縮小します。

于 2013-07-12T15:46:48.860 に答える