2013/12/25

linux meminfo 見方

cat /proc/meminfoとすることで、現在のメモリの使用状況を確認できる。

MemTotal:      1001008 kB
MemFree:        200708 kB
Buffers:         43400 kB
Cached:         395740 kB
SwapCached:          0 kB
Active:         557556 kB
Inactive:       178624 kB
HighTotal:       97216 kB
HighFree:          140 kB
LowTotal:       903792 kB
LowFree:        200568 kB
SwapTotal:     2096472 kB
SwapFree:      2096472 kB
Dirty:             224 kB
Writeback:           0 kB
Mapped:         356492 kB
Slab:            47820 kB
CommitLimit:   2596976 kB
Committed_AS:   689048 kB
PageTables:       6192 kB
VmallocTotal:   114680 kB
VmallocUsed:      4560 kB
VmallocChunk:   107264 kB
HugePages_Total:     0
HugePages_Free:      0
Hugepagesize:     2048 kB


★★★:
MemTotal    メモリ搭載量
MemFree        空きメモリ量
Buffers        Bufferのサイズ
Cached        PageCacheのサイズ
SwapCached
    PageoutされていたページをPageinして、まだディスクにPageoutした時のデータが残っているページの容量。空きメモリが足りなくなった場合は、Pageoutせずにそのまま解放できるのでI/Oを省略できる。
Active
    最近アクセスされたページ。基本的に解放の対象外。
Inactive
    最近アクセスのないページ。空きメモリが少なくなるとこのページから解放されていく。
HighTotal
    HighMemoryの総容量
HighFree
    HighMemoryの空き容量
LowTotal    LowMemoryの総容量
LowFree        LowMemoryの空き容量
SwapTotal    スワップ領域の総容量
SwapFree    スワップ領域の空き容量
Dirty    Dirtyページのサイズ。ディスクへ書き出す必要がある。
Writeback    スワップデバイスに書き出し中のページの容量
Mapped    PageTableからマップされているページの容量
Slab    スラブアロケータのメモリ使用量
CommitLimit    プロセスが確保できるメモリの制限値(*4)
Committed_AS    プロセスが割り当てているアドレス空間の総量(物理ページの割り当て量ではない)。malloc()だけしてまだアクセスしていない領域(仮想アドレス空間だけ割り当てられて物理ページが割り当てられていない状態)も含まれる。(VM的に'commit'されいつでも使用できる状態)
PageTables    PageTableのメモリ使用量
VmallocTotal    vmalloc()により確保するアドレス空間の総容量
VmallocUsed    vmalloc()で割り当て済みの容量
VmallocChunk    vmalloc用領域のFree領域で最も大きい連続領域のサイズ


★★★
カーネルが内部的に管理している枠組みでのメモリ情報をそのまま出しているので、残念ながらユーザ視点で知りたいメモリ情報とは一致しません。

MemTotal = MemFree + File-backedなメモリ + Anonymousなメモリ + カーネル空間が使うメモリ

★File-backedというのは、ディスクからメモリに読み込んだファイルなど、メモリを開放したくなったら、その内容をディスクに書き戻せば開放できるタイプのメモリです。
    Active(file):      51452 kB
    Inactive(file):    33560 kB
---------------------------------------------
|            Buffers / Cached               |
---------------------------------------------
| Active(file) / Inactive(file) |   Shmem   |
---------------------------------------------
Buffers + Cached = Active(file) + Inactive(file) + Shmem
Active(anon) + Inactive(anon) = Shmem + AnonPages

★Anonymousというのはそれ以外のメモリで、メモリを開放したくなったら、Swap領域に書き出さないと開放できないタイプのメモリ。