随笔 - 116  文章 - 5  评论 - 1  阅读 - 14万

linux IO 调度参数调整

目前Linux版本主要支持3种调度机制:

CFQ,完全公平队列调度。
早期Linux 内核的默认调度算法,它给每个进程分配一个调度队列,默认以时间片和请求数限定的方式分配IO资源,以此保证每个进程的 IO 资源占用是公平的。这个算法在IO压力大,且IO主要集中在某几个进程的时候,性能不太友好。

DeadLine,最终期限调度。
这个调度算法维护了4个队列,读队列,写队列,超时读队列和超时写队列。当内核收到一个新请求时,如果能合并就合并,如果不能合并,就会尝试排序。如果既不能合并,也没有合适的位置插入,就放到读或写队列的最后。一定时间后, I/O调度器会将读或写队列的请求分别放到超时读队列或者超时写队列。这个算法并不限制每个进程的IO资源,适合IO压力大且IO集中在某几个进程的场景,比如大数据、数据库使用HDD磁盘的场景。

NOOP,也叫NONE,是一种简单的FIFO调度策略。
因为固态硬盘支持随机读写,所以固态硬盘可以选择这种最简单的调度策略,性能最好

具体调整 /sys/block/device/queue/scheduler 文件

目前机械盘 SDA 选用 DeadLine 固态盘 SSD 选用 NOOP 云上宿主机都是NOOP

 临时生效的方法

echo deadline > /sys/block/sda/queue/scheduler

永久生效的方法

grubby --update-kernel=ALL --args="elevator=deadline"

reboot

-------------------------------------------------------------------------------------------------------------------------------

echo 512 > /sys/block/sda/queue/nr_requests (默认值是128)

有大量的读请求,默认的请求队列应付不过来,可以提高这个值。缺点是要牺牲一定的内存。

 

posted on   JennyYu  阅读(455)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示