https://bbs.deepin.org/post/203997 今天发现 redhat 的文档上有更详细的说明
Featured Collection
Popular Ranking
Popular Events
论坛内有一个帖子说 https://bbs.deepin.org/post/141744,不过,这个似乎跟我的问题不相干。
IO 调度方面的资料网上不多,很多都是重复的,只能找两篇看看。
单队列调度算法
多队列调度算法
mq 多队列调度机制 3.16 正式加入,适配 io 密集、高 iops 的系统,pc 机上可用可不用,用着意义不太大。5.0 内核已删除单队列调度程序。
查看目前可用的 IO 调度器
好像只有 [mq-deadline] none 两个。默认选中的是 mq-deadline,看网上介绍的,这似乎是适用于数据库服务器的调度器。
另外又分别查看了 debian 10 和 ubuntu 20,似乎都是一样的。只有那两个,跟网上说的不太一样。
不过看了 deepin 15.11,似乎 4.15 内核还是使用的单队列调度策略。有 deadline、cfq、noop 等可选,默认的是 cfq,适用于普通台式机。
后来查看了 /usr/lib/modules/5.4.50-amd64-desktop/kernel/block 目录,发现里面有 bfq.ko 和 kyber-iosched.ko。看来 mq-deadline 模块是编译进内核了,其他的调度程序是以单独的模块形式存在的,启动时也没有默认加载。
后面开了一个占用 CPU 特别高的 wine 程序,分别查看了下现有的 mq-deadline 和 none、bfq 等三种调度程序下的表现,都还是会卡死。不过 bfq 表现稍好点,挺得时间较长。
另外,无意中在 phoronix 论坛发现有人说一直在找,大量写入数据导致系统挂起的问题,原因何在。找了十几年都没找到。后面有人说是虚拟内存系统的问题,也没说清。这可能就是说的卡死的问题吧?官方可以参考参考,或主动问下? https://bbs.deepin.org/user/48640 在 4.19 那个测试贴 17 楼和 23 楼。
参考:
如何选择IO调度器
Changing I/O scheduler
Linux 4.19 I/O Scheduler SSD Benchmarks With Kyber, BFQ, Deadline, CFQ
Linux 5.6 I/O Scheduler Benchmarks: None, Kyber, BFQ, MQ-Deadline
linux io阻塞问题
Linux文件读写机制及优化方式