在Linux中将请求流从用户空间写入设备?

时间:2010-08-09 16:00:36

标签: linux-kernel io

当我在Linux中从用户空间发出写入时,我感到很困惑。什么是完整流程,直到存储设备?假设我使用CFQ和仍然使用pdflush的内核。

据说CFQ将请求置于同步和同步队列中。例如,写入是同步,因此它们基于io优先级进入同步队列。队列将根据CFQ时间片,到期设置等获得CPU。精细。

同时,写脏页。写入脏页由VM设置触发,并在pdflush线程的上下文中完成,该线程运行调用writeback_nodes()的background_writeout()副本。发生这种情况时,写入pdflush肯定会同步。

这是否意味着我们有两个竞争性写入可能针对相同或类似的写入请求 - 一个由CFQ排队机制控制,另一个由VM子系统触发?

这是否意味着一旦我们点击dirty_background_ratio,VM子系统就会有效地破坏CFQ规则,因为pdflush不具有与请求进程相同的io优先级?

一旦我们点击dirty_ratio,CFQ设置或多或少就会过时,因为所有写入都会同步?

我已经阅读了很多关于这两个子系统的具体信息,但我还没有理解整个写请求流程。交互式Linux内核映射不包括IO调度程序。

任何指向整个图片的指针都将受到赞赏。

谢谢, 亚历

1 个答案:

答案 0 :(得分:1)

从那时起我就找到了它。基本上,是的,pdflush和写缓存通常会破坏写入的IO优先级。读取仍然可以从CFQ中受益,因为它们是同步和同步请求获得优先权,但对于要受IO优先级限制的写入,它们必须是直接的。