GNU/Linux >> Tutoriels Linux >  >> Linux

Comprendre le fichier /proc/meminfo (Analyse de l'utilisation de la mémoire sous Linux)

– Le /proc Le système de fichiers est un pseudo système de fichiers. Il n'existe pas sur un disque. Au lieu de cela, le noyau le crée en mémoire. Il est utilisé pour fournir des informations sur le système (à l'origine sur les processus, d'où le nom).
– Le « /proc/meminfo ' est utilisé par pour signaler la quantité de mémoire libre et utilisée (à la fois physique et d'échange) sur le système ainsi que la mémoire partagée et les tampons utilisés par le noyau.
– Le système de fichiers /proc est décrit plus en détail dans la page de manuel de la procédure (man proc).

Exemple de "cat /proc/meminfo"

La sortie de la commande "cat /proc/meminfo" serait différente selon le système d'exploitation et l'architecture du serveur. Les champs répertoriés ci-dessous peuvent être légèrement différents ou absents de votre système.

# cat /proc/meminfo 
MemTotal:        1882064 kB
MemFree:         1376380 kB
MemAvailable:    1535676 kB
Buffers:            2088 kB
Cached:           292324 kB
SwapCached:            0 kB
Active:           152944 kB
Inactive:         252628 kB
Active(anon):     111328 kB
Inactive(anon):    16508 kB
Active(file):      41616 kB
Inactive(file):   236120 kB
Unevictable:           0 kB
Mlocked:               0 kB
SwapTotal:       2097148 kB
SwapFree:        2097148 kB
Dirty:                40 kB
Writeback:             0 kB
AnonPages:        111180 kB
Mapped:            56396 kB
Shmem:             16676 kB
Slab:              54508 kB
SReclaimable:      25456 kB
SUnreclaim:        29052 kB
KernelStack:        2608 kB
PageTables:         5056 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:     3038180 kB
Committed_AS:     577664 kB
VmallocTotal:   34359738367 kB
VmallocUsed:       14664 kB
VmallocChunk:   34359717628 kB
HardwareCorrupted:     0 kB
AnonHugePages:     24576 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB
DirectMap4k:       69632 kB
DirectMap2M:     2027520 kB

Champs

Les informations se présentent sous la forme de statistiques hautes et basses. En haut, vous voyez un résumé des valeurs les plus courantes que les gens aimeraient examiner. Vous trouverez ci-dessous les valeurs individuelles dont nous discuterons. Nous allons d'abord discuter des statistiques élevées.

Statistiques de haut niveau

  • MemTotal  :RAM totale utilisable (c'est-à-dire la RAM physique moins quelques bits réservés et le code binaire du noyau)
  • MemFree :est la somme de LowFree+HighFree (statistique globale)
  • Mempartagé :0 ; est ici pour des raisons de compatibilité mais toujours zéro.
  • Tampons :Mémoire dans le cache tampon. la plupart du temps inutile comme métrique de nos jours Le stockage relativement temporaire pour les blocs de disque bruts ne devrait pas devenir extrêmement volumineux (20 Mo environ)
  • En cache :Mémoire dans le pagecache (diskcache) moins SwapCache, n'inclut pas SwapCached
  • SwapCache :La mémoire qui a déjà été échangée est réintroduite mais est toujours dans le fichier d'échange (si de la mémoire est nécessaire, elle n'a pas besoin d'être à nouveau échangée car elle est déjà dans le fichier d'échange. Cela permet d'économiser des E/S)

Statistiques détaillées

1. Statistiques de la machine virtuelle
VM divise les pages de cache en mémoire "active" et "inactive". L'idée est que si vous avez besoin de mémoire et que du cache doit être sacrifié pour cela, vous le retirez d'inactif car il est prévu qu'il ne soit pas utilisé. La machine virtuelle vérifie régulièrement ce qui est utilisé et déplace les éléments.

Les statistiques sont :

  • Actif  : mémoire qui a été utilisée plus récemment et qui n'est généralement pas récupérée, sauf en cas de nécessité absolue.
  • Inact_dirty :Dirty signifie "peut nécessiter une écriture sur le disque ou un swap". Prend plus de travail à libérer. L'exemple peut être des fichiers qui n'ont pas encore été écrits. Ils ne sont pas écrits en mémoire trop tôt afin de réduire les E/S. Par exemple, si vous écrivez des journaux, il peut être préférable d'attendre d'avoir un journal complet prêt avant de l'envoyer sur le disque.
  • Inact_clean :Supposé être facilement libérable. Le noyau essaiera de garder toujours des éléments propres pour avoir un peu de répit.
  • Inact_target :Juste une métrique d'objectif que le noyau utilise pour s'assurer qu'il y a suffisamment de pages inactives. En cas de dépassement, le noyau ne fonctionnera pas pour déplacer les pages d'actif à inactif. Une page peut également devenir inactive de plusieurs autres manières, par ex. si vous faites une longue E/S séquentielle, le noyau suppose que vous n'allez pas utiliser cette mémoire et la rend inactive de manière préventive. Ainsi, vous pouvez obtenir plus de pages inactives que la cible, car le noyau marque certains caches comme "plus susceptibles de ne jamais être utilisés" et les laisse tricher dans l'ordre des "dernières utilisations".

2. Statistiques de la mémoire

  • Total élevé :est la quantité totale de mémoire dans la région haute. Highmem est toute la mémoire au-dessus (environ) de 860 Mo de RAM physique. Le noyau utilise des astuces indirectes pour accéder à la région de mémoire élevée. Le cache de données peut aller dans cette région de mémoire.
  • Total bas  :La quantité totale de mémoire non haute mémoire.
  • LowFree :La quantité de mémoire libre de la région de mémoire faible. C'est la mémoire que le noyau peut adresser directement. Toutes les structures de données du noyau doivent aller dans une mémoire insuffisante.
  • SwapTotal  :Quantité totale de mémoire d'échange physique.
  • SwapGratuit :Quantité totale de mémoire d'échange libre. Mémoire qui a été expulsée de la RAM et se trouve temporairement sur le disque
  • Sale :Mémoire qui attend d'être réécrite sur le disque
  • Réécriture :Mémoire qui est activement réécrite sur le disque
  • Mappé :fichiers qui ont été mappés, tels que des bibliothèques
  • Dalle  :cache des structures de données dans le noyau
  • Committed_AS :Une estimation de la quantité de RAM dont vous auriez besoin pour garantir à 99,99 % qu'il n'y aura jamais de OOM (mémoire insuffisante) pour cette charge de travail. Normalement, le noyau surchargera la mémoire. Cela signifie que, disons que vous faites un malloc de 1 Go, rien ne se passe, vraiment. Ce n'est que lorsque vous commencez à UTILISER cette mémoire malloc que vous obtiendrez de la mémoire réelle à la demande, et autant que vous en utilisez. Donc, vous prenez en quelque sorte une hypothèque et espérez que la banque ne fera pas faillite. D'autres cas peuvent inclure lorsque vous mmapez un fichier partagé uniquement lorsque vous y écrivez et que vous obtenez une copie privée de ces données. Alors qu'il est normalement partagé entre les processus. Le Committed_AS est une estimation de la quantité de RAM/d'échange dont vous auriez besoin dans le pire des cas.
  • Tableaux de pages :quantité de mémoire dédiée au niveau le plus bas des tables de pages.
  • Cartes inversées :nombre de reverse mappings effectués
  • VmallocTotal :taille totale de la zone mémoire vmalloc
  • VmallocUsed :quantité de zone vmalloc utilisée
  • VmallocChunk :le plus grand bloc contigu de la zone vmalloc qui est libre


Linux
  1. Comprendre le fichier /etc/inittab sous Linux

  2. Comprendre le fichier de configuration /etc/profile sous Linux

  3. Comprendre Linux /proc/id/maps

  4. Récupérer le fichier supprimé en cours d'écriture

  5. Vider la mémoire d'un processus Linux dans un fichier

Comprendre les autorisations de fichiers Linux

/dev/null sous Linux

Fichiers /proc/cpuinfo et /proc/meminfo sous Linux

Comprendre le fichier /etc/fstab sous Linux

Comprendre les fichiers /proc/mounts, /etc/mtab et /proc/partitions

Pourquoi MemTotal dans /proc/meminfo change-t-il ?