[Tutorial] Configurar regras de I/O scheduler no Fedora 32
Introdução
Em meu antigo Notebook eu usava apenas um SSD Samsung EVO 120GB, e atualmente estou usando este SSD no Notebook da patroa, dividindo espaço com um HD de 500GB em um cady.
Neste cenário, forçar um único I/O scheduler global seja via o TLP ou via parâmetro do sistema fica inviável.
Definindo I/O scheduler automaticamente
Para solucionar isso e definir a configuração correta conforme o tipo de unidade de armazenamento precisamos criar as regras de I/O scheduler:
Edite/crie o arquivo 60-ioschedulers.rules:sudo nano /etc/udev/rules.d/60-ioschedulers.rules
Adicione as linhas:# set scheduler for NVMe
ACTION=="add|change", KERNEL=="nvme[0-9]*", ATTR{queue/scheduler}="none"
# set scheduler for SSD and eMMC
ACTION=="add|change", KERNEL=="sd[a-z]|mmcblk[0-9]*", ATTR{queue/rotational}=="0", ATTR{queue/scheduler}="mq-deadline"
# set scheduler for rotating disks
ACTION=="add|change", KERNEL=="sd[a-z]", ATTR{queue/rotational}=="1", ATTR{queue/scheduler}="bfq"
Use Ctrl+O para salvar, confirme o nome do arquivo e use Ctrl+X para sair.
Para automatizar o processo descrito acima durante uma nova instalação, adicionei a seguinte linha no meu script pessoal ( Instalação Mínima KDE Plasma Fedora 32 ):
echo -e '# set scheduler for NVMe\nACTION=="add|change", KERNEL=="nvme[0-9]*", ATTR{queue/scheduler}="none"\n# set scheduler for SSD and eMMC\nACTION=="add|change", KERNEL=="sd[a-z]|mmcblk[0-9]*", ATTR{queue/rotational}=="0", ATTR{queue/scheduler}="mq-deadline"\n# set scheduler for rotating disks\nACTION=="add|change", KERNEL=="sd[a-z]", ATTR{queue/rotational}=="1", ATTR{queue/scheduler}="bfq"' | tee -a /etc/udev/rules.d/60-ioschedulers.rules
Agora basta reiniciar para que as modificações fiquem ativas. Assim que o sistema subir vc pode para se certificar que as configurações estão ativas, use:cat /sys/block/sdX/queue/scheduler
(onde X é a letra das unidades instaladas)
No exemplo abaixo verifico meu SSD (sda) e o HD(sdb):
Entendendo as regras:
Para cada NVME o sistema usará o scheduler none;
Para cada SSD e eMMC com parâmetro rotational = 0, será usado o mq-deadline;
Para cada HDD com parâmetro rotational =1 será usado bfq;
Atenção:
Desde a versão 5.0, os Single-queue schedulers( NOOP, Deadline e CFQ) foram removidos do kernel, estando disponíveis os Multi-queue schedulers( None, mq-deadline, kyber e BFQ).
As configurações acima descritas foram testadas no Fedora 32 e podem ser diferentes para versões anteriores do sistema/kernel!!
Abraços!!
Comentários
-
Muito bom ótima postagem parabens
0
Salas de discussão
- 721 Todas as salas de discussão
- 5 Eventos
- 402 Fedora
- 7 CoreOS
- 137 Spins
- 11 CINNAMON
- 28 GNOME
- 63 KDE
- 10 LXDE
- 4 LXQT
- 13 MATE
- SOAS
- 3 XFCE
- 13 Server
- 84 Workstation
- 33 SilverBlue
- Atomic
- 3 Labs
- ARM®
- 3 Segurança
- 7 Servidores
- 222 Tutoriais
- 6 Críticas e Sugestões
- 16 Novidades e anuncios
- 5 CentOS
- 18 Games
- 31 Hardware
- 8 Linguagens de programação