Entries in /proc/meminfo

前端 未结 3 1290
礼貌的吻别
礼貌的吻别 2021-01-31 05:03

I can make sense of most of the information contained in /proc/meminfo like total memory, buffers, cache etc. Could you tell me what do the less obvious ones li

相关标签:
3条回答
  • 2021-01-31 05:09

    The canonical source of this information is /usr/src/linux/Documentation/filesystems/proc.txt. Specifically,

       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
    
    0 讨论(0)
  • 2021-01-31 05:11

    My understanding is as follows.
    And I agree these numbers are hard to understand and showing inconsistent values.

    • MemTotal

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

      But recent kernel's vmallocused value could be wrong. This is because it counts VM_xxx regions like VM_IOREMAP, VM_MAP,... other than VM_ALLOC area.

      VM_IOREMAP region can be mapping memory which can be outside of kernel's memory management, so the formula above can be not precise, or completely wrong.

      You can either do:

      • Check /proc/vmallocinfo to sort out all the entries and filter by yourself,
      • Modify fs/proc/mmu.c: get_vmalloc_info() to count regions only when if(vma->flags & VM_ALLOC)
    • Active + Inactive

       = Buffers + Cached + SwapCached + AnonPages
      
    • AnonPages

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

      Although I haven't been able to match these numbers. See here and help me if you have any clue.

    • Total PageCache

       = Buffers + Cached + SwapCached
      
    • Slab

       = SReclaimable + SUnreclaim
      
    0 讨论(0)
  • 2021-01-31 05:20

    From RedHat

    VMallocTotal — The total amount of memory, in kilobytes, of total allocated virtual address space. VMallocUsed — The total amount of memory, in kilobytes, of used virtual address space. VMallocChunk — The largest contiguous block of memory, in kilobytes, of available virtual address space.

    0 讨论(0)
提交回复
热议问题