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 script .
「Mem」行ではなく、その下の行を見てください。
Linuxカーネルは、I/Oキャッシュ(およびその他の重要ではないバッファーですが、キャッシュはこの使用量のほとんどになります)を提供するために、できるだけ多くのメモリを消費します。このメモリは、プロセスが要求するとプロセスに放棄されます。 「-/ + buffers/cache」行には、I/Oキャッシュが考慮された後の調整値、つまりプロセスで使用されるメモリ量とプロセスで使用可能な量(この場合は578MBが使用され、 7411MB無料)。
「Mem」行と「-/ + buffers/cache」行の使用メモリの違いは、キャッシュの目的でカーネルが使用している量を示しています。7734MB-578MB = 7156MBはI/Oキャッシュです。プロセスがこのメモリを必要とする場合、カーネルはI/Oキャッシュのサイズを単純に縮小します。
また、最初の行がtotal used free shared buffers cached Mem: 7989 7734 254 0 28 7128 -/+ buffers/cache: 578 7411
(cached [7128] + buffers [28] + free [254])を追加すると、およそ2行目のfree [7411]値7128 + 28 + 254 = 7410
キャッシュが小さい場合は、次のコマンドを試してください。
ps aux --sort -rss