Comment vérifier si la sur-allocation du noyau est activée sous Linux

LinuxLinuxBeginner
Pratiquer maintenant

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Dans ce laboratoire, vous apprendrez à vérifier le paramètre de sur-commitment (sur-allocation) de la mémoire virtuelle sous Linux. Vous utiliserez la commande sysctl pour afficher le paramètre du noyau vm.overcommit_memory et comprendre ses différentes valeurs.

Vous explorerez également le système de fichiers /proc, plus précisément le répertoire /proc/sys/vm, pour voir comment les paramètres du noyau sont exposés sous forme de fichiers. Enfin, vous inspecterez le fichier /etc/sysctl.conf pour voir comment ces paramètres peuvent être configurés de manière permanente. Ce laboratoire vous offrira une compréhension pratique de la vérification et de la compréhension des paramètres de sur-commitment du noyau dans un environnement Linux.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/BasicSystemCommandsGroup(["Basic System Commands"]) linux(("Linux")) -.-> linux/BasicFileOperationsGroup(["Basic File Operations"]) linux(("Linux")) -.-> linux/UserandGroupManagementGroup(["User and Group Management"]) linux/BasicSystemCommandsGroup -.-> linux/echo("Text Display") linux/BasicFileOperationsGroup -.-> linux/ls("Content Listing") linux/BasicFileOperationsGroup -.-> linux/cat("File Concatenating") linux/UserandGroupManagementGroup -.-> linux/env("Environment Managing") subgraph Lab Skills linux/echo -.-> lab-558796{{"Comment vérifier si la sur-allocation du noyau est activée sous Linux"}} linux/ls -.-> lab-558796{{"Comment vérifier si la sur-allocation du noyau est activée sous Linux"}} linux/cat -.-> lab-558796{{"Comment vérifier si la sur-allocation du noyau est activée sous Linux"}} linux/env -.-> lab-558796{{"Comment vérifier si la sur-allocation du noyau est activée sous Linux"}} end

Vérifier le sur-commitment (sur-allocation) avec sysctl vm.overcommit

Dans cette étape, vous apprendrez à vérifier le paramètre de sur-commitment (sur-allocation) de la mémoire virtuelle sous Linux en utilisant la commande sysctl.

Le sur-commitment (sur-allocation) de la mémoire virtuelle est une fonctionnalité de Linux qui permet au système d'allouer plus de mémoire aux processus que ce qui est physiquement disponible. Cela peut être bénéfique dans certains cas, mais cela peut également entraîner des problèmes si les processus essaient réellement d'utiliser toute la mémoire qui leur a été allouée.

La commande sysctl est utilisée pour afficher et modifier les paramètres du noyau à l'exécution. Nous l'utiliserons pour vérifier la valeur du paramètre vm.overcommit_memory.

Ouvrez le terminal si vous ne l'avez pas déjà fait. Vous pouvez le faire en cliquant sur l'icône Xfce Terminal sur le côté gauche du bureau.

Maintenant, tapez la commande suivante dans le terminal et appuyez sur Entrée :

sysctl vm.overcommit_memory

Cette commande demande au noyau d'afficher la valeur actuelle du paramètre vm.overcommit_memory.

Vous devriez voir une sortie similaire à celle-ci :

vm.overcommit_memory = 0

La valeur 0 indique le mode de gestion par défaut du sur-commitment (sur-allocation) basé sur une heuristique. Les autres valeurs possibles sont 1 (toujours sur-commit) et 2 (jamais sur-commit). Comprendre ce paramètre est important pour les performances et la stabilité du système, en particulier dans les environnements avec de fortes demandes en mémoire.

Cliquez sur Continuer pour passer à l'étape suivante.

Vérifier les paramètres dans /proc/sys/vm

Dans cette étape, vous allez explorer le système de fichiers /proc, plus précisément le répertoire /proc/sys/vm, pour voir comment les paramètres du noyau liés à la mémoire virtuelle sont exposés.

Le système de fichiers /proc est un système de fichiers virtuel qui fournit des informations sur les processus et d'autres informations système. C'est un excellent endroit pour inspecter l'état actuel du noyau. Le répertoire /proc/sys à l'intérieur de /proc contient des fichiers qui correspondent à des paramètres du noyau qui peuvent être consultés et parfois modifiés à l'exécution.

Le répertoire /proc/sys/vm contient des fichiers liés au sous-système de mémoire virtuelle. Le paramètre vm.overcommit_memory que nous avons vérifié à l'étape précédente a un fichier correspondant dans ce répertoire.

Utilisons la commande cat pour afficher le contenu du fichier qui représente vm.overcommit_memory. La commande cat est utilisée pour afficher le contenu des fichiers.

Tapez la commande suivante dans votre terminal et appuyez sur Entrée :

cat /proc/sys/vm/overcommit_memory

Cette commande lira le contenu du fichier overcommit_memory situé dans /proc/sys/vm et l'affichera dans votre terminal.

Vous devriez voir la même valeur que celle que vous avez vue avec la commande sysctl à l'étape précédente :

0

Cela démontre que sysctl lit essentiellement dans ou écrit dans ces fichiers du système de fichiers /proc/sys.

Vous pouvez également lister les fichiers dans le répertoire /proc/sys/vm pour voir d'autres paramètres liés à la mémoire virtuelle. Utilisez la commande ls :

ls /proc/sys/vm/

Vous verrez une liste de fichiers, chacun représentant un paramètre différent du noyau lié à la mémoire virtuelle.

compact_hueristic
compact_memory
dirty_background_bytes
dirty_background_ratio
dirty_bytes
dirty_expire_centisecs
dirty_ratio
dirty_writeback_centisecs
drop_caches
extfrag_threshold
hugetlb_shm_group
laptop_mode
lowmem_reserve_ratio
min_free_bytes
min_slab_ratio
min_unmapped_ratio
mmap_min_addr
nr_hugepages
nr_hugepages_mempolicy
nr_overcommit_hugepages
numa_balancing
numa_balancing_scan_period_max_ms
numa_balancing_scan_period_min_ms
numa_balancing_scan_size_mb
numa_balancing_settle_count
numa_balancing_timeout
oom_dump_tasks
oom_kill_allocating_task
overcommit_memory
overcommit_ratio
page-cluster
panic_on_oom
percpu_pagelist_fraction
stat_interval
swappiness
user_reserve_kbytes
vfs_cache_pressure
watermark_boost_factor
watermark_scale_factor
zone_reclaim_mode

Cela vous donne un aperçu des nombreux paramètres ajustables disponibles dans le sous-système de mémoire virtuelle du noyau Linux.

Cliquez sur Continuer pour passer à l'étape suivante.

Inspecter la configuration avec cat /etc/sysctl.conf

Dans cette étape, vous allez apprendre à propos du fichier /etc/sysctl.conf, qui est utilisé pour configurer de manière permanente les paramètres du noyau entre les redémarrages.

Bien que vous puissiez modifier les paramètres du noyau à l'exécution en utilisant la commande sysctl ou en écrivant dans les fichiers de /proc/sys, ces modifications sont généralement temporaires et seront perdues lorsque le système redémarre. Pour rendre les modifications des paramètres du noyau permanentes, vous les ajoutez généralement au fichier /etc/sysctl.conf ou à des fichiers dans le répertoire /etc/sysctl.d/.

Lorsque le système démarre, il lit les paramètres de /etc/sysctl.conf et les applique.

Utilisons de nouveau la commande cat pour afficher le contenu du fichier /etc/sysctl.conf.

Tapez la commande suivante dans votre terminal et appuyez sur Entrée :

cat /etc/sysctl.conf

Cela affichera le contenu du fichier de configuration principal de sysctl.

Vous pourriez voir des lignes commençant par #, qui sont des commentaires et sont ignorées. Les autres lignes seront au format paramètre = valeur, similaire à ce que vous avez vu avec la sortie de la commande sysctl.

#
## /etc/sysctl.conf - Fichier de configuration pour définir les variables système
## Voir les fichiers .conf dans /etc/sysctl.d/ pour d'autres variables système
#

#kernel.domainname = example.com

## Décommentez la ligne suivante pour éviter les messages de bas niveau sur la console
#kernel.printk = 3 4 1 3

##############################################################3
## Fonctions précédemment trouvées dans netbase
#

## Décommentez les deux lignes suivantes pour activer la protection contre les attaques de spoofing
#net.ipv4.conf.default.rp_filter=1
#net.ipv4.conf.all.rp_filter=1

## Décommentez la ligne suivante pour activer les cookies TCP/IP SYN
#net.ipv4.tcp_syncookies=1

## Décommentez la ligne suivante pour activer le transfert de paquets pour IPv4
#net.ipv4.ip_forward=1

## Décommentez la ligne suivante pour activer le transfert de paquets pour IPv6
#net.ipv6.conf.all.forwarding=1

##############################################################3
## Éliminer le compte "nobody" dans le noyau
#

#kernel.yama.ptrace_scope = 1

##############################################################3
## Touche de requête magique du système
#

#kernel.sysrq = 176

##############################################################3
## Mémoire partagée dynamique :
#

#kernel.shmmax = 4294967295
#kernel.shmall = 268435456

##############################################################3
## Autres paramètres
#

#fs.file-max = 100000

#vm.swappiness = 60
#vm.vfs_cache_pressure = 50

#kernel.nmi_watchdog = 0

Notez que le paramètre vm.overcommit_memory peut ne pas être explicitement défini dans ce fichier. Si un paramètre n'est pas défini dans /etc/sysctl.conf ou /etc/sysctl.d/, le noyau utilise sa valeur par défaut. La valeur que vous avez vue avec la commande sysctl et dans /proc/sys/vm/overcommit_memory est la valeur actuellement active, qui peut être la valeur par défaut ou définie par un autre fichier de configuration ou un script lors du démarrage.

Comprendre le fichier /etc/sysctl.conf est crucial pour l'ajustement permanent du système.

Cliquez sur Continuer pour terminer ce laboratoire.

Résumé

Dans ce laboratoire, vous avez appris à vérifier le paramètre de sur-allocation de mémoire virtuelle sous Linux. Vous avez utilisé la commande sysctl vm.overcommit_memory pour afficher la valeur actuelle de ce paramètre du noyau, en comprenant qu'une valeur de 0 indique le traitement heuristique par défaut, 1 signifie toujours sur-allouer, et 2 signifie ne jamais sur-allouer.

Vous avez également exploré le système de fichiers /proc, plus précisément le répertoire /proc/sys/vm, pour voir comment les paramètres du noyau tels que vm.overcommit_memory sont exposés sous forme de fichiers dans ce système de fichiers virtuel, offrant ainsi une autre manière d'inspecter l'état actuel du noyau en ce qui concerne les paramètres de mémoire virtuelle.