Записи в /proc/meminfo

Я могу разобраться в большей части информации, содержащейся в /proc/meminfo, такой как общий объем памяти, буферы, кеш и т. д. Не могли бы вы сказать мне, что означают менее очевидные сведения, такие как перечисленные ниже?

  • AnonPages
  • Сопоставлено
  • плита
  • NFS_Unstable
  • Подпрыгивать
  • VmallocTotal
  • VmallocUsed
  • Вмаллокчанк

Если кому интересно, я говорю о выводе команды linux cat /proc/meminfo


person AIB    schedule 18.03.2009    source источник


Ответы (3)


Каноническим источником этой информации является /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
person ephemient    schedule 18.03.2009
comment
альтернативная ссылка, пока kernel.org не работает: github.com/torvalds /linux/blob/master/Документация/файловые системы/ - person ; 27.09.2011
comment
Кажется, это тоже не работает, поэтому вот еще одно зеркало: kernel.org/doc/ Документация/файловые системы/proc.txt - person hfingler; 03.04.2020

Мое понимание таково.
И я согласен, что эти цифры трудно понять, и они показывают противоречивые значения.

  • ПамятьВсего

    = 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 может отображать память, которая может находиться за пределами управления памятью ядра, поэтому приведенная выше формула может быть неточной или совершенно неправильной.

    Вы можете сделать:

    • Check /proc/vmallocinfo to sort out all the entries and filter by yourself,
    • Измените 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
    
person holmes    schedule 31.07.2011

Из RedHat

VMallocTotal — общий объем памяти в килобайтах общего выделенного виртуального адресного пространства. VMallocUsed — общий объем памяти в килобайтах используемого виртуального адресного пространства. VMallocChunk — самый большой непрерывный блок памяти в килобайтах доступного виртуального адресного пространства.

person Node    schedule 18.03.2009
comment
Поля VMallocUsed и VmallocChunk были обнулены, начиная с версии 4.4; см. фиксацию, чтобы понять, почему: github.com/torvalds/linux/commit/ - person kaiwan; 12.03.2019