【RHCA+】IO调度算法

" 目录:RHCA+ -> 13 系统调优 -> 10 IO调度算法 "

随机读取时,大量时间移动磁头,移动过程浪费了时间;而顺序读取没有大量寻址时间,所以速度会更快;IO调度算法就是合并相近的IO请求,减少寻址时间

一、电梯算法,FIFO队列

noop

红帽7

对请求做简单的排序后,合并临近IO请求存储;按先后顺序执行IO

ceph集群中,SSD磁盘推荐使用

none

红帽8改进

无任何调优参数,本质上不做调优

因为调度是为了合并IO,减少寻址时间,而使用固态硬盘情况下,不用磁头寻址,所以固态盘适用此算法,还能减少算法消耗的cpu时间

二、完全公平调度器

cfq(Completely Fair Scheduler)

红帽7(默认调度算法)

为每个进程和线程单独创建一个队列,并为每个队列分配时间片,排队依次公平地访问存储;按IO请求地址

ceph集群中,适合多个进程同时读写磁盘,且请求大小不同;多任务处理,办公多窗口等场景

bfq

红帽8改进

三、截止时间调度算法,尽力而为地保障请求时延

deadline:单队列截止时间调度算法

红帽7

为读IO(最大等待时间500ms)和写IO(最大等待时间5s)分配不同的FIFO队列,将提交时间相近的请求放到同一批,当队列满或达到最大等待时间,则进行IO合并再写盘

读写分离,且读更优先;减少磁盘抖动,保障IO最大等待时间在可控范围内;单队列

ceph集群中,sata和sas建议使用

mq-deadline:多队列截止时间调度算法

红帽8改进(默认调度算法)

适合高并发的web服务、数据库,但IO小

四、令牌环

kyber

给每一个请求一个令牌(时间片),当IO的令牌消耗完后,不管是否处理完,由下一个由令牌的请求进行IO操作,未执行完的请求再次等待被分配令牌

较少使用此算法

root@wuzuniao \~# dmesg | grep -I scheduler #查看当前系统支持的调度算法

0.100093 rcu: RCU calculated value of scheduler-enlistment delay is 100 jiffies.

0.422262 io scheduler mq-deadline registered

0.422264 io scheduler kyber registered

0.422347 io scheduler bfq registered

root@wuzuniao \~# cat /sys/block/sda/queue/scheduler #查看指定磁盘使用的调度算法;默认算法mq-deadline

mq-deadline kyber bfq none

root@wuzuniao \~# ll /sys/block/sda/queue/iosched/ #查看当前算法所支持的参数

总用量 0

-rw-r--r--. 1 root root 4096 7月 8 21:27 fifo_batch #一次性处理多少IO,默认16

-rw-r--r--. 1 root root 4096 7月 8 21:27 front_merges #是否进行IO合并,默认为1合并

-rw-r--r--. 1 root root 4096 7月 8 21:27 read_expire #读过期时间

-rw-r--r--. 1 root root 4096 7月 8 21:27 write_expire #写过期时间

-rw-r--r--. 1 root root 4096 7月 8 21:27 writes_starved

root@wuzuniao \~# echo bfq > /sys/block/sda/queue/scheduler #修改算法

root@wuzuniao \~# cat /sys/block/sda/queue/scheduler #再次查看,可以看到算法已变更

mq-deadline kyber bfq none

root@wuzuniao \~# ll /sys/block/sda/queue/iosched/ #看到算法对应的可调参数已发生变更

总用量 0

-rw-r--r--. 1 root root 4096 7月 8 21:28 back_seek_max

-rw-r--r--. 1 root root 4096 7月 8 21:28 back_seek_penalty

-rw-r--r--. 1 root root 4096 7月 8 21:28 fifo_expire_async

-rw-r--r--. 1 root root 4096 7月 8 21:28 fifo_expire_sync

-rw-r--r--. 1 root root 4096 7月 8 21:28 low_latency

-rw-r--r--. 1 root root 4096 7月 8 21:28 max_budget

-rw-r--r--. 1 root root 4096 7月 8 21:28 slice_idle

-rw-r--r--. 1 root root 4096 7月 8 21:28 slice_idle_us

-rw-r--r--. 1 root root 4096 7月 8 21:28 strict_guarantees

-rw-r--r--. 1 root root 4096 7月 8 21:28 timeout_sync

root@wuzuniao \~#

相关推荐
wacsii30 分钟前
【Linux进程(四)】命令行参数与环境变量
linux·服务器
无奈笑天下32 分钟前
银河麒麟上lsblk命令教程详解
linux·运维·服务器·数据库
科研邪修法2 小时前
培训PDF保护配置:把需求转换成可验收权限
linux·服务器·网络
Felven2 小时前
中科驭数100G网卡RDMA性能测试
linux·rdma·中科驭数·100g网卡
Lansonli4 小时前
大数据Spark(八十八):Spark任务资源之Standalone集群测试
java·服务器·spark
雪落漂泊5 小时前
Liunux进程(七):程序控制篇(中)
linux·运维·windows
俊俊几年的5 小时前
动态规划(Dynamic Programming)详解:从入门到 LeetCode Hot 100
linux·c++·算法·leetcode·嵌入式·动态规划·c
星恒随风14 小时前
MySQL 从零入门(五):MySQL 内置函数详解——日期、字符串、数学函数与实战案例
linux·数据库·笔记·sql·mysql
可乐ea17 小时前
智能体记忆该拆成几层:笔记、记忆表示与注入上下文
服务器·数据库·笔记·ai智能体·提示词工程·上下文工程·记忆系统