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.