2013-10-24 19 views
0

如何在块设备驱动程序中禁用此功能? 我的意思是:正如在下面的文档中提到的,我想将该“标志”的值设置为2.我该怎么做?最好在块设备驱动程序代码中。如何禁用块设备驱动程序中的请求合并?

What:  /sys/block/<disk>/queue/nomerges 
Date:  January 2010 
Contact: 
Description: 
     Standard I/O elevator operations include attempts to 
     merge contiguous I/Os. For known random I/O loads these 
     attempts will always fail and result in extra cycles 
     being spent in the kernel. This allows one to turn off 
     this behavior on one of two ways: When set to 1, complex 
     merge checks are disabled, but the simple one-shot merges 
     with the previous I/O request are enabled. When set to 2, 
     all merge tries are disabled. The default value is 0 - 
     which enables all types of merge tries. 
+1

搜索内核树QUEUE_FLAG_NOMERGES。当它设置为2时,sysfs将在请求队列中设置此标志。 –

+0

为什么要禁用它?如果您的驱动程序在合并的请求中无法正常工作,则它已损坏。 –

+0

是的,我知道它已经坏了。我正在修复它。这就是为什么我想禁用请求合并。我怀疑网络延迟与它有关。 – hebbo

回答

2

首先检查nomerges值 -

   `cat /sys/block/sda/queue/nomerges` 

,如果它不是已经2,然后执行:

   `echo 2 > /sys/block/sda/queue/nomerges` 
+0

我试过了,实际上我可以看到值改为2.但是,我仍然可以看到每个请求超过4KB。我有什么理由看到这种行为? – hebbo

+0

从哪里阅读价值?哪个入口? –

+0

请问我的其他问题:http://stackoverflow.com/questions/19574066/it-is-normal-for-linux-to-read-a-block-of-size-more-than-4kb-or-several-块 – hebbo

相关问题