Para fins de teste, gostaria de usar CFQ
, deadline
e noop
para uma unidade NVMe. Isso é possível?
Consigo usar o blk-mq para SSDs SATA adicionando "scsi_mod.use_blk_mq=1"
ao grub boot (consulte: Como habilitar e usar o agendador BFQ? ).
Mas ainda não encontrei uma maneira de fazer o inverso para unidades NVMe para permitir que eles usem os agendadores não blk-mq.
/dev/sda <-- dispositivo SCSI
/dev/nvme0n1 <-- dispositivo NVMe
O driver NVMe suporta blk-mq desde a versão 3.19 do kernel. Ele não permitia desligar o blk-mq usando um parâmetro insmod ou uma opção de inicialização do kernel no grub.
Você pode baixar o driver nvme antigo e recompilar o módulo do kernel em http://git.infradead.org/users/willy/linux-nvme.git se quiser desabilitar o blk-mq. No entanto, isso não permitia usar, por exemplo, CFQ. A alteração relevante em 3.19 explica que o driver NVMe anteriormente "[implementava] a lógica de fila dentro de si", não usava a camada de bloco de fila única. Existem outros exemplos de tais dispositivos de bloco, por exemplo,
mdraid
dispositivos Linux.As seguintes fontes estavam corretas na época, elas incluem algumas notas e links úteis. No entanto, eles estão desatualizados, pois foram escritos antes da introdução dos agendadores de E/S blk-mq, incluindo o BFQ (o BFQ foi aceito como parte do Linux 4.12).
https://www.thomas-krenn.com/en/wiki/Linux_Multi-Queue_Block_IO_Queueing_Mechanism_(blk-mq)
Diagrama de armazenamento do Linux em https://www.thomas-krenn.com .
https://www.thomas-krenn.com/de/wikiDE/images/d/da/Linux-io-stack-diagram_v1.0.png