22

我可以理解/proc/meminfo中包含的大部分信息,例如总内存、缓冲区、缓存等。你能告诉我下面列出的那些不太明显的信息是什么意思吗?

  • 匿名页面
  • 映射
  • 板坯
  • NFS_不稳定
  • 弹跳
  • VmallocTotal
  • VmallocUsed
  • VmallocChunk

如果有人想知道,我说的是 linux 命令cat /proc/meminfo的输出

4

3 回答 3

35

此信息的规范来源是/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
于 2009-03-18T17:10:25.703 回答
16

我的理解如下。
我同意这些数字很难理解并且显示出不一致的值。

  • 内存总量

    = MemFree + Active + Inactive + Slab + PageTables + VmallocUsed + X
    (X : alloc_pages() (get_free_pages(), etc))
    

    但是最近内核的 vmallocused 值可能是错误的。这是因为它计算了 VM_xxx 区域,例如 VM_IOREMAP、VM_MAP、...而不是 VM_ALLOC 区域。

    VM_IOREMAP 区域可以是内核内存管理之外的映射内存,所以上面的公式可能不精确,或者完全错误。

    你可以这样做:

    • 检查 /proc/vmallocinfo 将所有条目整理出来并自行过滤,
    • 修改 fs/proc/mmu.c: get_vmalloc_info() 以仅在 if(vma->flags & VM_ALLOC) 时计算区域
  • 活跃+不活跃

     = Buffers + Cached + SwapCached + AnonPages
    
  • 匿名页面

     = /proc/*/task/*/smaps anonymous area all sum
     (anonymous: no name|[heap]|/dev/zero|/dev/shm/*|[stack])
    

    虽然我无法匹配这些数字。如果您有任何线索,请参见此处并帮助我。

  • 总页面缓存

     = Buffers + Cached + SwapCached
    
  • 板坯

     = SReclaimable + SUnreclaim
    
于 2011-07-31T00:08:12.473 回答
0

来自红帽

VMallocTotal — 总分配的虚拟地址空间的内存总量,以千字节为单位。VMallocUsed — 已用虚拟地址空间的内存总量,以千字节为单位。VMallocChunk — 可用虚拟地址空间的最大连续内存块,以千字节为单位。

于 2009-03-18T14:25:30.343 回答