Linuxの/proc 以下を見て、メモリ利用状況を調査する(OOM Killer対策)

oom-killer からメモリ関係を追っていて気になったのでメモ。
procファイルシステム配下のトップレベルファイル(redhat.com)
 
・ /proc/meminfo
現在のメモリの使用状況を表示します。
核パラメータの詳細はこちら(Linuxカーネルメモ)
例:

$ cat /proc/meminfo
MemTotal: 10391204 kB
MemFree: 5276876 kB
Buffers: 436432 kB
Cached: 3746096 kB
SwapCached: 0 kB
Active: 3976932 kB
Inactive: 757892 kB
HighTotal: 9567104 kB
HighFree: 5034592 kB
LowTotal: 824100 kB
LowFree: 242284 kB
SwapTotal: 8385920 kB
SwapFree: 8385920 kB
Dirty: 96 kB
Writeback: 112 kB
AnonPages: 467276 kB
Mapped: 884892 kB
Slab: 137352 kB
PageTables: 224292 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
CommitLimit: 13581520 kB
Committed_AS: 2113328 kB
HighTotal: 9567104 kB
HighFree: 5034592 kB
LowTotal: 824100 kB
LowFree: 242284 kB
SwapTotal: 8385920 kB
SwapFree: 8385920 kB
Dirty: 96 kB
Writeback: 112 kB
AnonPages: 467276 kB
Mapped: 884892 kB
Slab: 137352 kB
PageTables: 224292 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
CommitLimit: 13581520 kB
Committed_AS: 2113328 kB
VmallocTotal: 116728 kB
VmallocUsed: 6884 kB
VmallocChunk: 109344 kB
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
Hugepagesize: 2048 kB

・ /proc/buddyinfo
 DMA, Normal, Highmem 領域ごとの空きメモリスロット(ページ単位)を表示します。
左から 1*4KB, 2*4KB, 4*4KB, 8*4KB, …, 4096*4KB(1ページ=4096バイトの場合) を1単位としたスロット数を表示していて、1行の合計がその領域の全空き容量になります。
例:

$ cat /proc/buddyinfo
Node 0, zone DMA 5 2 0 0 0 0 0 1 1 1 0
Node 0, zone Normal 209 104 20 5 2 1 0 0 1 1 0
Node 0, zone HighMem 6925 3038 1002 212 17508 8000 1164 274 118 9 633

 
・ /proc/zoneinfo
DMA, Normal, Highmem 領域ごとの詳細なメモリ使用状況を表示します。
例:

$ cat /proc/zoneinfo
Node 0, zone DMA // DMA 領域の情報(単位:ページ)
  pages free 905
        min 17
        low 21
        high 25
        active 2
        inactive 0
        scanned 0 (a: 21 i: 9)
        spanned 4096
        present 4096
・・・中略・・・
Node 0, zone Normal // Normal 領域の情報(単位:ページ)
  pages free 1305
        min 939
        low 1173
        high 1408
        active 625
        inactive 1889
        scanned 0 (a: 9 i: 0)
        spanned 225280
        present 225280
・・・以下略・・・

参考:
Linuxカーネルメモ