Inspecter les journaux slab dans dmesg
Dans cette étape finale, vous apprendrez à vérifier le tampon de messages du noyau (kernel) pour les messages liés à l'allocateur slab à l'aide de la commande dmesg
. Le tampon de messages du noyau stocke les messages produits par le noyau lors du démarrage et de l'exécution. Ces messages peuvent inclure des informations sur le matériel, les pilotes de périphériques et les sous-systèmes du noyau comme l'allocateur slab.
La commande dmesg
est utilisée pour afficher ou contrôler le tampon circulaire du noyau. Ce tampon contient les messages du noyau, qui sont souvent utiles pour le débogage et la résolution de problèmes.
Pour afficher l'ensemble du tampon de messages du noyau, vous pouvez simplement exécuter dmesg
:
dmesg
Cependant, la sortie peut être très longue. Pour trouver les messages spécifiquement liés à l'allocateur slab, vous pouvez rediriger la sortie de dmesg
vers la commande grep
et rechercher des mots-clés comme "slab" ou "SLUB" (SLUB est une implémentation moderne de l'allocateur slab).
Tapez la commande suivante dans votre terminal et appuyez sur Entrée :
dmesg | grep -i "slab\|slub"
Décortiquons cette commande :
dmesg
: Affiche le tampon de messages du noyau.
|
: C'est un tuyau (pipe) qui envoie la sortie de la commande de gauche en tant qu'entrée à la commande de droite.
grep
: Un utilitaire en ligne de commande pour rechercher dans des ensembles de données texte brut les lignes qui correspondent à une expression régulière.
-i
: Cette option rend la recherche insensible à la casse, donc elle correspondra à "slab", "SLAB", "slub", "SLUB", etc.
"slab\|slub"
: C'est le modèle de recherche. slab
recherche le mot "slab", \|
agit comme un opérateur OU, et slub
recherche le mot "slub".
La sortie affichera toutes les lignes du tampon de messages du noyau qui contiennent "slab" ou "slub" (insensible à la casse). Vous pourriez voir des messages liés à l'initialisation de l'allocateur slab lors du démarrage, ou des avertissements ou des erreurs potentielles s'il y a des problèmes.
[ 0.000000] kmem_cache_init
[ 0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=1, Nodes=1
[ 0.000000] SLUB: TotalObjects=0, ObjectsPerSpan=0, SpansPerChunk=0
[ 0.000000] SLUB: min_objects.limit=0, min_objects.batchcount=0
[ 0.000000] SLUB: tunables.limit=0, tunables.batchcount=0, tunables.sharedfactor=0
[ 0.000000] SLUB: Not setting slab_nomerge.
[ 0.000000] SLUB: Not setting slab_debug.
[ 0.000000] SLUB: Not setting slab_max_order.
[ 0.000000] SLUB: Not setting slab_alias_debug.
[ 0.000000] SLUB: Not setting slab_pad.
[ 0.000000] SLUB: Not setting slab_red_zone.
[ 0.000000] SLUB: Not setting slab_poison.
[ 0.000000] SLUB: Not setting slab_freelist_debug.
[ 0.000000] SLUB: Not setting slab_freelist_random.
[ 0.000000] SLUB: Not setting slab_freelist_hardened.
[ 0.000000] SLUB: Not setting slab_trace.
[ 0.000000] SLUB: Not setting slab_reclaim_account.
[ 0.000000] SLUB: Not setting slab_way.
[ 0.000000] SLUB: Not setting slab_sizes.
[ 0.000000] SLUB: Not setting slab_caches.
[ 0.000000] SLUB: Not setting slab_test.
[ 0.000000] SLUB: Not setting slab_order.
[ 0.000000] SLUB: Not setting slab_debug_objects.
[ 0.000000] SLUB: Not setting slab_debug_memcg.
[ 0.000000] SLUB: Not setting slab_debug_check_objects.
[ 0.000000] SLUB: Not setting slab_debug_check_freelist.
[ 0.000000] SLUB: Not setting slab_debug_check_alloc.
[ 0.000000] SLUB: Not setting slab_debug_check_free.
[ 0.000000] SLUB: Not setting slab_debug_check_redzone.
[ 0.000000] SLUB: Not setting slab_debug_check_poison.
[ 0.000000] SLUB: Not setting slab_debug_check_trace.
[ 0.000000] SLUB: Not setting slab_debug_check_reclaim_account.
[ 0.000000] SLUB: Not setting slab_debug_check_way.
[ 0.000000] SLUB: Not setting slab_debug_check_sizes.
[ 0.000000] SLUB: Not setting slab_debug_check_caches.
[ 0.000000] SLUB: Not setting slab_debug_check_test.
[ 0.000000] SLUB: Not setting slab_debug_check_order.
[ 0.000000] SLUB: Not setting slab_debug_check_debug_objects.
[ 0.000000] SLUB: Not setting slab_debug_check_debug_memcg.
[ 0.000000] SLUB: Not setting slab_debug_check_debug_check_objects.
[ 0.000000] SLUB: Not setting slab_debug_check_debug_check_freelist.
[ 0.000000] SLUB: Not setting slab_debug_check_debug_check_alloc.
[ 0.000000] SLUB: Not setting slab_debug_check_debug_check_free.
[ 0.000000] SLUB: Not setting slab_debug_check_debug_check_redzone.
[ 0.000000] SLUB: Not setting slab_debug_check_debug_check_poison.
[ 0.000000] SLUB: Not setting slab_debug_check_debug_check_trace.
[ 0.000000] SLUB: Not setting slab_debug_check_debug_check_reclaim_account.
[ 0.000000] SLUB: Not setting slab_debug_check_debug_check_way.
[ 0.000000] SLUB: Not setting slab_debug_check_debug_check_sizes.
[ 0.000000] SLUB: Not setting slab_debug_check_debug_check_caches.
[ 0.000000] SLUB: Not setting slab_debug_check_debug_check_test.
[ 0.000000] SLUB: Not setting slab_debug_check_debug_check_order.
[ 0.000000] SLUB: Not setting slab_debug_check_debug_check_debug_objects.
[ 0.000000] SLUB: Not setting slab_debug_check_debug_check_debug_memcg.
Cette commande est un moyen puissant de filtrer les messages du noyau et de trouver des informations pertinentes pour résoudre les problèmes de sous-systèmes spécifiques du noyau.
Vous avez maintenant appris à inspecter les statistiques slab, à vérifier les paramètres du noyau associés et à vérifier les journaux du noyau pour les messages liés au slab. Ce sont des compétences fondamentales pour comprendre et diagnostiquer l'utilisation de la mémoire sous Linux.
Cliquez sur Continuer pour terminer ce laboratoire.