我认为以下关于CFQ的说法是相互矛盾的:
哪些说法是不正确的?或者如果它们都是正确的,为什么它们不互相矛盾呢?
答案1
我认为陈述2和3是不正确的。
用户进程可以使用 生成异步写入 IO sync_file_range()
。由于这些 IO 是由调用进程直接提交的,因此它们可能会受到进程 IO 优先级的影响。
sync_file_range() 旨在允许触发异步写回。当前实现 (Linux v4.20) 通过使用写回模式 WB_SYNC_NONE 避免设置 REQ_SYNC。即使您的程序通过包含标志 SYNC_FILE_RANGE_WAIT_AFTER 来等待写回,情况也是如此。 (但是,v2.6.29 和 v4.4 之间的内核错误地使用了 WB_SYNC_ALL,因此 REQ_SYNC 用于由sync_file_range()触发的所有写回)。
我猜想如果在异步 write() 调用期间必须执行“直接回收”,则进程 IO 优先级也可能会被使用。据说那是2011年被摆脱。