IO调度算法的简单学习与整理


前言

前几天整理了 /sys/block/sda/queue/nr_requests
以及 /sys/block/sda/device/queue_depth 的两个参数 # 没别的意思 我就是再背一遍,怕自己记性不好记不住.
其实队列数量和队列参数之外还有一些调度算法.
所以今天想继续研究一下IO的调度算法.
当然了一样还是学习使用chatGPT
但是发现好多结果都是在瞎扯, 需要使用者有一定的基础知识,不然就被蒙蔽了.

chatgpt的一些结果

NOOP、CFQ(Cooperative Fair Queuing)、Deadline 和 C-Deadline 等是常见的硬盘 IO 调度算法,其中 NOOP、Deadline 和 C-Deadline 都属于简单的调度算法。这里具体解释三种调度算法:

NOOP 调度算法
NOOP 是 Linux 操作系统默认的 I/O 调度算法。它非常简单,不会改变请求队列中的顺序,只是按照到达先后依次处理请求。NOOP 调度算法适用于具有较快的硬盘传输速度的 IO 请求,因为它不需要任何调度操作,且没有额外的 CPU 开销。 Deadline 调度算法
Deadline 调度算法是一个混合算法,可以避免读取和写入请求之间的互相等待。请求先被排序,然后根据请求的读取时间和写入时间来排列和处理请求。如果到达了读取时间点,则进行读取操作。如果到达了写入时间点,则进行写入操作。如果都到达了就先处理到达时间较早的请求,以保证公平性。 Deadline 调度算法适用于同时具有读取和写入请求的应用程序,因为它可以让等待时间最久的请求成为下一个处理的请求,从而避免延迟时间过长。 C-Deadline 调度算法
C-Deadline 调度算法是在 Deadline 调度算法的基础上进行改进得到的。它引入了数据分类的概念,让读取请求和写入请求在不同的数据分类中,从而避免了读取和写入请求之间的互相等待。同时,它也遵循 Deadline 的优先级规则,当同时到达读取和写入请求时,总是先处理到达时间较早的请求。 C-Deadline 调度算法适用于高 I/O 并发的应用程序,具有快速的响应速度,可以有效地平衡读取和写入请求,同时保障高容量和高吞吐率的数据传输。

修改参数的方法

在 Linux 中,可以通过以下两种方式修改磁盘 IO 调度算法:

1. 修改内核参数

修改内核参数可以直接影响系统所使用的默认 IO 调度算法。用户可以通过编辑 `/etc/default/grub` 或 `/boot/grub2/grub.cfg` 文件,将 `elevator` 参数的值更改为想要使用的 IO 调度算法的名称,例如:

GRUB_CMDLINE_LINUX="elevator=deadline"

这样就将默认的 CFQ IO 调度算法更改为 Deadline 调度算法。注意,在修改完这个参数后,需要重启系统才能生效。

2. 使用 Sysfs

Sysfs 是一个内核文件系统,它提供了一种访问内核参数的方法。在使用 Sysfs 调整 IO 调度算法时,可以修改 `/sys/block/设备名/queue/scheduler` 文件。例如,使用以下命令将 sda 硬盘设备的默认 IO 调度算法更改为 Deadline 算法:

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

同样需要注意,这个操作是直接修改内核参数而不引起永久性变化,一旦系统重启,操作将会失效。

总之,这些方法可以帮助用户选择合适的 IO 调度算法,以适应特定硬件设备和应用程序的需要,从而提高系统的 I/O 性能和结构效率。

修改说明

建议修改 sys 文件系统 而不是修改grub .

grub 是全局生效.

但是 sys 文件系统应该是针对不同文件系统来生效
需要注意: 方括号里面的是当前选定的调度策略
记录如下:
[root@testsvr116 init.d]# cat /sys/block/sda/queue/scheduler
noop [deadline] cfq
[root@testsvr116 init.d]# echo noop > /sys/block/sda/queue/scheduler
[root@testsvr116 init.d]# cat /sys/block/sda/queue/scheduler
[noop] deadline cfq
[root@testsvr116 init.d]#

IO调度算法的简单学习与整理的更多相关文章

  1. iOS 开发学习资料整理(持续更新)

      “如果说我看得比别人远些,那是因为我站在巨人们的肩膀上.” ---牛顿   iOS及Mac开源项目和学习资料[超级全面] http://www.kancloud.cn/digest/ios-mac ...

  2. iOS 学习资料整理

    iOS学习资料整理 https://github.com/NunchakusHuang/trip-to-iOS 很好的个人博客 http://www.cnblogs.com/ygm900/ 开发笔记 ...

  3. Deep Learning(深度学习)学习笔记整理系列之(五)

    Deep Learning(深度学习)学习笔记整理系列 zouxy09@qq.com http://blog.csdn.net/zouxy09 作者:Zouxy version 1.0 2013-04 ...

  4. Deep Learning(深度学习)学习笔记整理系列之(七)

    Deep Learning(深度学习)学习笔记整理系列 zouxy09@qq.com http://blog.csdn.net/zouxy09 作者:Zouxy version 1.0 2013-04 ...

  5. Deep Learning(深度学习)学习笔记整理系列之(六)

    Deep Learning(深度学习)学习笔记整理系列 zouxy09@qq.com http://blog.csdn.net/zouxy09 作者:Zouxy version 1.0 2013-04 ...

  6. Deep Learning(深度学习)学习笔记整理系列之(四)

    Deep Learning(深度学习)学习笔记整理系列 zouxy09@qq.com http://blog.csdn.net/zouxy09 作者:Zouxy version 1.0 2013-04 ...

  7. Deep Learning(深度学习)学习笔记整理系列之(三)

    Deep Learning(深度学习)学习笔记整理系列 zouxy09@qq.com http://blog.csdn.net/zouxy09 作者:Zouxy version 1.0 2013-04 ...

  8. IO调度算法的理解(转载)

    IO调度器(IO Scheduler)是操作系统用来决定块设备上IO操作提交顺序的方法.存在的目的有两个,一是提高IO吞吐量,二是降低IO响应时间.然而IO吞吐量和IO响应时间往往是矛盾的,为了尽量平 ...

  9. 超全PHP学习资源整理:入门到进阶系列

    PHP是少数几门在语言层面饱受诟病,但在实际开发和应用上却又让人无法撒手的语言之一.就好比路边摊小吃,一遍骂人家不卫生,一遍却又说:真香.所谓接地气,不外如此,大道理不说,PHP光是轮子多.市场占有率 ...

  10. 第二弹:超全Python学习资源整理(进阶系列)

    造一个草原要一株三叶草加一只蜜蜂.一株三叶草,一只蜂,再加一个梦.要是蜜蜂少,光靠梦也行. - 狄金森 "成为编程大牛要一门好语言加一点点天分.一门好语言,一点点天分,再加一份坚持.要是天分 ...

随机推荐

  1. 2023-08-26:请用go语言编写。开心一下的智力题: 有一个村庄,一共250人, 每一个村民要么一定说谎,要么只说真话, 村里有A、B、C、D四个球队,且每个村民只会喜欢其中的一支球队, 但是说

    2023-08-26:请用go语言编写.开心一下的智力题: 有一个村庄,一共250人, 每一个村民要么一定说谎,要么只说真话, 村里有A.B.C.D四个球队,且每个村民只会喜欢其中的一支球队, 但是说 ...

  2. GitHub星标1k+的C#/.NET/.NET Core学习、工作、面试指南(让现在的自己不再迷茫✨)

    缘起 概述:发现现如今网上关于Java.前端.Android.Golang...等相关技术的学习资料,面试指南一搜都是一大把,但是我们大.NET/C#的相关学习资料,面试指南和一些常见的面试题都是寥寥 ...

  3. linux中创建用户组

    1.打开终端并以 root 用户身份登录到 Linux 系统. 2.运行以下命令以创建一个用户组: sudo groupadd group_name 将 "group_name" ...

  4. 大地经纬度坐标系与Web墨卡托坐标系的转换

    目录 1. 概述 2. 实现 3. 参考 1. 概述 我在<大地经纬度坐标与地心地固坐标的的转换>这篇文章中已经论述了大地坐标系/地理坐标系的概念,简单来说就是由经度.纬度以及高程(BLH ...

  5. GaussDB(DWS)迁移:一种执行高效的TereData的marco迁移方案

    摘要:提供一种执行高效的TereData的marco迁移方案. 本文分享自华为云社区<GaussDB(DWS)迁移 - teredata兼容 -- macro兼容 # [玩转PB级数仓Gauss ...

  6. 打破“双十定律”,华为云AI推动超级抗菌药Drug X研发加速

    摘要:学科交叉已经逐渐变成了科技创新的一个主要源泉,成为这个科学时代一个不可替代的研究范式.在科技与技术合力赋能之下,中国科研人创新奋斗再出新成果,人类与病菌的博弈因此有了新武器. 本文分享自华为云社 ...

  7. hadoop清空回收站命令

    直接删除目录(不放入回收站) hdfs dfs -rm -skipTrash /tmp/aaa 清空回收站 hdfs dfs -expunge 执行完命令后,回收站的数据会在一分钟后清除.

  8. OpenSSL 升级、回滚

    ImportError: urllib3 v2.0 only supports OpenSSL 1.1.1+, currently the 'ssl' module is compiled with ...

  9. MongoDB 副本模式,会映射到本地 127.0.0.1 错误

    基于 MongoDB 读写分离--Windows MongoDB 副本集配置 ,里面配置了一个坑,导致出现下列错误 [2021-05-10 10:06:11.981] [cluster-Cluster ...

  10. SQL Server 锁表

    select request_session_id spid,OBJECT_NAME(resource_associated_entity_id) tableName from sys.dm_tran ...