Cómo comprobar si un planificador de discos está configurado en Linux

LinuxLinuxBeginner
Practicar Ahora

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

En este laboratorio, exploraremos cómo determinar el planificador de discos configurado en un entorno Linux. Comprender el planificador de E/S activo es crucial para la optimización del rendimiento y la mejora de las operaciones de almacenamiento.

Lograremos esto examinando el sistema de archivos /sys para consultar directamente la configuración del planificador de dispositivos de bloques, verificando la información del planificador en el buffer circular del kernel utilizando el comando dmesg e inspeccionando las reglas de udev que pueden influir en la configuración de los dispositivos, incluyendo el planificador.


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{{"Cómo comprobar si un planificador de discos está configurado en Linux"}} linux/cat -.-> lab-558708{{"Cómo comprobar si un planificador de discos está configurado en Linux"}} linux/grep -.-> lab-558708{{"Cómo comprobar si un planificador de discos está configurado en Linux"}} end

Verificar el planificador con cat /sys/block/*/queue/scheduler

En este paso, exploraremos cómo verificar el planificador de E/S (I/O) que están utilizando sus dispositivos de bloques en Linux. El planificador de E/S es un componente del kernel que decide el orden en el que se envían las operaciones de E/S de bloques a los dispositivos de almacenamiento. Diferentes planificadores están optimizados para diferentes cargas de trabajo.

Podemos encontrar esta información mirando los archivos dentro del sistema de archivos /sys. El sistema de archivos /sys es un sistema de archivos virtual que proporciona una interfaz a las estructuras de datos del kernel.

Para verificar el planificador de todos los dispositivos de bloques, podemos usar el comando cat junto con un comodín. El comodín * coincide con cualquier carácter, por lo que /sys/block/*/queue/scheduler coincidirá con el archivo del planificador de cada dispositivo de bloques enumerado bajo /sys/block/.

Abra su terminal si no está abierta. Puede hacer esto haciendo clic en el icono de Xfce Terminal en el lado izquierdo de su escritorio.

Ahora, escriba el siguiente comando y presione Enter:

cat /sys/block/*/queue/scheduler

Verá una salida similar a esta:

noop [deadline] cfq
noop [deadline] cfq

La salida muestra los planificadores disponibles y el que se está utilizando actualmente está encerrado entre corchetes []. En este ejemplo, el planificador deadline está actualmente activo para los dispositivos de bloques.

Comprender qué planificador está activo puede ser importante para la optimización del rendimiento, especialmente en entornos de servidores o sistemas con requisitos de almacenamiento específicos.

Verificar el planificador en dmesg

En el paso anterior, verificamos el planificador de E/S (I/O) actualmente activo utilizando el sistema de archivos /sys. Otro lugar donde encontrar información sobre la inicialización del kernel y los dispositivos es el buffer circular del kernel, que se puede ver utilizando el comando dmesg.

El comando dmesg imprime el buffer de mensajes del kernel. Este buffer contiene mensajes producidos por el kernel durante el arranque y el tiempo de ejecución, incluyendo información sobre el hardware detectado y los controladores de dispositivos.

Podemos usar dmesg para ver mensajes relacionados con los dispositivos de bloques y sus planificadores configurados durante el proceso de arranque del sistema. Dado que la salida de dmesg puede ser bastante larga, usaremos el comando grep para filtrar la salida y encontrar líneas que contengan la palabra "scheduler".

Escriba el siguiente comando en su terminal y presione Enter:

dmesg | grep scheduler

El símbolo | se llama tubería (pipe). Toma la salida del comando de la izquierda (dmesg) y la envía como entrada al comando de la derecha (grep). grep scheduler luego busca líneas que contengan la palabra "scheduler" en la entrada que recibe.

Debería ver una salida similar a esta:

[    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**

Busque líneas que mencionen "Using [nombre del planificador] scheduler". Esto confirma qué planificador se seleccionó para sus dispositivos de bloques durante el arranque. La salida puede variar ligeramente dependiendo de la configuración específica del sistema, pero debería ver menciones de los planificadores registrados y el que se está utilizando.

Este método proporciona información histórica del proceso de arranque, mientras que verificar el sistema de archivos /sys le da el estado actual. Ambos son formas útiles de entender la configuración de E/S de su sistema.

Inspeccionar las reglas de udev en /etc/udev/rules.d

En los pasos anteriores, aprendimos cómo verificar el planificador de E/S (I/O) activo utilizando /sys y dmesg. Ahora, veamos cómo el sistema podría estar configurado para establecer el planificador automáticamente cuando se detectan dispositivos. Esto a menudo lo gestiona udev.

udev es un gestor de dispositivos para el kernel de Linux. Gestiona los nodos de dispositivos en /dev y maneja todos los eventos del espacio de usuario cuando se agregan o eliminan dispositivos de hardware del sistema. udev utiliza reglas para coincidir con dispositivos y realizar acciones, como establecer permisos o configurar parámetros de dispositivos como el planificador de E/S.

Las reglas de udev se almacenan típicamente en el directorio /etc/udev/rules.d/. Estos archivos tienen la extensión .rules. Podemos inspeccionar estos archivos para ver si hay alguna regla que establezca específicamente el planificador de E/S para ciertos dispositivos.

Primero, listemos los archivos en el directorio /etc/udev/rules.d/ utilizando el comando ls:

ls /etc/udev/rules.d/

Verá una lista de archivos, posiblemente incluyendo algunos relacionados con dispositivos de bloques o almacenamiento. La salida podría verse algo así:

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

Ahora, echemos un vistazo dentro de uno de estos archivos para ver si podemos encontrar alguna regla relacionada con los planificadores. Usaremos el comando cat para mostrar el contenido de un archivo. Por ejemplo, echemos un vistazo a 99-vmware-scsi-udev.rules (el nombre exacto del archivo podría variar ligeramente dependiendo del entorno, pero busque uno que parezca estar relacionado con el almacenamiento o los dispositivos):

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

Podría ver reglas que coinciden con atributos específicos de dispositivos y luego establecen propiedades. Busque líneas que usen la palabra clave ATTR para coincidir con atributos de dispositivos y la propiedad ATTR{queue/scheduler} para establecer el planificador.

Por ejemplo, una regla para establecer el planificador deadline podría verse algo así:

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

Esta regla coincide con dispositivos de bloques (SUBSYSTEM=="block") con atributos específicos de proveedor y modelo y establece su planificador en deadline cuando se agregan o cambian.

Al inspeccionar estas reglas, puede entender cómo podría estar configurado el planificador de E/S predeterminado en su sistema.

Resumen

En este laboratorio, aprendimos cómo verificar el planificador de discos configurado en Linux utilizando dos métodos principales. Primero, utilizamos el sistema de archivos /sys examinando el contenido de /sys/block/*/queue/scheduler con el comando cat. Esto nos permitió ver los planificadores disponibles e identificar el que se está utilizando actualmente, indicado entre corchetes.

En segundo lugar, exploramos el buffer circular del kernel utilizando el comando dmesg para verificar la información del planificador durante la inicialización del dispositivo. Esto proporciona una forma alternativa de confirmar el planificador activo y obtener información sobre los mensajes del kernel relacionados con los dispositivos de almacenamiento. Finalmente, tocamos brevemente la inspección de las reglas de udev en /etc/udev/rules.d como una ubicación potencial para la configuración del planificador, aunque los pasos detallados para esto no se proporcionaron completamente en el contenido dado.