在Linux中,当我从用户空间发出一个写操作时,我对会发生什么感到困惑。什么是满流,向下到存储设备?假设我使用cfq和一个仍然使用pdflush的内核。
据称,cfq将请求放入sync和a-sync队列。例如,写操作是A-Sync,因此它们将根据IO优先级进入A-Sync队列。队列将根据CFQ时间片、过期设置等获得CPU。很好。
同时,写脏页。写脏页是由vm设置触发的,并在pdfush线程的上下文中完成,pdfush线程运行一个background_writeout()的副本,该副本调用writeback_nodes()。当发生这种情况时,写入pdflush肯定是同步的。
这是否意味着对于相同或类似的写请求,我们有两个可能发生的相互竞争的写操作——一个由cfq队列机制控制,另一个由vm子系统触发?
这是否意味着当我们遇到脏的背景比时,虚拟机子系统会有效地破坏cfq规则,因为pdflush与请求进程不具有相同的IO优先级?
一旦我们达到脏比率,cfq设置就会或多或少地过时,因为所有的写操作都是同步的?
我已经阅读了很多关于这两个子系统的具体信息,但是我还没有理解整个写请求流程。交互式Linux内核映射不包括IO调度程序。
任何指向整张照片的指针都会受到赞赏。
谢谢,
亚历克斯