问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

谁有linux i/o 调度算法deadline,anticipatory,noop,cfq中各个调优参数的具体作用。

发布网友 发布时间:2022-04-13 19:01

我来回答

3个回答

懂视网 时间:2022-04-13 23:23

IO调度器(IO Scheduler)是操作系统用来决定块设备上IO操作提交顺序的方法。存在的目的有两个,一是提高IO吞吐量,二是降低IO响

一. IO调度器(IO Scheduler)是操作系统用来决定块设备上IO操作提交顺序的方法。存在的目的有两个,一是提高IO吞吐量,二是降低IO响应时间。然而IO吞吐量和IO响应时间往往是矛盾的,为了尽量平衡这两者,IO调度器提供了多种调度算法来适应不同的IO请求场景。其中,对数据库这种随机读写的场景最有利的算法是DEANLINE。接着我们按照从简单到复杂的顺序,下面是Linux 2.6内核提供的几种IO调度算法。

1、NOOP
NOOP算法的全写为No Operation。该算法实现了最最简单的FIFO队列,所有IO请求大致按照先来后到的顺序进行操作。之所以说“大致”,原因是NOOP在FIFO的基础上还做了相邻IO请求的合并,并不是完完全全按照先进先出的规则满足IO请求。
假设有如下的io请求序列:
100,500,101,10,56,1000
NOOP将会按照如下顺序满足:
100(101),500,10,56,1000

2、CFQ
CFQ算法的全写为Completely Fair Queuing。该算法的特点是按照IO请求的地址进行排序,而不是按照先来后到的顺序来进行响应。
假设有如下的io请求序列:
100,500,101,10,56,1000
CFQ将会按照如下顺序满足:
100,101,500,1000,10,56

在传统的SAS盘上,磁盘寻道花去了绝大多数的IO响应时间。CFQ的出发点是对IO地址进行排序,以尽量少的磁盘旋转次数来满足尽可能多的IO请求。在CFQ算法下,SAS盘的吞吐量大大提高了。但是相比于NOOP的缺点是,先来的IO请求并不一定能被满足,可能会出现饿死的情况。

3、DEADLINE
DEADLINE在CFQ的基础上,,解决了IO请求饿死的极端情况。除了CFQ本身具有的IO排序队列之外,DEADLINE额外分别为读IO和写IO提供了FIFO队列。读FIFO队列的最大等待时间为500ms,写FIFO队列的最大等待时间为5s。FIFO队列内的IO请求优先级要比CFQ队列中的高,,而读FIFO队列的优先级又比写FIFO队列的优先级高。优先级可以表示如下:
FIFO(Read) > FIFO(Write) > CFQ

4、ANTICIPATORY
CFQ和DEADLINE考虑的焦点在于满足零散IO请求上。对于连续的IO请求,比如顺序读,并没有做优化。为了满足随机IO和顺序IO混合的场景,Linux还支持ANTICIPATORY调度算法。ANTICIPATORY的在DEADLINE的基础上,为每个读IO都设置了6ms的等待时间窗口。如果在这6ms内OS收到了相邻位置的读IO请求,就可以立即满足。

二. Linux操作系统IO调度器算法的查看和修改(以CentOS5.5为例):


[root@dbserver2 ~]# cat /etc/RedHat-release

CentOS release 5.5 (Final)

[root@dbserver2 ~]# uname -a

Linux dbserver2 2.6.18-194.el5 #1 SMP Fri Apr 2 14:58:14 EDT 2010 x86_64 x86_64 x86_64 GNU/Linux

1.机器为2.6内核,查看IO调度算法设置的方法:


[root@dbserver2 ~]# fdisk -l

Disk /dev/sda: 598.8 GB, 598879502336 bytes

255 heads, 63 sectors/track, 72809 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot Start End Blocks Id System

/dev/sda1 * 1 13 104391 83 Linux

/dev/sda2 14 65669 527381820 83 Linux

/dev/sda3 65670 68219 20482875 83 Linux

/dev/sda4 68220 72809 36869175 5 Extended

/dev/sda5 68220 70769 20482843+ 83 Linux

/dev/sda6 70770 72809 16386268+ 82 Linux swap / Solaris

[root@dbserver2 ~]#

[root@dbserver2 ~]# find / -iname "scheduler"

/sys/block/sr0/queue/scheduler

/sys/block/sda/queue/scheduler

查看系统当前IO调度算法


[root@dbserver2 ~]# cat /sys/block/sda/queue/scheduler

noop anticipatory deadline [cfq] ----括号中为当前使用的算法

2.修改IO调度算法:


[root@test80 ~]# echo deadline > /sys/block/sda/queue/scheduler

[root@test80 ~]# cat /sys/block/sda/queue/scheduler

noop anticipatory [deadline] cfq 可以看到IO调度算法已经修改为deadline

三. 针对MYSQL数据库服务器的IO调度算法优化设置:

1.CFQ使用于IO大小非常均匀的场景

2.比较复杂的OLTP环境最好使用DeadLine算法

3.IO性能不是瓶颈的时候可以使用Noop算法

4.Anticipatory不适合数据库环境,DB服务器不要使用这种算法。

5.新兴的固态硬盘比如SSD、Fusion IO上,最简单的NOOP反而可能是最好的算法,因为其他三个算法的优化是基于缩短寻道时间的,而固态硬盘没有所谓的寻道时间且IO响应时间非常短。

linux

热心网友 时间:2022-04-13 20:31

1.Deadline scheler Deadline scheler 用 deadline 算法保证对于既定的 IO 请求以最小的延迟时间,从这一点理解,对于 DSS 应用应该会是很适合的。
2.Anticipatory scheler(as) 曾经一度是 Linux 2.6 Kernel 的 IO scheler 。Anticipatory 的中文含义是”预料的, 预想的”, 这个词的确揭示了这个算法的特点,简单的说,有个 IO 发生的时候,如果又有进程请求 IO 操作,则将产生一个默认的 6 毫秒猜测时间,猜测下一个 进程请求 IO 是要干什么的。这对于随即读取会造成比较大的延时,对数据库应用很糟糕,而对于 Web Server 等则会表现的不错。这个算法也可以简单理解为面向低速磁盘的,因为那个”猜测”实际上的目的是为了减少磁头移动时间。
3.Completely Fair Queuing 虽然这世界上没有完全公平的事情,但是并不妨碍开源爱好者们设计一个完全公平的 IO 调度算法。Completely Fair Queuing (cfq, 完全公平队列) 在 2.6.18 取代了 Anticipatory scheler 成为 Linux Kernel 默认的 IO scheler 。cfq 对每个进程维护一个 IO 队列,各个进程发来的 IO 请求会被 cfq 以轮循方式处理。也就是对每一个 IO 请求都是公平的。这使得 cfq 很适合离散读的应用(eg: OLTP DB)。我所知道的企业级 Linux 发行版中,SuSE Linux 好像是最先默认用 cfq 的.
4.NOOP Noop 对于 IO 不那么操心,对所有的 IO请求都用 FIFO 队列形式处理,默认认为 IO 不会存在性能问题。这也使得 CPU 也不用那么操心。当然,对于复杂一点的应用类型,使用这个调度器,用户自己就会非常操心。追问别粘百度的啊

热心网友 时间:2022-04-13 21:49

1.Deadline调度最小延迟时间来理解这一点对于一个给定的IO请求的最后期限,截止调度算法DSS应用程序应该是非常合适的。
2.Anticipatory的调度器()曾经是一个Linux 2.6内核的IO调度。预见性的中国意义上的“预期,预计,”这个词的确揭示的算法特点,简单地说,有一个IO发生,如果另一个进程请求IO操作,它会生成一个默认的6毫秒猜来猜下道工序要做的IO请求。然后读这会造成比较大的延迟是非常糟糕的数据库应用程序,Web服务器的性能,等等都不错。该算法也可以被理解为一个简单的低速面向磁盘的,因为是“猜测”实际上是目的是为了减少磁头移动时间。

3。完全公平队列,虽然这个世界上是没有完全公平的事情,但并不妨碍开源的爱好者设计一个完全公平的IO调度算法。完全公平队列(CFQ,完全公平排队)取代预支调度中的2.6.18 Linux内核成为默认的IO调度。 CFQ IO为每个进程维护一个队列中,发送到每道工序,以循环赛的方式将CFQ IO请求。也就是说,每个IO请求是公平的。这使得它非常适合离散读的CFQ应用(例如:OLTP DB)。我所知道的企业级Linux发行版,SUSE Linux的似乎是首先使用CFQ默认。
4.NOOP NOOP担心IO,IO请求用于治疗各种形式的FIFO队列,默认视图IO性能问题就不存在了。这也使得CPU不必担心。当然,对于更复杂的应用程序类型,使用这个调度器,用户自己会很担心。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
如何做淘宝优惠券推广?能赚钱吗? 抖音商品如何上架优惠卷?优惠券怎么做? 我想问一下我有个店铺,法人不是我经营者是我,得怎么打官司? ug是什么(关于ug是什么的基本详情介绍) ug是什么意思(ug是什么) 超越前端Beyond Frontend — 吉密斯/gMIS 增加点选/PickUp概览功能_百 ... 最好用的 5 个 Vue select 单选多选下拉组件 - 卡拉云 web前端对表格某一字段进行万能查询包括(>,<,=)。字段的选值使用复合... 公司装修除甲醛除味 桑蚕丝领带怎么洗 真丝领带清洗注意事项 哪个银行可以网上办卡? 什么银行的信用卡可以在网上办理 什么银行可以网上办卡 三本大学毕业证书可以在学信网查询吗? 真心觉得喜欢看那种不但人长得很漂亮的20几岁的男孩子而且衣服也穿得很漂亮的练柔术软功的,大家有哪些感 他们表演完毕后他还详细盘问了小男孩半天问他几岁了叫什么名字在哪儿学的杂技? 杂技学校负责人回应4名男孩失联,是什么缘由让他们出走? 求一部电影~外国片,一个男孩一直喜欢一个女孩,青梅竹马。小时候男孩就演杂技给女孩看。电影结尾是女… 梦见三个小男孩在耍杂技然后就都掉下来了 08 或 07那个春晚耍杂技的小男孩是谁 14岁男孩可以学杂技吗? 《顶碗少年》中那个少年的杂技耍的好不好,厉不厉害? 为什么电脑上百度云看不了视频了,在手机上却也能 非师范类学生考教师资格证需要学习些什么课程,贵州省在哪儿能报名考,什么时间考? 男子用嘴叼板凳耍杂技,把两岁男孩悬在半空,不怕发生危险吗? 没有在贵州上学,户籍不是贵州的,临时工作在贵州,能在贵州考教师资格证吗 长安大学大一学生如何订票回家生年 本人12306系统记满14分要重新考试吗? 请问衡阳高铁学院的录取通知书怎么查,我好友的儿子到现在没通知,八成是没有录取。是否可以查到成绩 因疫情对没有考完驾照一年内到期的延期几个月? 支付宝中投资基金可以最多多少 怎么查对公账户有几个一般账户 linux io 调度 何时触发 跟女孩子说早安的话语带点表白的意思 一只成熟的大象身高多少米 大象的腿为神马那么粗? 猕猴桃单芽片腹接如何操作? ps怎样打彩色字体 ps中这种五彩字体是怎么弄出来的啊。 ps怎么弄这种彩色字体 不安抗辩权四种情形 可以行使不安抗辩权的情形有哪些 行使不安抗辩权的情形有哪些 ps 怎么把文字颜色变成想要的颜色 不安抗辩权的成立条件有哪些 履行不安抗辩权的情形 行使不安抗辩权的三个要件是什么? 不安抗辩权是什么意思 不安抗辩权成立条件是什么 不安抗辩权的行为表示方式是哪些