签到成功

知道了

CNDBA社区CNDBA社区

Linux 优化 IO调度策略( I/O Scheduler) 说明

2023-04-23 21:55 1112 0 原创 Linux
作者: dave

Linux I/O调度器(Linux I/O Scheduler)Linux内核中的一个组成部分,是LinuxI/O体系的一个组件,它介于通用块层和块设备驱动程序之间,可以通过调整调度器来优化系统性能。

1.调度算法说明

目前 Linux 上主要有如下几种 I/O 调度算法:

  1. noop(No Operation) : noop称为电梯调度算法,是基于FIFO队列实现的。所有的请求都是先进先出的,因为SSD的随机读、随机写速度快,因此该算法适合SSD硬盘。
  2. cfq(Completely Fair Scheduler ) :完全公平调度器。进程平均使用IO带宽。cfq称为绝对公平调度算法,为每个进程及线程单独创建一个队列来管理IO请求,起到每个进程和线程均匀分布IO的效果。此算法适用于通用服务器,centos6中为默认的IO调度算法。
  3. Deadline : 针对延迟的调度器,每一个 I/O,都有一个最晚执行时间。Deadline在机械盘的情况下对数据库环境(ORACLE RAC,MySQL等)是最好的选择。cfq称为绝对公平调度算法,为每个进程及线程单独创建一个队列来管理IO请求,起到每个进程和线程均匀分布IO的效果。此算法适用于通用服务器,centos6中为默认的IO调度算法。

2.查看和修改调度算法

在Linux 7中有如下类型:

http://www.cndba.cn/dave/article/116571

[dave@www.cndba.cn www]# dmesg | grep -i scheduler
[    1.307640] io scheduler noop registered
[    1.308944] io scheduler deadline registered (default)
[    1.310445] io scheduler cfq registered
[    1.311733] io scheduler mq-deadline registered
[    1.313133] io scheduler kyber registered
[dave@www.cndba.cn www]#

在Linux 6中有如下类型:

http://www.cndba.cn/dave/article/116571

[dave@www.cndba.cn www]# dmesg | grep -i scheduler
io scheduler noop registered
io scheduler anticipatory registered
io scheduler deadline registered
io scheduler cfq registered (default)

这里要注意,CentOS 7.x中默认支持的是deadline算法,CentOS 6.x下默认支持的cfq算法。http://www.cndba.cn/dave/article/116571

当然也可以查看和修改每个磁盘的IO Scheduler。

http://www.cndba.cn/dave/article/116571

[root@hf-172-31-101-17 ~]# cat /sys/block/sda/queue/scheduler 
noop [deadline] cfq 
[root@hf-172-31-101-17 ~]#

临时修改为noop算法http://www.cndba.cn/dave/article/116571

[dave@www.cndba.cn ~]# echo 'noop' >/sys/block/sda/queue/scheduler
[dave@www.cndba.cn ~]# cat /sys/block/sda/queue/scheduler 
[noop] deadline cfq

临时修改为cfq算法

[dave@www.cndba.cn ~]# echo 'cfq' >/sys/block/sda/queue/scheduler 
[dave@www.cndba.cn ~]# cat /sys/block/sda/queue/scheduler 
noop deadline [cfq]

永久生效的方法

CentOS 7.x
#grubby --update-kernel=ALL --args="elevator=deadline"
#reboot
#cat /sys/block/sda/queue/scheduler
noop [deadline] cfq

CentOS 6.x
vim /boot/grub/menu.lst 或vim /boot/grub/grub.conf

更改如下内容
kernel /boot/vmlinuz.......... elevator=deadline rhgb quiet

3.性能压测数据对比

根据前面的说明,简单的说就是:http://www.cndba.cn/dave/article/116571

  1. SSD盘使用: noop/deadline
  2. SAS盘: deadline

因为在CentOS 7 以后默认就是deadline,所以在linux 7以后基本可以不用调整,但在Linux 6中还是需要注意下IO Scheduler。http://www.cndba.cn/dave/article/116571http://www.cndba.cn/dave/article/116571

如下是基于SSD 对MySQL进行sysbench 进行压力测试的一个结果,可以看出在SSD盘情况下选择noop磁盘IO调度算法确实最优的。http://www.cndba.cn/dave/article/116571http://www.cndba.cn/dave/article/116571

算法 IOPS 磁盘写速度 IOPS 磁盘读速度 oltp_write_only oltp_read_only
deadline 6935.37 118.37MiB/s 7956.88 124.33MiB/s TPS为491.43 ,查询次数为2948.62 TPS为393.13 ,查询次数为6290.13
noop 7057.60 110.27MiB/s 8399.89 131.25MiB/s TPS为 544.38 ,查询次数为3266.28 TPS为 379.97,查询次数为6079.59
cfq 6614.37 103.35MiB/s 7481.39 116.90MiB/s TPS为498.54 ,查询次数为2991.25 TPS为 344.66,查询次数为5514.58

版权声明:本文为博主原创文章,未经博主允许不得转载。

用户评论
* 以下用户言论只代表其个人观点,不代表CNDBA社区的观点或立场
dave

dave

关注

人的一生应该是这样度过的:当他回首往事的时候,他不会因为虚度年华而悔恨,也不会因为碌碌无为而羞耻;这样,在临死的时候,他就能够说:“我的整个生命和全部精力,都已经献给世界上最壮丽的事业....."

  • 2239
    原创
  • 3
    翻译
  • 547
    转载
  • 186
    评论
  • 访问:6658524次
  • 积分:4249
  • 等级:核心会员
  • 排名:第1名
精华文章
    最新问题
    查看更多+
    热门文章
      热门用户
      推荐用户
        Copyright © 2016 All Rights Reserved. Powered by CNDBA · 皖ICP备2022006297号-1·

        QQ交流群

        注册联系QQ