Записи в / proc / meminfo - PullRequest
       29

Записи в / proc / meminfo

20 голосов
/ 18 марта 2009

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

  • AnonPages
  • Подключенный
  • Slab
  • NFS_Unstable
  • Отказы
  • VmallocTotal
  • VmallocUsed
  • VmallocChunk

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

Ответы [ 3 ]

33 голосов
/ 18 марта 2009

Каноническим источником этой информации является / 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
14 голосов
/ 31 июля 2011

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

  • MemTotal

    = 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
    
  • AnonPages

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

    Хотя я не смог сопоставить эти цифры. Смотрите здесь и помогите мне, если у вас есть какие-либо подсказки.

  • Всего PageCache

     = Buffers + Cached + SwapCached
    
  • Slab

     = SReclaimable + SUnreclaim
    
0 голосов
/ 18 марта 2009

С RedHat

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

...