合計メモリ、バッファ、キャッシュなどの/ proc/meminfoに含まれているほとんどの情報を理解できます。以下に示すようなあまり目立たない情報の意味を教えていただけますか?
誰かが疑問に思っているなら、私は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])
私はこれらの数を一致させることができませんでしたが。 こちら を参照して、手がかりがあったら手伝ってください。
総ページキャッシュ
= Buffers + Cached + SwapCached
スラブ
= SReclaimable + SUnreclaim
から RedHat
VMallocTotal —割り当てられた仮想アドレススペースの合計メモリ量(キロバイト単位)。 VMallocUsed —使用されている仮想アドレス空間のメモリの総量(キロバイト)。 VMallocChunk —利用可能な仮想アドレス空間の最大連続メモリブロック(キロバイト単位)。