我的编程空间,编程开发者的网络收藏夹
学习永远不晚

linux中如何修改磁盘调度算法

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

linux中如何修改磁盘调度算法

linux中如何修改磁盘调度算法,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

IO调度器的总体目标是希望让磁头能够总是往一个方向移动,移动到底了再往反方向走,这恰恰就是现实生活中的电梯模型,所以IO调度器也被叫做电梯. (elevator)而相应的算法也就被叫做电梯算法.而Linux中IO调度的电梯算法有好几种,一个叫做as(Anticipatory),一个叫做 cfq(Complete Fairness Queueing),一个叫做deadline,还有一个叫做noop(No Operation).具体使用哪种算法我们可以在启动的时候通过内核参数elevator来指定.

一)I/O调度的4种算法
1)CFQ(完全公平排队I/O调度程序)
特点:
在最新的内核版本和发行版中,都选择CFQ做为默认的I/O调度器,对于通用的服务器也是最好的选择.
CFQ试图均匀地分布对I/O带宽的访问,避免进程被饿死并实现较低的延迟,是deadline和as调度器的折中.
CFQ对于多媒体应用(video,audio)和桌面系统是最好的选择.
CFQ赋予I/O请求一个优先级,而I/O优先级请求独立于进程优先级,高优先级的进程的读写不能自动地继承高的I/O优先级.

工作原理:
CFQ为每个进程/线程,单独创建一个队列来管理该进程所产生的请求,也就是说每个进程一个队列,各队列之间的调度使用时间片来调度,
以此来保证每个进程都能被很好的分配到I/O带宽.I/O调度器每次执行一个进程的4次请求.

2)NOOP(电梯式调度程序)
特点:
在Linux2.4或更早的版本的调度程序,那时只有这一种I/O调度算法.
NOOP实现了一个简单的FIFO队列,它像电梯的工作主法一样对I/O请求进行组织,当有一个新的请求到来时,它将请求合并到最近的请求之后,以此来保证请求同一介质.
NOOP倾向饿死读而利于写.
NOOP对于闪存设备,RAM,嵌入式系统是最好的选择.
电梯算法饿死读请求的解释:
因为写请求比读请求更容易.
写请求通过文件系统cache,不需要等一次写完成,就可以开始下一次写操作,写请求通过合并,堆积到I/O队列中.
读请求需要等到它前面所有的读操作完成,才能进行下一次读操作.在读操作之间有几毫秒时间,而写请求在这之间就到来,饿死了后面的读请求.

3)Deadline(截止时间调度程序)
特点:
通过时间以及硬盘区域进行分类,这个分类和合并要求类似于noop的调度程序.
Deadline确保了在一个截止时间内服务请求,这个截止时间是可调整的,而默认读期限短于写期限.这样就防止了写操作因为不能被读取而饿死的现象.
Deadline对数据库环境(ORACLE RAC,MYSQL等)是最好的选择.

4)AS(预料I/O调度程序)
特点:
本质上与Deadline一样,但在最后一次读操作后,要等待6ms,才能继续进行对其它I/O请求进行调度.
可以从应用程序中预订一个新的读请求,改进读操作的执行,但以一些写操作为代价.
它会在每个6ms中插入新的I/O操作,而会将一些小写入流合并成一个大写入流,用写入延时换取最大的写入吞吐量.
AS适合于写入较多的环境,比如文件服务器
AS对数据库环境表现很差.


查看当前系统支持的IO调度算法
dmesg | grep -i scheduler
[root@localhost ~]# dmesg | grep -i scheduler
io scheduler noop registered
io scheduler anticipatory registered
io scheduler deadline registered
io scheduler cfq registered (default)

查看当前系统的I/O调度方法:
cat /sys/block/sda/queue/scheduler
noop anticipatory deadline [cfq]


临地更改I/O调度方法:
例如:想更改到noop电梯调度算法:
echo noop > /sys/block/sda/queue/scheduler


想永久的更改I/O调度方法:
修改内核引导参数,加入elevator=调度程序名
CentOS7:
[root@localhost ~]# grubby --update-kernel=ALL --args="elevator=deadline"
[root@localhost ~]# reboot
[root@localhost ~]# cat /sys/block/sda/queue/scheduler
noop [deadline] cfq 
CentOS6:
# vim /boot/grub/menu.lst
更改到如下内容: ## 在 rhgb quiet 前添加 elevator=deadline 
kernel /boot/vmlinuz-2。6。32-504.el6 ro root=LABEL=/ elevator=deadline rhgb quiet

重启之后,查看调度方法:
cat /sys/block/sda/queue/scheduler
noop anticipatory [deadline] cfq
已经是deadline了

关于linux中如何修改磁盘调度算法问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注编程网行业资讯频道了解更多相关知识。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

linux中如何修改磁盘调度算法

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

linux中如何修改磁盘调度算法

linux中如何修改磁盘调度算法,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。IO调度器的总体目标是希望让磁头能够总是往一个方向移动,移动到底了再往反方向走,这恰恰就是现实
2023-06-06

Linux系统中如何更改I/O调度器

本篇文章给大家分享的是有关Linux系统中如何更改I/O调度器,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。Linux I/O 调度器是Linux内核中的一个组成部分,是一个以
2023-06-28

linux中如何修改磁盘镜像来创建基于树莓派的家庭实验室

这篇文章主要为大家展示了“linux中如何修改磁盘镜像来创建基于树莓派的家庭实验室”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“linux中如何修改磁盘镜像来创建基于树莓派的家庭实验室”这篇文章
2023-06-16

在Go语言中如何解决并发任务的调度算法优化问题?

在Go语言中如何解决并发任务的调度算法优化问题?Go语言作为一门旨在解决并发编程问题的语言,提供了丰富的并发特性和机制。然而,在实际应用中,我们常常遇到需要优化并发任务调度的问题。本文将介绍一种优化并发任务调度算法的方法,并给出具体的代码示
2023-10-22

linux如何一旦应用程序对这个文件执行了写操作,使系统立刻把修改的结果写到磁盘

Linux通过以下方法实现应用程序写操作后立即写入磁盘的功能:同步I/O:强制等待数据写入磁盘后继续执行。异步I/O:允许立即继续执行,但可能存在数据丢失风险。文件系统缓存:缓存数据,提高性能,但可能导致数据不一致。文件系统写入屏障:强制将缓存中的更改写入磁盘。数据持久化库:提供更高级的数据持久化特性。选择最佳方法取决于应用程序的具体需求和性能与数据完整性的权衡。建议遵循最佳实践,例如选择合适的写入策略、使用文件系统写入屏障和定期执行sync系统调用,以优化写入性能并保证数据完整性。
linux如何一旦应用程序对这个文件执行了写操作,使系统立刻把修改的结果写到磁盘
2024-04-02

Windows 7系统中如何查看和修改计算机名、域和工作组? 方法介绍

Windows 7我们告诉您Windows 7系统中查看和修改计算机python名、域和工作组方法于步骤,有兴趣的朋友们可以看一看1,开始菜单右键点击“计php算机”,选择“属性&rdquowww.cpp
2023-05-29

编程热搜

目录