Comment vérifier si un planificateur de disque 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), nous allons explorer comment déterminer le planificateur de disque configuré dans un environnement Linux. Comprendre le planificateur d'E/S actif est crucial pour l'ajustement des performances et l'optimisation des opérations de stockage.

Nous allons y parvenir en examinant le système de fichiers /sys pour interroger directement la configuration du planificateur pour les périphériques de bloc, en vérifiant les informations sur le planificateur dans le tampon circulaire du noyau à l'aide de la commande dmesg, et en inspectant les règles udev qui peuvent influencer la configuration des périphériques, y compris le planificateur.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/BasicFileOperationsGroup(["Basic File Operations"]) linux(("Linux")) -.-> linux/TextProcessingGroup(["Text Processing"]) linux/BasicFileOperationsGroup -.-> linux/ls("Content Listing") linux/BasicFileOperationsGroup -.-> linux/cat("File Concatenating") linux/TextProcessingGroup -.-> linux/grep("Pattern Searching") subgraph Lab Skills linux/ls -.-> lab-558708{{"Comment vérifier si un planificateur de disque est configuré sous Linux"}} linux/cat -.-> lab-558708{{"Comment vérifier si un planificateur de disque est configuré sous Linux"}} linux/grep -.-> lab-558708{{"Comment vérifier si un planificateur de disque est configuré sous Linux"}} end

Vérifier le planificateur avec cat /sys/block/*/queue/scheduler

Dans cette étape, nous allons explorer comment vérifier le planificateur d'E/S utilisé par vos périphériques de bloc sous Linux. Le planificateur d'E/S est un composant du noyau qui décide de l'ordre dans lequel les opérations d'E/S de bloc sont soumises aux périphériques de stockage. Différents planificateurs sont optimisés pour différents types de charges de travail.

Nous pouvons trouver ces informations en examinant les fichiers dans le système de fichiers /sys. Le système de fichiers /sys est un système de fichiers virtuel qui fournit une interface aux structures de données du noyau.

Pour vérifier le planificateur de tous les périphériques de bloc, nous pouvons utiliser la commande cat avec un joker. Le joker * correspond à n'importe quel caractère, donc /sys/block/*/queue/scheduler correspondra au fichier du planificateur de chaque périphérique de bloc répertorié sous /sys/block/.

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

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

cat /sys/block/*/queue/scheduler

Vous verrez une sortie similaire à celle-ci :

noop [deadline] cfq
noop [deadline] cfq

La sortie montre les planificateurs disponibles et celui actuellement utilisé est encadré par des crochets []. Dans cet exemple, le planificateur deadline est actuellement actif pour les périphériques de bloc.

Comprendre quel planificateur est actif peut être important pour l'ajustement des performances, en particulier dans les environnements serveur ou les systèmes ayant des exigences de stockage spécifiques.

Vérifier le planificateur dans dmesg

Dans l'étape précédente, nous avons vérifié le planificateur d'E/S actuellement actif en utilisant le système de fichiers /sys. Un autre endroit pour trouver des informations sur l'initialisation du noyau et des périphériques est le tampon circulaire du noyau, qui peut être consulté à l'aide de la commande dmesg.

La commande dmesg affiche le tampon de messages du noyau. Ce tampon contient les messages produits par le noyau lors du démarrage et de l'exécution du système, y compris des informations sur le matériel détecté et les pilotes de périphériques.

Nous pouvons utiliser dmesg pour voir les messages liés aux périphériques de bloc et à leurs planificateurs configurés lors du processus de démarrage du système. Étant donné que la sortie de dmesg peut être assez longue, nous allons utiliser la commande grep pour filtrer la sortie et trouver les lignes contenant le mot "scheduler".

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

dmesg | grep scheduler

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). grep scheduler recherche ensuite les lignes contenant le mot "scheduler" dans l'entrée qu'il reçoit.

Vous devriez voir une sortie similaire à celle-ci :

[    X.XXXXXX] io scheduler noop registered
[    X.XXXXXX] io scheduler deadline registered
[    X.XXXXXX] io scheduler cfq registered
[    X.XXXXXX] sdX: [sd-mod] Asking for cache data failed
[    X.XXXXXX] sdX: [sd-mod] Assuming drive cache: write through
[    X.XXXXXX] sdX: [sd-mod] Enabled discard support
[    X.XXXXXX] sdX: [sd-mod] **Using deadline scheduler**

Recherchez les lignes qui mentionnent "Using [nom du planificateur] scheduler". Cela confirme quel planificateur a été sélectionné pour vos périphériques de bloc lors du démarrage. La sortie peut varier légèrement en fonction de la configuration spécifique du système, mais vous devriez voir des mentions des planificateurs enregistrés et de celui qui est utilisé.

Cette méthode fournit des informations historiques issues du processus de démarrage, tandis que la vérification du système de fichiers /sys vous donne l'état actuel. Les deux sont des moyens utiles de comprendre la configuration d'E/S de votre système.

Inspecter les règles udev dans /etc/udev/rules.d

Dans les étapes précédentes, nous avons appris à vérifier le planificateur d'E/S actif en utilisant /sys et dmesg. Maintenant, examinons comment le système peut être configuré pour définir automatiquement le planificateur lorsque des périphériques sont détectés. Cela est souvent géré par udev.

udev est un gestionnaire de périphériques pour le noyau Linux. Il gère les nœuds de périphériques dans /dev et gère tous les événements de l'espace utilisateur lorsque des périphériques matériels sont ajoutés ou supprimés du système. udev utilise des règles pour identifier les périphériques et effectuer des actions, telles que définir les autorisations ou configurer des paramètres de périphérique comme le planificateur d'E/S.

Les règles udev sont généralement stockées dans le répertoire /etc/udev/rules.d/. Ces fichiers ont une extension .rules. Nous pouvons inspecter ces fichiers pour voir s'il existe des règles qui définissent spécifiquement le planificateur d'E/S pour certains périphériques.

Tout d'abord, listons les fichiers dans le répertoire /etc/udev/rules.d/ en utilisant la commande ls :

ls /etc/udev/rules.d/

Vous verrez une liste de fichiers, qui peut potentiellement inclure certains liés aux périphériques de bloc ou au stockage. La sortie pourrait ressembler à ceci :

10-snapd.rules  50-cloudimg-settings.rules  70-snap.core.rules  70-snap.lxd.rules  70-snap.microk8s.rules  70-snap.snapd.rules  70-snap.snapd-desktop-integration.rules  99-vmware-scsi-udev.rules

Maintenant, examinons le contenu d'un de ces fichiers pour voir si nous pouvons trouver des règles liées aux planificateurs. Nous utiliserons la commande cat pour afficher le contenu d'un fichier. Par exemple, examinons le fichier 99-vmware-scsi-udev.rules (le nom exact du fichier peut varier légèrement en fonction de l'environnement, mais recherchez celui qui semble lié au stockage ou aux périphériques) :

cat /etc/udev/rules.d/99-vmware-scsi-udev.rules

Vous pourriez voir des règles qui correspondent à des attributs de périphérique spécifiques et définissent ensuite des propriétés. Recherchez les lignes qui utilisent le mot-clé ATTR pour correspondre aux attributs de périphérique et la propriété ATTR{queue/scheduler} pour définir le planificateur.

Par exemple, une règle pour définir le planificateur deadline pourrait ressembler à ceci :

## Set scheduler for VMware SCSI devices
ACTION=="add|change", SUBSYSTEM=="block", ATTRS{idVendor}=="VMware", ATTRS{idModel}=="VMware Virtual S", ATTR{queue/scheduler}="deadline"

Cette règle correspond aux périphériques de bloc (SUBSYSTEM=="block") avec des attributs de fabricant et de modèle spécifiques et définit leur planificateur sur deadline lorsqu'ils sont ajoutés ou modifiés.

En inspectant ces règles, vous pouvez comprendre comment le planificateur d'E/S par défaut peut être configuré sur votre système.

Résumé

Dans ce laboratoire (lab), nous avons appris à vérifier le planificateur de disque configuré sous Linux en utilisant deux méthodes principales. Tout d'abord, nous avons utilisé le système de fichiers /sys en examinant le contenu de /sys/block/*/queue/scheduler avec la commande cat. Cela nous a permis de voir les planificateurs disponibles et d'identifier celui actuellement utilisé, indiqué par des crochets.

Deuxièmement, nous avons exploré le tampon circulaire du noyau en utilisant la commande dmesg pour vérifier les informations sur le planificateur lors de l'initialisation des périphériques. Cela offre une autre façon de confirmer le planificateur actif et de mieux comprendre les messages du noyau liés aux périphériques de stockage. Enfin, nous avons brièvement abordé l'inspection des règles udev dans /etc/udev/rules.d comme emplacement potentiel pour la configuration du planificateur, bien que les étapes détaillées pour cela n'aient pas été entièrement fournies dans le contenu présenté.