Comment vérifier si un planificateur de noyau est configuré 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 (lab), vous apprendrez à vérifier la configuration du planificateur de noyau (kernel scheduler) dans Linux. Le planificateur est un composant fondamental qui gère la façon dont les processus partagent le temps CPU. Comprendre ses paramètres est essentiel pour l'analyse des performances et la résolution de problèmes.

À travers des étapes pratiques, vous explorerez trois méthodes pour inspecter les paramètres du planificateur : en utilisant la commande sysctl pour afficher les paramètres du noyau, en examinant le système de fichiers /proc/sys/kernel pour les fichiers liés au planificateur, et en inspectant les journaux du noyau via dmesg pour les messages spécifiques au planificateur. Ces techniques offrent différentes perspectives sur l'état et le comportement actuel du planificateur.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/TextProcessingGroup(["Text Processing"]) linux(("Linux")) -.-> linux/UserandGroupManagementGroup(["User and Group Management"]) linux(("Linux")) -.-> linux/BasicSystemCommandsGroup(["Basic System Commands"]) linux(("Linux")) -.-> linux/BasicFileOperationsGroup(["Basic File Operations"]) linux(("Linux")) -.-> linux/FileandDirectoryManagementGroup(["File and Directory Management"]) linux/BasicSystemCommandsGroup -.-> linux/help("Command Assistance") linux/BasicSystemCommandsGroup -.-> linux/man("Manual Access") linux/BasicFileOperationsGroup -.-> linux/ls("Content Listing") linux/BasicFileOperationsGroup -.-> linux/cat("File Concatenating") linux/FileandDirectoryManagementGroup -.-> linux/cd("Directory Changing") linux/TextProcessingGroup -.-> linux/grep("Pattern Searching") linux/UserandGroupManagementGroup -.-> linux/env("Environment Managing") subgraph Lab Skills linux/help -.-> lab-558724{{"Comment vérifier si un planificateur de noyau est configuré sous Linux"}} linux/man -.-> lab-558724{{"Comment vérifier si un planificateur de noyau est configuré sous Linux"}} linux/ls -.-> lab-558724{{"Comment vérifier si un planificateur de noyau est configuré sous Linux"}} linux/cat -.-> lab-558724{{"Comment vérifier si un planificateur de noyau est configuré sous Linux"}} linux/cd -.-> lab-558724{{"Comment vérifier si un planificateur de noyau est configuré sous Linux"}} linux/grep -.-> lab-558724{{"Comment vérifier si un planificateur de noyau est configuré sous Linux"}} linux/env -.-> lab-558724{{"Comment vérifier si un planificateur de noyau est configuré sous Linux"}} end

Vérifier les paramètres du planificateur avec sysctl kernel.sched

Dans cette étape, nous allons explorer comment vérifier les paramètres du planificateur de noyau (kernel scheduler) en utilisant la commande sysctl. Le planificateur est une partie essentielle du noyau Linux qui décide quel processus peut s'exécuter sur le CPU et pendant combien de temps. Comprendre ses paramètres peut être utile pour l'ajustement des performances et la résolution de problèmes.

La commande sysctl est utilisée pour modifier les paramètres du noyau à l'exécution. Nous pouvons également l'utiliser pour afficher les valeurs actuelles de ces paramètres. Les paramètres du noyau sont organisés en une structure hiérarchique, similaire à un système de fichiers.

Pour afficher les paramètres liés au planificateur de noyau, nous pouvons utiliser sysctl avec le préfixe kernel.sched.

Ouvrez votre terminal s'il n'est pas déjà ouvert. Vous pouvez trouver l'icône Xfce Terminal sur le côté gauche de votre bureau.

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

sysctl kernel.sched

Vous devriez voir une sortie similaire à celle-ci, affichant divers paramètres liés au planificateur et leurs valeurs actuelles :

kernel.sched_child_runs_first = 0
kernel.sched_min_granularity_ns = 8000000
kernel.sched_wakeup_granularity_ns = 9000000
kernel.sched_latency_ns = 24000000
kernel.sched_migration_cost_ns = 50000
kernel.sched_nr_migrate = 32
kernel.sched_tunable_scaling = 1
kernel.sched_domain.cpu0.domain0 = ...
kernel.sched_domain.cpu0.domain1 = ...
...

La sortie exacte peut varier légèrement en fonction de la version spécifique du noyau et de la configuration du système. Cette commande vous donne un instantané de la configuration actuelle du planificateur.

Comprendre chacun de ces paramètres dépasse le cadre de ce laboratoire introductif, mais le principal point à retenir est que sysctl kernel.sched est la commande à utiliser lorsque vous souhaitez inspecter ces paramètres.

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

Vérifier le planificateur dans /proc/sys/kernel

Dans l'étape précédente, nous avons utilisé sysctl pour afficher les paramètres du noyau. Une autre façon d'accéder et parfois de modifier ces paramètres est via le système de fichiers /proc. 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.

Les paramètres du noyau accessibles via sysctl sont souvent reflétés dans le répertoire /proc/sys. Plus précisément, les paramètres liés au planificateur peuvent être trouvés sous /proc/sys/kernel/.

Naviguons jusqu'à ce répertoire et listons son contenu. Nous utiliserons la commande cd pour changer de répertoire et ls pour lister les fichiers et les répertoires.

Tapez la commande suivante pour changer votre répertoire actuel en /proc/sys/kernel/ :

cd /proc/sys/kernel/

Maintenant, listez les fichiers de ce répertoire :

ls

Vous verrez une longue liste de fichiers, chacun représentant un paramètre du noyau. Recherchez les fichiers qui commencent par sched_. Ces fichiers correspondent aux paramètres kernel.sched que nous avons vus avec sysctl.

...
sched_child_runs_first
sched_latency_ns
sched_migration_cost_ns
sched_min_granularity_ns
sched_nr_migrate
sched_rr_timeslice_ms
sched_rt_period_us
sched_rt_runtime_us
sched_shares_window_ns
sched_tunable_scaling
sched_wakeup_granularity_ns
...

Vous pouvez afficher le contenu de ces fichiers en utilisant des commandes comme cat. Par exemple, pour voir la valeur de sched_latency_ns, tapez :

cat sched_latency_ns

Vous devriez voir un nombre, qui est la même valeur que celle que vous avez vue pour kernel.sched_latency_ns lorsque vous avez utilisé sysctl.

24000000

Cela démontre que les informations fournies par sysctl kernel.sched proviennent de fichiers dans le répertoire /proc/sys/kernel/. Bien que sysctl soit souvent plus pratique pour afficher et modifier les paramètres, comprendre le système de fichiers /proc vous donne une vision plus approfondie de la façon dont le noyau expose son état interne.

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

Inspecter les journaux du planificateur avec dmesg

Dans cette étape finale, nous allons examiner les messages du noyau liés au planificateur en utilisant la commande dmesg. dmesg est une commande qui affiche les messages du tampon circulaire du noyau (kernel ring buffer). Ces messages sont générés par le noyau lors du démarrage et de l'exécution du système et peuvent contenir des informations précieuses sur le matériel, les pilotes et les événements système, y compris les activités du planificateur.

Alors que sysctl et /proc/sys montrent la configuration actuelle, dmesg peut parfois afficher des messages liés à l'initialisation du planificateur ou à des événements importants.

Pour afficher les messages du noyau, tapez la commande suivante :

dmesg

Cela produira probablement une sortie très longue, car elle affiche tous les messages du noyau depuis le démarrage du système. Pour trouver des messages spécifiquement liés au planificateur, nous pouvons utiliser la commande grep pour filtrer la sortie. Nous allons rechercher les lignes contenant le mot "sched".

Tapez la commande suivante :

dmesg | grep sched

Le symbole | est appelé un tuyau (pipe). Il prend la sortie de la commande de gauche (dmesg) et l'envoie en tant qu'entrée à la commande de droite (grep sched). grep sched recherche ensuite les lignes contenant "sched" dans l'entrée qu'il reçoit.

Vous pourriez voir une sortie similaire à celle-ci, montrant des messages liés au planificateur lors du démarrage du système :

[    0.000000] Linux version ... (gcc version ...) #... SMP ...
[    0.000000] Command line: BOOT_IMAGE=/boot/vmlinuz-... root=... ro quiet splash vt.handoff=...
[    0.000000] Kernel command line: BOOT_IMAGE=/boot/vmlinuz-... root=... ro quiet splash vt.handoff=...
[    0.000000] PID scheduler: ...
[    0.000000] Mount-cache hash table entries: ... (order: ..., 65536 bytes, linear)
[    0.000000] Mountpoint-cache hash table entries: ... (order: ..., 65536 bytes, linear)
[    0.000000] CPU: Testing write buffer coherency: ...
[    0.000000] smpboot: CPU0: ...
[    0.000000] setup_percpu: System has ... CPUs.
[    0.000000] percpu: Embedded ... pages/cpu s...
[    0.000000] pcpu: PCPU: ...
[    0.000000] Built 1-level schedule group tree
[    0.000000] rcu: Hierarchical RCU implementation.
[    0.000000] rcu: RCU calculated value of scheduler-enlistment delay is ...
[    0.000000] rcu: Adjusting scheduler-enlistment delay with ...
[    0.000000] rcu: RCU restricting CPUs from NR_CPUS=... to nr_cpu_ids=...
[    0.000000] rcu: rcu_sched detected stalls on CPUs/tasks:
...

Encore une fois, la sortie exacte variera. Cette commande est utile pour diagnostiquer des problèmes ou comprendre comment le noyau a initialisé le planificateur.

Vous avez maintenant appris trois façons différentes d'obtenir des informations sur le planificateur du noyau Linux : en utilisant sysctl pour les paramètres actuels, en inspectant les fichiers dans /proc/sys/kernel/ et en vérifiant les messages du noyau avec dmesg.

Cliquez sur Continuer pour terminer ce laboratoire.

Résumé

Dans ce laboratoire, nous avons appris à vérifier la configuration du planificateur de noyau sous Linux en utilisant deux méthodes principales. Tout d'abord, nous avons utilisé la commande sysctl kernel.sched pour afficher divers paramètres liés au planificateur et leurs valeurs actuelles, offrant un instantané des paramètres d'exécution du planificateur.

Ensuite, nous avons exploré le système de fichiers /proc comme une autre façon d'accéder aux paramètres du noyau, en nous concentrant plus particulièrement sur le chemin /proc/sys/kernel, qui reflète les paramètres accessibles via sysctl. Ces étapes ont montré comment inspecter la configuration du planificateur de noyau à la fois à l'aide d'utilitaires en ligne de commande et du système de fichiers virtuel.