MySQL--linux IO调度算法
Linux下目前有4中IO调度算法:
1、CFQ(Complete Fairness Queueing,完全公平排队 I/O 调度程序)
2、NOOP(No Operation,电梯式调度程序)
3、Deadline(截止时间调度程序)
4、AS(Anticipatory,预料 I/O 调度程序)
查看当前系统支持的IO调度算法
##查看当前系统支持的IO调度算法
dmesg | grep -i scheduler
查看当前系统的IO调度算法
## 查看当前系统的IO调度算法
## 中括号括起来表示当前使用的算法
cat /sys/block/sda/queue/scheduler
修改某块硬盘的IO调度算法
## 修改某块硬盘的IO调度算法
echo cfq > /sys/block/sda/queue/scheduler
CFQ(Completely Fair Queuing)算法,绝对公平算法。它试图为竞争块设备使用权的所有进程分配一个请求队列和一个时间片,在调度器分配给进程的时间片内,进程可以将其读写请求发送给底层块设备,当进程的时间片消耗完,进程的请求队列将被挂起,等待调度。 每个进程的时间片和每个进程的队列长度取决于进程的IO优先级,每个进程都会有一个IO优先级,CFQ调度器将会将其作为考虑的因素之一,来确定该进程的请求队列何时可以获取块设备的使用权。
Noop调度算法也叫作电梯调度算法,它将IO请求放入到一个FIFO队列中,然后逐个执行这些IO请求,NOOP在FIFO的基础上对相邻的IO请求做合并,而是不是完全按照先进先出的规则。
NOOP算法特别适合那些不希望调度器重新组织IO请求顺序的应用。
1、在IO调度器下方有更加智能的IO调度设备,如RAID/SAN/NAS等存储设备,这些设备能更好地组织IO请求;
2、上层应用程序比IO调度器更懂底层设备,如上层调度器已对IO请求进行优化;
3、对于SSD等非旋转磁头的存储设备,无需IO调度器对请求进行重组。
Deadline算法的核心在于保证每个IO请求在一定的时间内一定要被服务到,以此来避免某个请求饥饿。
Deadline采用两个队列,一个队列对请求按照扇区序号进行排序,通过红黑树进行组织,另外一个队列按照请求的生成时间进行排序,由链表来组织。
所有的请求在生成时都会被赋上一个期限值(根据jiffies),并按期限值排序在fifo_list中,读请求的期限时长默认为为500ms,写请求的期限时长默认为5s,当请求超过期限值后,会被优先进行处理,以保证请求在一定时间内被服务到。
Deadline确保了在一个截止时间内服务请求,这个截止时间是可调整的,而默认读期限短于写期限.这样就防止了写操作因为不能被读取而饿死的现象.
Deadline对数据库环境(ORACLE RAC,MYSQL等)是最好的选择.
特点:
Anticipatory算法的核心是局部性原理,期望一个进程完成一次IO请求后还会继续发出IO请求,因此在一个请求完成后,会进入“假空闲”状态等待一段时间,如果等待周期内该进程有新的请求,则继续处理该进程的请求,如果没有新请求,这处理下一个进程的读写请求。
Anticipatory算法对数据库环境表现很差。
Anticipatory算法从Linux 2.6.33版本后被移除

http://www.cnblogs.com/cobbliu/p/5389556.html
http://scoke.blog.51cto.com/769125/490546
MySQL--linux IO调度算法的更多相关文章
- Linux IO调度算法
Linux IO调度算法 操作系统的调度 CPU调度 CPU scheduler IO调度 IO scheduler IO调度器的总体目标是希望让磁头能够总是往一个方向移动,移 ...
- MySQL优化--IO调度算法优化
之前已经在微信公众号分享了数据库优化的方法,链接为https://mp.weixin.qq.com/s/6Atzk9UKPJRxxAs0nsKBXg . 其中操作系统部分介绍了IO调度算法的优化,本文 ...
- linux块设备的IO调度算法和回写机制
************************************************************************************** 參考: <Linux ...
- IO调度算法的理解(转载)
IO调度器(IO Scheduler)是操作系统用来决定块设备上IO操作提交顺序的方法.存在的目的有两个,一是提高IO吞吐量,二是降低IO响应时间.然而IO吞吐量和IO响应时间往往是矛盾的,为了尽量平 ...
- Linux IO调度方法
目录 I/O调度的4种算法 I/O调度程序的测试 ionice IO调度器的总体目标是希望让磁头能够总是往一个方向移动,移动到底了再往反方向走,这恰恰就是现实生活中的电梯模型,所以IO调度器也被叫做电 ...
- Linux IO Scheduler(Linux IO 调度器)
每个块设备或者块设备的分区,都对应有自身的请求队列(request_queue),而每个请求队列都可以选择一个I/O调度器来协调所递交的request.I/O调度器的基本目的是将请求按照它们对应在块设 ...
- linux IO调度
I/O 调度算法再各个进程竞争磁盘I/O的时候担当了裁判的角色.他要求请求的次序和时机做最优化的处理,以求得尽可能最好的整体I/O性能.在linux下面列出4种调度算法CFQ (Completely ...
- Linux IO调度器相关算法介绍(转)
IO调度器(IO Scheduler)是操作系统用来决定块设备上IO操作提交顺序的方法.存在的目的有两个,一是提高IO吞吐量,二是降低IO响应时间.然而IO吞吐量和IO响应时间往往是矛盾的,为了尽量平 ...
- 阿里云主机SSD实例磁盘测试及IO调度算法调整
测试背景及环境说明 阿里云ECS 主机配置: 4C8G root@zabbix-master:~# grep -i "model name" /proc/cpuinfo model ...
随机推荐
- 用POI导出excel时,较长的数字不想被自动变为科学计数法的解决方式(转)
做过很多次导出excel了.都碰到一个问题,内容里如果包含一个比较长的数字,比如订单号“2546541656596”,excel会自动变成科学计数法... 弄过好几次都没有解决,最近又要导出excel ...
- EBS Workflow参考资料
参考资料: How to send an email from oracle workflow process using an AdHocRole? Notification System APIs ...
- dubbo使用的zk客户端
在使用dubbo的过程中,当注册中心的数据修改后,新的配置是怎样刷到consumer和provider的?本文以consumer为例,进行分析. dubbo使用的是zkclient的jar,而zkcl ...
- 玩转控件:重绘DEVEXPRESS中DateEdit控件 —— 让DateEdit支持只选择年月 (提供源码下载)
前言 上一篇博文<玩转控件:重绘ComboBox —— 让ComboBox多列显示>中,根据大家的回馈,ComboBox已经支持筛选了,更新见博文最后最后最后面. 奇葩 这两天遇到 ...
- 1strcat/strcpy应用
分析下列程序输出 #include<iostream> #include<string.h> using namespace std; int main() { ]=]=&qu ...
- C# 接收form表单中多个相同name值的问题
以前接收form表单的值直接用FormCollection或自定义类来接收,当有多个相同Name的值时会自动用“,”隔开,这样就有了一个问题,当值中本身就含有“,”时就比较难处理了. 所以解决方法就是 ...
- https://blog.csdn.net/u012150179/article/details/38091411
一 scrapy-redis实现分布式爬取分析 所谓的scrapy-redis实际上就是scrapy+redis其中对redis的操作采用redis-py客户端.这里的redis的作用以及在scrap ...
- bzoj1625
题解: 简单dp 要一维 代码: #include<bits/stdc++.h> using namespace std; ; int n,m,a[N],b[N],f[N]; int ma ...
- 51nod算法马拉松28-c
题解: 按照每一个要求,分类讨论,讨论压下去了多少 代码: #include<bits/stdc++.h> using namespace std; ,N=; int n,A,B,C,an ...
- [转载]oracle物化视图
原文URL:http://lzfhope.blog.163.com/blog/static/636399220124942523943/?suggestedreading&wumii 环境or ...