2009-03-18 24 views
20

Puedo dar sentido a la mayor parte de la información contenida en /proc/meminfo como memoria total, búferes, caché etc. ¿Podría decirme qué hacen los menos obvios como los enumerados a continuación? ¿media?Entradas en/proc/meminfo

  • AnonPages
  • asignadas
  • Losa
  • NFS_Unstable
  • rebote
  • VMallocTotal
  • VMallocUsed
  • VMallocChunk

Si alguien se lo pregunta, yo estoy hablando de la salida del comando linux cat/proc/meminfo

Respuesta

30

La fuente canónica de esta información es /usr/src/linux/Documentation/filesystems/proc.txt. En concreto,

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

enlace alternativo mientras kernel.org es abajo: https://github.com/torvalds/linux/blob/master/ Documentation/filesystems/proc.txt – fennec

0

De RedHat

VMallocTotal - La cantidad total de memoria, en kilobytes, del total espacio de direcciones virtuales asignado. VMallocUsed - La cantidad total de memoria , en kilobytes, del espacio de direcciones virtual usado . VMallocChunk: el bloque de memoria contiguo más grande , en kilobytes, de espacio de direcciones virtual disponible.

13

Mi opinión es la siguiente.
Y acepto que estos números son difíciles de entender y muestran valores inconsistentes.

  • MemTotal

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

    Pero el valor VMallocUsed reciente del núcleo podría estar equivocado. Esto se debe a que cuenta las regiones VM_xxx como VM_IOREMAP, VM_MAP, ... además del área VM_ALLOC.

    La región VM_IOREMAP puede ser memoria de mapeo que puede estar fuera de la administración de memoria del kernel, por lo que la fórmula anterior puede no ser precisa o completamente incorrecta.

    Puede hacerlo:

    • Compruebe/proc/vmallocinfo para resolver todas las entradas y filtro por sí mismo,
    • Modificar fs/proc/MMU.c: get_vmalloc_info() para contar las regiones sólo cuando if (vma-> banderas & VM_ALLOC)
  • Active + inactivos

    = Buffers + Cached + SwapCached + AnonPages 
    
  • AnonPages

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

    Aunque no he Pude hacer coincidir estos números. Vea here y ayúdeme si tiene alguna pista.

  • total pagecache

    = Buffers + Cached + SwapCached 
    
  • Losa

    = SReclaimable + SUnreclaim