Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux scsi命令队列_Linux_Command_Queue_Depth_Scsi - Fatal编程技术网

Linux scsi命令队列

Linux scsi命令队列,linux,command,queue,depth,scsi,Linux,Command,Queue,Depth,Scsi,我是这个论坛的新手。我现在遇到了一个问题 我是Linux内核驱动程序的初学者,目前参与了为块大容量存储设备开发Linux SCSI设备驱动程序。开发平台位于一台高端机器上,配有Fedora 14。设置为一台主机对应一个LU/设备。长话短说,驱动程序的工作原理是,它可以毫无问题地进行初始化,它可以检测设备并向设备发送scsi帧,它可以读取和写入设备,我可以通过驱动程序进行稳定的Iometer读取和写入测试。当一次只有一个未完成的命令(无排队)时,所有这些都会发生 问题是,我无法排队上班。上层SCS

我是这个论坛的新手。我现在遇到了一个问题

我是Linux内核驱动程序的初学者,目前参与了为块大容量存储设备开发Linux SCSI设备驱动程序。开发平台位于一台高端机器上,配有Fedora 14。设置为一台主机对应一个LU/设备。长话短说,驱动程序的工作原理是,它可以毫无问题地进行初始化,它可以检测设备并向设备发送scsi帧,它可以读取和写入设备,我可以通过驱动程序进行稳定的Iometer读取和写入测试。当一次只有一个未完成的命令(无排队)时,所有这些都会发生

问题是,我无法排队上班。上层SCSI层不会向我(LLD)发送多个未完成的命令,除非我
SCSI\u done()
第一个命令。我希望上层可以在我将命令发送到设备进行处理之前多次调用
queuecommand()
,然后设备中断我的响应,
LLD
使用
scsi\u done()
关闭命令。没有排队,我们的速度很慢


我已经调整了一些我认为与队列相关的值,比如设置.can\u queue和
.cmd\u per\u lun
到我的目标队列深度,包括
scsi\u主机
scsi\u主机模板
。基本上,我玩过各种各样的值,包括1,但都没有用。我也禁用并启用了标签,如果这有任何影响,但仍然没有改变。到目前为止,我不记得在驱动程序中使用了多少
scsi\u设备
,除了
slave\u configure
之外。在驾驶员级别,我还可以做些什么?我不敢相信Linux会不支持命令队列。我在这里遗漏了一些东西

Linux当然支持SCSI TCQ(以及与SATA等效的NCQ)。但是,只支持无序标记,不支持有序标记。除此之外,我不知道答案,只能建议看看其他司机是如何做到这一点的。另外,您可能想尝试一个更新的内核,自2010年底以来,已经有了一些变化,特别是缓存刷新的实现方式。谢谢您的建议。我承认我没有研究简单的标签,只有未标签和有序标签。是的,我们现在正在做的就是查看其他驱动程序。您是否用简单的标记解决了这个问题?在linux中使用fio而不是iometer解决了这个问题。Iometer似乎在异步io方面有问题。