/proc/meminfoに含まれる総メモリ、バッファ、キャッシュなどのほとんどの情報を理解できます。以下にリストされているようなあまり明白でない情報は何を意味するのか教えていただけますか?
- アノンページ
- マッピング済み
- スラブ
- NFS_不安定
- 跳ねる、弾む
- Vmalloc合計
- Vmalloc使用
- VmallocChunk
誰かが不思議に思っているなら、私は Linux コマンドcat /proc/meminfoの出力について話している
この情報の正規のソースは/usr/src/linux/Documentation/filesystems/proc.txtです。具体的には、
AnonPages: Non-file backed pages mapped into userspace page tables Mapped: files which have been mmaped, such as libraries Slab: in-kernel data structures cache NFS_Unstable: NFS pages sent to the server, but not yet committed to stable storage Bounce: Memory used for block device "bounce buffers" VmallocTotal: total size of vmalloc memory area VmallocUsed: amount of vmalloc area which is used VmallocChunk: largest contigious block of vmalloc area which is free
私の理解は次のとおりです。
そして、私はこれらの数値が理解しにくく、一貫性のない値を示していることに同意します。
MemTotal
= MemFree + Active + Inactive + Slab + PageTables + VmallocUsed + X
(X : alloc_pages() (get_free_pages(), etc))
しかし、最近のカーネルのvmallocused値は間違っている可能性があります。これは、VM_ALLOC領域以外のVM_IOREMAP、VM_MAP、...などのVM_xxx領域をカウントするためです。
VM_IOREMAP領域は、カーネルのメモリ管理の外部にある可能性のあるマッピングメモリである可能性があるため、上記の式は正確ではないか、完全に間違っている可能性があります。
次のいずれかを実行できます。
アクティブ+非アクティブ
= Buffers + Cached + SwapCached + AnonPages
AnonPages
= /proc/*/task/*/smaps anonymous area all sum
(anonymous: no name|[heap]|/dev/zero|/dev/shm/*|[stack])
私はこれらの数字を一致させることができませんでしたが。ここを参照して、何か手がかりがあれば私を助けてください。
合計PageCache
= Buffers + Cached + SwapCached
スラブ
= SReclaimable + SUnreclaim