Home
Categories
WIKI
Topic
User
LANGUAGE:
中文
English
今天测试了一下几种 IO 调度器,不过没什么结论
Experiences and Insight
6788
views ·
5
replies ·
To
floor
Go
走钢丝
deepin
2020-10-19 00:21
Author
因为系统经常卡死无响应的问题,今天查了查磁盘 IO 方面的资料,并测试了一下。
论坛内有一个帖子说
https://bbs.deepin.org/post/141744
,不过,这个似乎跟我的问题不相干。
IO 调度方面的资料网上不多,很多都是重复的,只能找两篇看看。
单队列调度算法
deadline
cfq
noop
Copy the Code
多队列调度算法
mq-deadline
bfq
none
kyber
Copy the Code
mq 多队列调度机制 3.16 正式加入,适配 io 密集、高 iops 的系统,pc 机上可用可不用,用着意义不太大。5.0 内核已删除单队列调度程序。
查看目前可用的 IO 调度器
cat /sys/block/sda/queue/scheduler
Copy the Code
好像只有 [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文件读写机制及优化方式
Reply
Like 0
Favorite
View the author
All Replies
走钢丝
deepin
2020-10-19 00:29
#1
另外看 arch 的 wiki 上推荐 nvme 的 ssd 不使用 IO 调度器,即 none。有些网站说只要不是机械硬盘,就应该用 none。
Reply
Like 0
View the author
走钢丝
deepin
2020-10-20 20:51
#2
本帖最后由 lidanger 于 2020-10-20 12:54 编辑
今天发现 redhat 的文档上有更详细的说明
我是普通 SSD,又是桌面,该用哪个?@jingle
参考:
Chapter 8. Setting the disk scheduler
Reply
Like 0
View the author
走钢丝
deepin
2020-10-20 21:01
#3
https://bbs.deepin.org/post/203997
今天发现 redhat 的文档上有更详细的说明
https://bbs.deepin.org/user/13508
https://bbs.deepin.org/user/10700
大佬来说说。对我来说应该是 bfq 最好吧?
Reply
Like 0
View the author
走钢丝
deepin
2020-10-22 02:24
#4
ubuntu wiki 上说 mq-deadline/none/bfq 等多队列调度器在 ssd 或 nvme 设备上差别不大。所以我最终选择了 kyber
Reply
Like 0
View the author
走钢丝
deepin
2020-10-22 20:47
#5
最终如下,不知道合理不合理,先用一段再说。
加载调度模块
sudo dedit /etc/modules-load.d/iosched.conf
Copy the Code
添加两个未编译进内核的调度模块
bfq
kyber-iosched
Copy the Code
添加应用规则
sudo dedit /etc/udev/rules.d/60-iosched.rules
Copy the Code
添加以下规则,然后重启
# set mq-deadline scheduler for non-rotating disks
ACTION=="add|change", KERNEL=="sd[a-z]", ATTR{queue/rotational}=="0", ATTR{queue/scheduler}="kyber"
# set bfq scheduler for rotating disks
ACTION=="add|change", KERNEL=="sd[a-z]", ATTR{queue/rotational}=="1", ATTR{queue/scheduler}="bfq"
# set mq-deadline scheduler for non-rotating nvme-disks
ACTION=="add|change", KERNEL=="nvme[0-9]n1", ATTR{queue/rotational}=="0", ATTR{queue/scheduler}="none"
Copy the Code
规则是从其他地方搬来的,改了下。第 3 个用于 nvme 存储;第 2 个用于需要转动的 sata 存储,应该是指机械硬盘吧;第 1 个用于不需要转动的 sata 存储。
我主要把第一个从 mq-deadline 改成 kyber 了。中间改过 bfq,none 等,最后还是觉得 kyber 逻辑上更合适点。因为 ssd 上各个多队列调度器差别不大,按说应该选 none 的,不过考虑到 kyber 添加了读写分离,觉得还是这个好点。毕竟普通 ssd 没那么快。
Reply
Like 0
View the author
Please
sign
in first
Featured Collection
Change
[Tutorial] deepin25 WSL Offline Installation Guide
UOS AI 2.8 Released! Three New Intelligent Agents & Major Evolution
Solid Q&A | deepin 25 Common Questions – The Immutable System Edition
New Thread
Popular Events
More
论坛内有一个帖子说 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文件读写机制及优化方式