2009-03-18 7 views
20

Je peux donner un sens à la plupart des informations contenues dans /proc/meminfo comme la mémoire totale, les tampons, le cache, etc. Pourriez-vous me dire quels sont les moins évidents comme ceux listés ci-dessous signifier?Entrées dans/proc/meminfo

  • AnonPages
  • cartographiées
  • Slab
  • NFS_Unstable
  • Bounce
  • VmallocTotal
  • VmallocUsed
  • VmallocChunk

Si quelqu'un se demande, je parle de la sortie de la commande linux cat/proc/meminfo

Répondre

30

La source canonique de cette information est /usr/src/linux/Documentation/filesystems/proc.txt. Plus précisément,

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

lien alternatif en kernel.org est en baisse: https://github.com/torvalds/linux/blob/master/ Documentation/systèmes de fichiers/proc.txt – fennec

0

De RedHat

VMallocTotal - Le montant total de mémoire, en kilo-octets, du total espace d'adressage virtuel alloué. VMallocUsed - La quantité totale de mémoire , en kilo-octets, de l'espace adresse virtuel utilisé . VMallocChunk - Le plus grand bloc de mémoire contigu , en kilo-octets, de l'espace adresse virtuel disponible.

13

Ma compréhension est la suivante.
Et je suis d'accord que ces chiffres sont difficiles à comprendre et montrent des valeurs incohérentes.

  • MemTotal

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

    Mais la valeur vmallocused du noyau récent pourrait se tromper. En effet, il compte les régions VM_xxx comme VM_IOREMAP, VM_MAP, ... autres que la zone VM_ALLOC.

    La région VM_IOREMAP peut être une carte de mappage qui peut être en dehors de la gestion de la mémoire du noyau, de sorte que la formule ci-dessus peut ne pas être précise ou complètement erronée.

    Vous pouvez faire:

    • Vérifier/proc/vmallocinfo pour trier toutes les entrées et le filtre par vous-même,
    • Modifier fs/proc/MMU.c: get_vmalloc_info() pour compter les régions que lorsque si (vma-> drapeaux & VM_ALLOC)
  • Active + inactifs

    = Buffers + Cached + SwapCached + AnonPages 
    
  • AnonPages

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

    Bien que havre de paix I » t été en mesure de faire correspondre ces chiffres. Voir here et aidez-moi si vous avez la moindre idée.

  • total pagecache

    = Buffers + Cached + SwapCached 
    
  • Slab

    = SReclaimable + SUnreclaim 
    
Questions connexes