出于测试目的,我希望将CFQ、deadline和noop用于NVMe驱动器。这个是可能的吗?
我可以通过将"scsi_mod.use_blk_mq=1"添加到grub引导(请参阅:如何启用和使用BFQ调度程序?)来为SATA使用blk。
但是还没有找到一种方法对NVMe驱动器进行反向操作,以允许它们使用非blk调度程序。
发布于 2018-03-05 03:49:44
/dev/sda <-- SCSI设备
/dev/nvme0n1 <-- NVMe器件
自内核版本3.19以来,NVMe驱动程序就支持blk。它不允许通过在grub中使用insmod参数或内核引导选项来关闭blk。
$ modinfo -p nvme
use_threaded_interrupts: (int)
use_cmb_sqes:use controller's memory buffer for I/O SQes (bool)
max_host_mem_size_mb:Maximum Host Memory Buffer (HMB) size per controller (in MiB) (uint)
sgl_threshold:Use SGLs when average request segment size is larger or equal to this size. Use 0 to disable SGLs. (uint)
io_queue_depth:set io queue depth, should >= 2如果您想禁用blk,可以从http://git.infradead.org/users/willy/linux-nvme.git下载旧的nvme驱动程序并重新编译内核模块。然而,这不允许使用例如CFQ。3.19的相关变动解释说,NVMe驱动程序以前是"实施队列逻辑本身“,它没有使用单队列块层。还有类似块设备的其他示例,例如Linux mdraid设备。
以下资料来源当时是正确的,它们包括一些有用的注释和链接。但是,它们已经过时了,因为它们是在引入blk调度程序之前编写的,包括BFQ (BFQ被接受为Linux 4.12的一部分)。
https://www.thomas-krenn.com/en/wiki/Linux_多队列_区块_IO_排队_机制_(blk-mq)
Linux来自https://www.thomas-krenn.com。
https://www.thomas-krenn.com/de/wikiDE/images/d/da/Linux-io-stack-diagram_v1.0.png
https://unix.stackexchange.com/questions/426377
复制相似问题