Como verificar se um escalonador de disco está configurado no Linux

LinuxBeginner
Pratique Agora

Introdução

Neste laboratório, exploraremos como determinar o escalonador de disco configurado em um ambiente Linux. Compreender o escalonador de I/O (I/O scheduler) ativo é crucial para o ajuste de desempenho e a otimização das operações de armazenamento.

Faremos isso examinando o sistema de arquivos /sys para consultar diretamente a configuração do escalonador para dispositivos de bloco, verificando as informações do escalonador dentro do buffer de anel do kernel usando o comando dmesg e inspecionando as regras do udev, que podem influenciar a configuração do dispositivo, incluindo o escalonador.

Verificar o escalonador com cat /sys/block/*/queue/scheduler

Nesta etapa, exploraremos como verificar o escalonador de I/O (I/O scheduler) que está sendo usado pelos seus dispositivos de bloco no Linux. O escalonador de I/O é um componente do kernel que decide a ordem em que as operações de I/O em bloco são submetidas aos dispositivos de armazenamento. Diferentes escalonadores são otimizados para diferentes cargas de trabalho.

Podemos encontrar essa informação observando os arquivos dentro do sistema de arquivos /sys. O sistema de arquivos /sys é um sistema de arquivos virtual que fornece uma interface para as estruturas de dados do kernel.

Para verificar o escalonador para todos os dispositivos de bloco, podemos usar o comando cat junto com um curinga. O curinga * corresponde a quaisquer caracteres, então /sys/block/*/queue/scheduler corresponderá ao arquivo do escalonador para cada dispositivo de bloco listado em /sys/block/.

Abra seu terminal, caso ainda não esteja aberto. Você pode fazer isso clicando no ícone Xfce Terminal no lado esquerdo da sua área de trabalho.

Agora, digite o seguinte comando e pressione Enter:

cat /sys/block/*/queue/scheduler

Você verá uma saída semelhante a esta:

noop [deadline] cfq
noop [deadline] cfq

A saída mostra os escalonadores disponíveis e o que está atualmente em uso é exibido entre colchetes []. Neste exemplo, o escalonador deadline está atualmente ativo para os dispositivos de bloco.

Compreender qual escalonador está ativo pode ser importante para o ajuste de desempenho, especialmente em ambientes de servidor ou sistemas com requisitos de armazenamento específicos.

Verificar o escalonador em dmesg

Na etapa anterior, verificamos o escalonador de I/O (I/O scheduler) atualmente ativo usando o sistema de arquivos /sys. Outro lugar para encontrar informações sobre o kernel e a inicialização do dispositivo é o buffer de anel do kernel, que pode ser visualizado usando o comando dmesg.

O comando dmesg imprime o buffer de mensagens do kernel. Este buffer contém mensagens produzidas pelo kernel durante a inicialização e o tempo de execução, incluindo informações sobre hardware detectado e drivers de dispositivo.

Podemos usar dmesg para ver mensagens relacionadas aos dispositivos de bloco e seus escalonadores configurados durante o processo de inicialização do sistema. Como a saída de dmesg pode ser bastante longa, usaremos o comando grep para filtrar a saída e encontrar linhas contendo a palavra "scheduler".

Digite o seguinte comando no seu terminal e pressione Enter:

dmesg | grep scheduler

O símbolo | é chamado de pipe. Ele pega a saída do comando à esquerda (dmesg) e a envia como entrada para o comando à direita (grep). grep scheduler então procura por linhas contendo a palavra "scheduler" na entrada que recebe.

Você deve ver uma saída semelhante 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**

Procure por linhas que mencionem "Using [scheduler name] scheduler". Isso confirma qual escalonador foi selecionado para seus dispositivos de bloco durante a inicialização. A saída pode variar ligeiramente dependendo da configuração específica do sistema, mas você deve ver menções de escalonadores registrados e o que está sendo usado.

Este método fornece informações históricas do processo de inicialização, enquanto verificar o sistema de arquivos /sys fornece o estado atual. Ambos são métodos úteis para entender a configuração de I/O do seu sistema.

Inspecionar as regras udev em /etc/udev/rules.d

Nas etapas anteriores, aprendemos como verificar o escalonador de I/O (I/O scheduler) ativo usando /sys e dmesg. Agora, vamos analisar como o sistema pode ser configurado para definir o escalonador automaticamente quando os dispositivos são detectados. Isso geralmente é tratado pelo udev.

udev é um gerenciador de dispositivos para o kernel Linux. Ele gerencia os nós de dispositivo em /dev e lida com todos os eventos do espaço do usuário quando os dispositivos de hardware são adicionados ou removidos do sistema. udev usa regras para corresponder dispositivos e executar ações, como definir permissões ou configurar parâmetros do dispositivo, como o escalonador de I/O.

As regras do udev são normalmente armazenadas no diretório /etc/udev/rules.d/. Esses arquivos têm uma extensão .rules. Podemos inspecionar esses arquivos para ver se há alguma regra que defina especificamente o escalonador de I/O para determinados dispositivos.

Primeiro, vamos listar os arquivos no diretório /etc/udev/rules.d/ usando o comando ls:

ls /etc/udev/rules.d/

Você verá uma lista de arquivos, potencialmente incluindo alguns relacionados a dispositivos de bloco ou armazenamento. A saída pode ser semelhante a esta:

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

Agora, vamos olhar dentro de um desses arquivos para ver se podemos encontrar alguma regra relacionada aos escalonadores. Usaremos o comando cat para exibir o conteúdo de um arquivo. Por exemplo, vamos olhar para 99-vmware-scsi-udev.rules (o nome do arquivo exato pode variar ligeiramente dependendo do ambiente, mas procure um que pareça relacionado ao armazenamento ou dispositivos):

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

Você pode ver regras que correspondem a atributos específicos do dispositivo e, em seguida, definem propriedades. Procure por linhas que usem a palavra-chave ATTR para corresponder aos atributos do dispositivo e a propriedade ATTR{queue/scheduler} para definir o escalonador.

Por exemplo, uma regra para definir o escalonador deadline pode ser semelhante a esta:

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

Esta regra corresponde a dispositivos de bloco (SUBSYSTEM=="block") com atributos específicos de fornecedor e modelo e define seu escalonador como deadline quando eles são adicionados ou alterados.

Ao inspecionar essas regras, você pode entender como o escalonador de I/O padrão pode ser configurado em seu sistema.

Resumo

Neste laboratório, aprendemos como verificar o escalonador de disco configurado no Linux usando dois métodos principais. Primeiro, utilizamos o sistema de arquivos /sys examinando o conteúdo de /sys/block/*/queue/scheduler com o comando cat. Isso nos permitiu ver os escalonadores disponíveis e identificar o que está sendo usado atualmente, indicado por colchetes.

Em segundo lugar, exploramos o buffer de anel do kernel usando o comando dmesg para verificar as informações do escalonador durante a inicialização do dispositivo. Isso fornece uma maneira alternativa de confirmar o escalonador ativo e obter informações sobre as mensagens do kernel relacionadas aos dispositivos de armazenamento. Por fim, abordamos brevemente a inspeção das regras do udev em /etc/udev/rules.d como um local potencial para a configuração do escalonador, embora as etapas detalhadas para isso não tenham sido totalmente fornecidas no conteúdo fornecido.