web-dev-qa-db-ja.com

/ proc / meminfoのエントリ

合計メモリ、バッファ、キャッシュなどの/ proc/meminfoに含まれているほとんどの情報を理解できます。以下に示すようなあまり目立たない情報の意味を教えていただけますか?

  • AnonPages
  • マッピングされた
  • スラブ
  • NFS_Unstable
  • 跳ねる、弾む
  • VmallocTotal
  • VmallocUsed
  • VmallocChunk

誰かが疑問に思っているなら、私はLinuxコマンドの出力について話しているcat/proc/meminfo

21
AIB

この情報の正規のソースは / 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
34
ephemient

私の理解は次のとおりです。
そして、これらの数値は理解が難しく、一貫性のない値を示していることに同意します。

  • 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領域は、カーネルのメモリ管理外にあるマッピングメモリである可能性があるため、上記の式は正確でないか、完全に間違っている可能性があります。

    次のいずれかを実行できます。

    • / proc/vmallocinfoをチェックして、すべてのエントリを整理し、自分でフィルタリングします。
    • Fs/proc/mmu.c:get_vmalloc_info()を変更して、if(vma-> flags&VM_ALLOC)の場合にのみ領域をカウントします
  • アクティブ+非アクティブ

     = 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
    
15
holmes

から RedHat

VMallocTotal —割り当てられた仮想アドレススペースの合計メモリ量(キロバイト単位)。 VMallocUsed —使用されている仮想アドレス空間のメモリの総量(キロバイト)。 VMallocChunk —利用可能な仮想アドレス空間の最大連続メモリブロック(キロバイト単位)。

0
Node