私のシステムには1GBの物理RAMがあります。これで、free
次のメモリ使用量が表示されます。
total used free shared buffers cached
Mem: 1026360 863660 162700 0 0 50216
-/+ buffers/cache: 813444 212916
Swap: 5242876 500648 4742228
したがって、ブロックキャッシュに加えて813MBが使用されます。/proc/meminfo
(長さが長い理由で下部に投稿します)283MBはユーザー領域プロセス(AnonPages
+)にマッピングされ、127MBはMapped
カーネル(Slab
++)で使用されることを伝えます。KernelStack
PageTables
しかし、まだ説明されていないスペースは約400MBほどあります。システムがメモリを使用する方法の私の概念は正しいですか?私のメモリの半分がどこで使用されているかを知る方法はありますか?
MemTotal: 1026360 kB
MemFree: 193768 kB
Buffers: 0 kB
Cached: 28932 kB
SwapCached: 101208 kB
Active: 178816 kB
Inactive: 182476 kB
Active(anon): 167196 kB
Inactive(anon): 168184 kB
Active(file): 11620 kB
Inactive(file): 14292 kB
Unevictable: 9848 kB
Mlocked: 9848 kB
SwapTotal: 5242876 kB
SwapFree: 4739272 kB
Dirty: 24 kB
Writeback: 0 kB
AnonPages: 268280 kB
Mapped: 14832 kB
Shmem: 280 kB
Slab: 111828 kB
SReclaimable: 27432 kB
SUnreclaim: 84396 kB
KernelStack: 2280 kB
PageTables: 13200 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
WritebackTmp: 0 kB
CommitLimit: 5756056 kB
Committed_AS: 1506036 kB
VmallocTotal: 34359738367 kB
VmallocUsed: 145004 kB
VmallocChunk: 34359581976 kB
HardwareCorrupted: 0 kB
AnonHugePages: 0 kB
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB
DirectMap4k: 79808 kB
DirectMap2M: 968704 kB
答え1
私は少しawkを使って、常駐セットサイズ(RSS)に基づいて上位10人のメモリユーザーを得ました。 RSSは、サーバーRAMのプロセスが実際に使用するメモリ量です(スワップページなし)。
awk '{ printf "%8d %8d %8d pid:%-5d comm:%-10s state:%c\n",$14,$15,$24,$1,$2,$3; }' /proc/[1-9]*/stat |sort -rn -k3 |sed 10q
それ以外の場合は、プロセス全体のリストがsed 10q
降順で表示されます。
RSSは出力の3番目の列です。場合によっては、カーネルのフィールド番号付けを変更する必要がありますman 5 proc
。