Commandes pour gérer la mémoire Linux

Commandes pour gérer la mémoire Linux
Les systèmes Unix / Linux contiennent un outil de ligne de commande pour presque tout. Cela comprend également des programmes pour gérer la mémoire. Dans cet article, nous vous montrons une sélection de commandes qui vous sont très utiles en tant qu'utilisateur Linux.

Détecter le matériel à l'aide de DMIDECODE

La détection automatique du matériel a toujours été un peu comme une loterie, mais elle s'est améliorée au cours des dernières années, car de nombreux fabricants documentent leurs produits plus en détail et ont également des informations spécifiques disponibles en ligne. Pour découvrir les informations matérielles concernant le RAM installé dans votre machine, utilisez le dmidecode Commande (Package pour Debian GNU / Linux, Ubuntu et Linux Mint: DMIDECODE).

Parmi d'autres informations, cet outil rapporte des données détaillées sur les composants système installés comme le processeur, la plinthe et la RAM. Les informations sont basées sur l'interface de gestion de bureau (DMI) [1], qui est un framework qui classe les composants uniques sur un bureau, un ordinateur portable ou un serveur en abstraction de ces composants du logiciel qui les gère [2]. L'option --Tapez la mémoire se réfère aux dispositifs de mémoire. Pour les autres cours DMI, jetez un œil à la page manuelle de dmidecode.

# DMIDECODE - Mémoire de type
# dmidecode 2.12
SMBIOS 2.7 Présent.
Gandage 0x0007, DMI Type 16, 23 octets
Tableau de mémoire physique
Emplacement: carte système ou carte mère
Utilisation: mémoire système
Type de correction d'erreur: aucun
Capacité maximale: 16 Go
Poignée d'informations d'erreur: Non fourni
Nombre d'appareils: 1
Manche 0x0008, DMI Type 17, 34 octets
Dispositif de mémoire
Poignée du tableau: 0x0007
Poignée d'informations d'erreur: Non fourni
Largeur totale: 64 bits
Largeur des données: 64 bits
Taille: 8192 Mb
Facteur de forme: sodimm
Set: Aucun
Locator: ChannelA-DIMM0
Locatrice de banque: banque 0
Type: DDR3
Détail de type: synchrone
Vitesse: 1600 MHz
Fabricant: Samsung
Numéro de série: 25252105
Étiquette d'actif: aucun
Numéro de pièce: M471B1G73DB0-YK0
Rang: inconnu
Vitesse de l'horloge configurée: 1600 MHz

Cette machine est actuellement équipée de RAM DDR3 8G avec une vitesse d'horloge configurée de 1600 MHz. Comme vous pouvez le voir, la capacité maximale disponible de la RAM embarquée est 16g, ce qui signifie qu'elle peut être étendue par un deuxième module 8G.

Informations graphiques sur la mémoire

Dans le cas où vous préférez une interface graphique pour récupérer ces informations, les outils hardinfo [3] et le matériel Lister (version GTK +) [4] pourraient vous intéresser. Sur Debian GNU / Linux, Ubuntu et Linux Mint, ces programmes sont disponibles via les packages HardInfo et LSHW-GTK. La figure 2 montre l'interface utilisateur de HardInfo affichant les informations de mémoire sur une installation Xubuntu.

Combien de mémoire est actuellement disponible

Parfois, moins c'est plus. Sur la ligne de commandement, les informations concernant la mémoire sont disponibles via le gratuit commande. Sur Debian GNU / Linux, Ubuntu et Linux Mint, ce programme fait partie du package ProCPS [5]. La figure 2 montre la sortie dans une fenêtre de terminal.

Comme sélection des autres options, gratuit accepte divers paramètres tels que:

  • -B (- parytes): montrer la sortie en octets
  • -K (--kilo): Montrez la sortie sous forme de kilobytes
  • -m (- méga): montrer la sortie comme des mégaoctets
  • -g (--giga): montrer la sortie comme des gigaoctets
  • --Tera: montrer la sortie comme des téraoctets
  • -H (- humain): montrer la sortie au format lisible par l'homme

Dans la figure 3, la sortie est représentée dans les mégaoctets en utilisant l'option -m. Le système a 4 g de RAM alors que 725m sont actuellement utilisés.

Informations mémoire du point de vue du noyau Linux

Les outils mentionnés ci-dessus reposent sur les informations brutes qui sont conservées dans le système de fichiers Proc du noyau Linux. Pour afficher ces détails sur la sortie du contenu du fichier / proc / meminfo en utilisant le chat Utilité dans un terminal:

$ cat / proc / meminfo
Memtotal: 7888704 kb
Memfree: 302852 Ko
Memavailable: 448824 Ko
Tampons: 17828 kb
Caché: 326104 Ko
Échange: 69592 Ko
Actif: 2497184 kb
Inactif: 650912 Ko
Actif (anon): 2338748 kb
Inactif (anon): 525316 kb
Actif (fichier): 158436 kb
Inactif (fichier): 125596 Ko
INCESSABLE: 64 Ko
Mlocké: 64 Ko
Swaptotal: 16150524 Ko
Swapfree: 15668480 kb
Sale: 3008 Ko
Writeback: 0 kb
Anonpages: 2774656 kb
Cartographié: 4414752 kb
Shmem: 59900 kb
Dalle: 130216 kb
Sreclaimable: 61748 kb
Sunreclaim: 68468 KB
KernelStack: 7328 Ko
Pagetables: 42844 Ko
Nfs_unstable: 0 kb
Bounce: 0 kb
Writebacktmp: 0 kb
Commitlimit: 20094876 kb
COMMANDE_AS: 10344988 KB
Vmalloctotal: 34359738367 KB
Vmallocuse: 367296 Ko
Vmallocchunk: 34359345768 KB
Hardwarecorrupted: 0 kb
Anonhugepages: 0 kb
ÉNORTISSEMENTS_TOTAL: 0
ÉNORTISSEMENTS_FREE: 0
ÉNORTISSEMENTS_RSVD: 0
ÉNORTISSEMENTS_SURP: 0
Téro-appareils: 2048 Ko
DIRECTMAP4K: 78448 Ko
DIRECTMAP2M: 2756608 Ko
DirectMap1g: 5242880 Ko
$

Pour plus d'informations statistiques concernant l'utilisation, la mémoire et les processus du processeur, vous pouvez consulter les outils vmstat, et iostat (Debian Packages Procps et Sysstat).

Travailler avec les processus - PS, HTOP et PSTREE

Pour montrer les processus actifs de votre système Linux, utilisez le ps commande. Habituellement, la sortie est triée par ordre alphabétique. Mais le ps La commande peut faire beaucoup plus. Utilisation des options Aux --tri -rss La sortie de la liste de processus est triée par leur utilisation de la mémoire dans un ordre descendant. La figure 4 montre les processus qui ont la plus forte demande de mémoire. La sortie est triée par la 6ème colonne intitulée RSS qui abréviate la taille de l'ensemble résident. La valeur est donnée en kilo-great.

Les commandes PS, PSTREE et htop sont étroitement liés en termes d'informations que ces outils affichent. Les deux ptree et htop Afficher un graphique pour visualiser les dépendances du processus. htop agit comme une version interactive qui vous permet de faire défiler la liste de processus de haut en bas. La figure 5 montre htop sur un système de bureau avec une sélection de processus triés par leur utilisation spécifique de la mémoire (5e colonne).

Trouver des processus qui utilisent la mémoire d'échange

Plus les processus sont lancés, plus la mémoire est utilisée en même temps. Dès que votre système Linux manque de pages de mémoire inutilisée, le noyau Linux décide d'échanger des pages de mémoire sur le disque en utilisant la méthode la moins récemment utilisée (LRU). Pour répondre à la question, quels processus utilisent la mémoire d'échange et la quantité utilisée en particulier, vous pouvez jeter un œil à la sortie du programme supérieur. En 2016, Erik Ljungstrom a publié une brève description de la façon de récupérer ces informations et d'étendre cette colonne à la sortie du haut [6]. La figure 6 montre cette sortie sur un système qui a de nombreuses pages de mémoire dans RAM à gauche et n'utilise pas d'échange, actuellement.

En outre, en 2011, il a déjà publié un script bash qui évalue les informations du système de fichiers Proc pour afficher l'utilisation du processus Swap par processus [7]. Même 7 ans plus tard et déjà décrit comme obsolète, le script est toujours excellent et montre comment automatiser les tâches sur un système Linux. C'est pourquoi nous sommes certains qu'il est utile de le montrer ici une fois de plus.

La sortie du script est la suivante (exécuter comme racine utilisateur le récupérer les données complètes):

# ./échanger.shot
Pid = 1 - Swap utilisé: 0 - (systemd)
Pid = 2 - échange utilisé: 0 - (kthreadd)
Pid = 3 - Swap utilisé: 0 - (ksoftirqd / 0)
Pid = 5 - Swap utilisé: 0 - (kworker / 0: 0h)
Pid = 6 - Swap utilisé: 0 - (kworker / u16: 0)
Pid = 7 - Swap utilisé: 0 - (rcu_sched)
Pid = 8 - Swap utilisé: 0 - (rcu_bh)
Pid = 9 - Swap utilisé: 0 - (migration / 0)
Pid = 10 - Swap utilisé: 0 - (chien de garde / 0)
Pid = 11 - Swap utilisé: 0 - (chien de garde / 1)
Pid = 12 - Swap utilisé: 0 - (migration / 1)
Pid = 13 - Swap utilisé: 0 - (ksoftirqd / 1)
Pid = 15 - Swap utilisé: 0 - (KWORKER / 1: 0H)
Pid = 16 - échange utilisé: 0 - (chien de garde / 2)
Pid = 17 - Swap utilisé: 0 - (migration / 2)
Pid = 18 - Swap utilisé: 0 - (ksoftirqd / 2)
Pid = 20 - Swap utilisé: 0 - (KWORKER / 2: 0H)

#

Conclusion

La boîte à outils Linux contient une liste sans fin de programmes disponibles pour vous aider à analyser l'utilisation de la mémoire de votre système Linux. Nous avons juste un bref regard - des données brutes aux informations prétraitées - tout est là. Connaissez simplement vos outils. Pour les familiariser, prenez un peu de temps et jouez avec eux.

Ceci est la partie 2 de la série sur la gestion de la mémoire du noyau Linux. La partie 1 traite de la mémoire d'échange, dans la troisième partie de cette série, nous discuterons de la façon d'optimiser l'utilisation de la mémoire. Cela comprendra la gestion des ramelles ainsi que des fichiers d'échange compressés.

Liens et références

  • [1] DMI au Force de travail de gestion distribuée (DMTF)
  • [2] DMI à Wikipedia
  • [3] Hardinfo
  • [4] LSHW-GTK (package Debian pour Stretch)
  • [5] Procps (package Debian pour Stretch)
  • [6] Erik Ljungstrom: découvrez ce qui utilise votre swap
  • [7] Erik Ljungstrom: Utilisation du swap - 5 ans plus tard

Série de gestion de la mémoire Linux

  • Partie 1: Gestion de la mémoire du noyau Linux: Swap Space
  • Partie 2: Commandes pour gérer la mémoire Linux
  • Partie 3: Optimisation de l'utilisation de la mémoire Linux

Remerciements

L'auteur tient à remercier Mandy Neumeyer et Gerold Rupprecht pour leur soutien tout en préparant cet article.