Linux kernel Linux中从用户空间到设备的写入请求流?

Linux kernel Linux中从用户空间到设备的写入请求流?,linux-kernel,io,Linux Kernel,Io,我对在Linux中从用户空间发出写操作时会发生什么感到困惑。到底到存储设备的全流程是什么?假设我使用CFQ和仍然使用pdflush的内核 据说CFQ将请求放入同步和a-sync队列。例如,写入是a-sync,因此它们根据io优先级进入a-sync队列。队列将根据CFQ时间片、过期设置等获得CPU。很好 同时,写脏页。写入脏页由VM设置触发,并在pdflush线程的上下文中完成,该线程运行后台_writeout()的副本,该副本调用writeback_nodes()。发生这种情况时,pdflush

我对在Linux中从用户空间发出写操作时会发生什么感到困惑。到底到存储设备的全流程是什么?假设我使用CFQ和仍然使用pdflush的内核

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

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

这是否意味着,对于相同或类似的写请求,可能会有两个相互竞争的写操作——一个由CFQ队列机制控制,另一个由VM子系统触发

这是否意味着,由于pdflush不具有与请求进程相同的io优先级,一旦我们达到脏_后台_比率,VM子系统就会有效地打破CFQ规则

一旦我们达到脏_比率,CFQ设置就会或多或少地过时,因为所有写入都会同步

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

如有任何关于整幅图的提示,将不胜感激

谢谢,
亚历克斯从那以后我就找到了。基本上,是的,pdflush和写缓存通常会破坏写操作的IO优先级。读操作仍然可以从CFQ中受益,因为它们是同步的,同步请求获得优先级,但对于受IO优先级约束的写操作,它们必须是直接的。

从那时起我就发现了这一点。基本上,是的,pdflush和写缓存通常会破坏写操作的IO优先级。读取仍然可以从CFQ中受益,因为它们是同步的,同步请求获得优先级,但对于受IO优先级影响的写入,它们必须是直接的。

我想我已经找到了我需要的东西。我想我已经找到了我需要的东西