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)
有大量的读请求,默认的请求队列应付不过来,可以提高这个值。缺点是要牺牲一定的内存。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?