Block Layer中重复的LBA请求

我正在使用blktrace来了解具有较高IO负载的multithreadingIO工作负载中的块层行为。 我可以在块层中观察到一些重复的LBA请求。 例如,在原始工作负载中,我只有一个写入请求到LBA 47568。 不过,blktrace显示了写LBA 47568的121个请求! 下面是blkparse日志的一部分,它只过滤I事件(IO插入请求队列)。 我想了解为什么发生这种现象,我怎么能消除这种现象。 我在/ sys / block / sdX / nomerge中select了IO调度程序和值2来避免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]

通过Windows中的常规文件传输1-2兆字节的数据比通过RAM慢吗?

Python的select()行为很奇怪

什么时候write()到一个文件返回EWOULDBLOCK?

什么是Windows上最好的epoll / kqueue / select equvalient?

O_DIRECT标志不起作用

好的,我会回答我的问题。 事实证明,工作负载中突出IO的数量大于通用设备驱动程序队列大小(/sys/block/sdX/device/queue_depth) 。 因此,有些请求在队列满的时候没有插入,造成这种现象。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐