【问题标题】:Write request flow in Linux from user space to the device?在Linux中将请求流从用户空间写入设备?
【发布时间】:2010-08-09 16:00:35
【问题描述】:

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

CFQ 将请求放入同步和异步队列。例如,写入是异步的,因此它们会根据 io 优先级进入异步队列。队列会根据CFQ时间片、过期设置等获取CPU。很好。

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

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

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

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

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

任何指向整个图片的指针将不胜感激。

谢谢, 亚历克斯

【问题讨论】:

  • 我想我找到了我需要的东西

标签: linux-kernel io


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-07-29
    • 1970-01-01
    • 1970-01-01
    • 2011-01-17
    • 1970-01-01
    • 2016-02-25
    • 1970-01-01
    相关资源
    最近更新 更多