Como especificar vários planejadores na linha de comando de inicialização do kernel?

1

Temos sistemas com discos mecânicos giratórios e armazenamento NVME. Queremos reduzir a sobrecarga da CPU para o IO, tirando qualquer agendador de IO do caminho. Queremos especificar isso na linha de comando de inicialização do Linux; ou seja, em GRUB_CMDLINE_LINUX , no arquivo /etc/default/grub .

  • Para discos mecânicos, podemos anexar elevator=noop à linha de comando. Isso corresponde ao valor noop em /sys/block/sda/queue/scheduler
  • Para armazenamento NVME, usamos none em /sys/block/nvme0n1/queue/scheduler ; que presumivelmente (não pôde confirmar) pode ser especificado no momento da inicialização, anexando elevator=none .

Isso se torna uma questão de duas partes:

  1. O valor correto a ser usado para armazenamento NVME é elevator=none em GRUB_CMDLINE_LINUX ?
  2. Os dois valores podem ser especificados em GRUB_CMDLINE_LINUX ?

Se o segundo estiver correto, estou supondo que elevator=noop será configurado corretamente para os discos giratórios, mas o controlador NVME irá ignorá-lo normalmente; então elevator=none será configurado corretamente para discos NVME, mas o controlador de disco giratório irá ignorar esse .

    
por Rich 08.09.2018 / 00:11

1 resposta

2

Os agendadores de E / S são atribuídos globalmente no momento da inicialização.
Mesmo se você usar várias atribuições elevator=[value] , somente a última terá efeito.
Para definir automaticamente / permanentemente agendadores por dispositivo, você pode usar udev rules , systemd services ou configuração & ferramentas de ajuste de desempenho, como tuned .
Quanto à sua outra pergunta, a resposta é sim, elevator=none é o valor correto para usar no armazenamento NVME.

    
por 10.09.2018 / 20:38