出于测试目的,我想将CFQ
、deadline
和noop
用于 NVMe 驱动器。这可能吗?
"scsi_mod.use_blk_mq=1"
通过添加到 grub 引导,我可以将 blk-mq 用于 SATA SSD (请参阅:如何启用和使用 BFQ 调度程序?)。
但是还没有找到一种方法对 NVMe 驱动器进行反向操作,以允许它们使用非 blk-mq 调度程序。
出于测试目的,我想将CFQ
、deadline
和noop
用于 NVMe 驱动器。这可能吗?
"scsi_mod.use_blk_mq=1"
通过添加到 grub 引导,我可以将 blk-mq 用于 SATA SSD (请参阅:如何启用和使用 BFQ 调度程序?)。
但是还没有找到一种方法对 NVMe 驱动器进行反向操作,以允许它们使用非 blk-mq 调度程序。
/dev/sda <-- SCSI 设备
/dev/nvme0n1 <-- NVMe 设备
NVMe 驱动程序从内核版本 3.19 开始支持 blk-mq。它不允许通过使用 insmod 参数或 grub 中的内核引导选项来关闭 blk-mq。
如果要禁用 blk-mq,可以从http://git.infradead.org/users/willy/linux-nvme.git下载旧的 nvme 驱动程序并重新编译内核模块。但是,这不允许使用例如 CFQ。3.19 中的相关更改解释了 NVMe 驱动程序之前“在自身内部实现了队列逻辑”,它没有使用单队列块层。此类块设备还有其他示例,例如 Linux
mdraid
设备。以下来源在当时是正确的,它们包括一些有用的注释和链接。然而它们已经过时了,因为它们是在引入 blk-mq IO 调度程序之前编写的,包括 BFQ(BFQ 被接受为 Linux 4.12 的一部分)。
https://www.thomas-krenn.com/en/wiki/Linux_Multi-Queue_Block_IO_Queueing_Mechanism_(blk-mq)
来自https://www.thomas-krenn.com的Linux 存储图。
https://www.thomas-krenn.com/de/wikiDE/images/d/da/Linux-io-stack-diagram_v1.0.png