Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/22.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 块层中重复的LBA请求_Linux_Asynchronous_Io_Linux Kernel_Aio - Fatal编程技术网

Linux 块层中重复的LBA请求

Linux 块层中重复的LBA请求,linux,asynchronous,io,linux-kernel,aio,Linux,Asynchronous,Io,Linux Kernel,Aio,我正在使用blktrace来理解一个应用程序中的块层行为 具有高IO负载的多线程IO负载。我可以观察到一些 块层中重复的LBA请求。例如,我只有一个 在我的原始工作负载中向LBA 47568写入请求。然而,blktrace 显示121个写入LBA 47568的请求!!!下面是文章的一部分 blkparse日志,仅过滤I事件(IO插入到请求中 队列)。我试图理解这种现象为什么会发生以及如何发生 我能消除这个吗。我在中选择了noop IO调度程序和值2 /sys/block/sdX/nomerge以

我正在使用blktrace来理解一个应用程序中的块层行为 具有高IO负载的多线程IO负载。我可以观察到一些 块层中重复的LBA请求。例如,我只有一个 在我的原始工作负载中向LBA 47568写入请求。然而,blktrace 显示121个写入LBA 47568的请求!!!下面是文章的一部分 blkparse日志,仅过滤I事件(IO插入到请求中 队列)。我试图理解这种现象为什么会发生以及如何发生 我能消除这个吗。我在中选择了noop IO调度程序和值2 /sys/block/sdX/nomerge以避免IO合并。我非常感谢你的帮助 提前

  8 240  0     7539     0.073300123 32282  I  WS 47576 + 8 [a]
  8 240  5     4462     0.073303974 32281  I  WS 47568 + 8 [a]
  8 240 11     4462     0.073306337 32283  I  WS 47584 + 8 [a]
  8 240  6     4462     0.073307970 32284  I  WS 47592 + 8 [a]
  8 240 10     4462     0.073309010 32285  I  WS 47600 + 8 [a]
  8 240  5     4466     0.073311526 32281  I  WS 47568 + 8 [a]
  8 240  5     4469     0.073316215   175  I  WS 47568 + 8 [kworker/5:1]
  8 240  7     4462     0.073352932 32286  I  WS 47608 + 8 [a]
  8 240  7     4466     0.073354061 32286  I  WS 47568 + 8 [a]
  8 240  8     4468     0.073358935 32280  I  WS 47624 + 8 [a]
  8 240  4     4468     0.073360550 32279  I  WS 47616 + 8 [a]
  8 240  8     4472     0.073362145 32280  I  WS 47568 + 8 [a]
  8 240  5     4473     0.073362711 32281  I  WS 47632 + 8 [a]
  8 240  5     4477     0.073364177 32281  I  WS 47568 + 8 [a]
  8 240  0     7545     0.073407427 32282  I  WS 47640 + 8 [a]
  8 240  0     7549     0.073409589 32282  I  WS 47568 + 8 [a]

好的,我来回答我的问题。结果表明,工作负载中未完成的IO数大于通用设备驱动程序队列大小
(/sys/block/sdX/device/queue\u depth)
。因此,当队列已满时,某些请求未能插入队列,从而导致此类现象