磁盘IO调度算法及配置方法[特指kylin、suse]"/>
linux操作系统SSD磁盘IO调度算法及配置方法[特指kylin、suse]
简述总结
磁盘IO调度算法由linux内核提供支持,在各种linux发行版都可以设置并适用
1、查询磁盘名称
lsblk
2、查看具体盘的算法策略
suse与kylin操作系统查看方法一致
cat /sys/block/sdx具体盘名称/queue/scheduler
如:cat /sys/block/sda/queue/scheduler
显示结果中方括号括住的为当前磁盘IO调度算法
3、临时调整磁盘IO调度算法,重启失效
suse与kylin操作系统查看方法一致
以mq-deadline举例
echo mq-deadline >/sys/block/sdx具体盘名称/queue/scheduler
4、永久调整磁盘IO调度算法
a.kylin操作系统
方法一:可对单个磁盘进行调整,如磁盘设备号发生变化需即使调整/etc/rc.d/rc.local对应磁盘号内容
vi /etc/rc.d/rc.local
加入以下内容
echo mq-deadline >/sys/block/sdx具体盘名称/queue/scheduler
退出保存(:wq!)后重启操作系统(reboot)
方法二:对所有磁盘进行调整,即使因磁盘增减导致设备号发生变化也不影响
vi /lib/udev/rules.d/60-block-scheduler.rules
将双引号中的算法替换为mq-deadline
退出保存(:wq!)后重启操作系统(reboot)
b.suse操作系统
方法一:可对单个磁盘进行调整
vi /etc/init.d/after.local
添加以下内容
echo noop > /sys/block/sdx具体盘名称/queue/scheduler
退出保存(:wq!)后重启操作系统(reboot)
方法二:对所有磁盘进行调整
修改grub配置文件
vi /etc/default/grub
在GRUB_CMDLINE_DEFAULT=最后加上要使用的算法
GRUB_CMDLINE_DEFAULT="...省略...,high elevator=noop"
退出保存(:wq!)
grub2-mkconfig -o /boot/grub2/grub.cfg
重启操作系统(reboot)
详细解释
背景
数据库测试中通过查看报表发现日志落盘等待时间异常久,单独对磁盘读写性能测试发现磁盘类型(SSD)及读写速率均正常,考虑到物理机未设置操作系统的相关参数,逐步排查发现磁盘调度算法为kylin v10默认的bfq算法,调整磁盘算法为noop/mq-deadline后,数据库性能测试结果大幅提高。
kylin几种调度算法及适用场景
bfq(suse对应为cfq)
cfq(completely fair queuing),完全公平调度算法, 简单来说根据不同优先级(比如IO优先级)给所有同步进程分配不同的队列长度和时间片,CFQ均匀地分布对IO带宽的访问,在调度器分配给进程的时间片内,进程可以将其读写请求发送给底层块设备,当进程的时间片消耗完,进程的请求队列将被挂起,等待调度。
特点: 这种算法不按照先来后到的顺序;确保单个任务永远不会使用IO带宽;侧重于提供最低的延迟,而不是最大的吞吐量
适用场景: 适用于有大量进程的多用户系统,适合于桌面系统和交互式多任务及多媒体应用。
mq-deadline(suse对应为deasline)
DEADLINE算法(截止时间调度): 分别为读I/O和写I/O提供不同的FIFO队列,将请求排序为读或写批量处理,读FIFO队列的最大等待时间是500ms,写FIFO队列的最大等待时间是5s。deadline会把提交时间相近的请求放在一批。在同一批中,请求会被排序。当一批请求达到了大小上限或着定时器超时,这批请求就会提交到设备队列上去。(mq-deadline)按照逻辑块寻址(LBA)递增顺序安排他们的执行,读批处理优先于写批处理,因为应用程序更有节能阻塞读IO操作
特点: 在CFQ的基础上,deadline确保请求在一个用户可配置的时间内得到响应,避免请求饿死。
适用场景: 大多数场景,尤其是读操作比写操作频繁的情况,IO任务比较重的web、数据库服务器。
kyber
适用场景: 虚拟机、快速设备
none(suse 对应为noop)
NOOP, No Operation. 什么都不做,请求来一个处理一个,实现先进先出掉队算法
适用场景: SSD固态硬盘
更多推荐
linux操作系统SSD磁盘IO调度算法及配置方法[特指kylin、suse]
发布评论