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 ...
随机推荐
- C# winform对话框用法大全
对话框中我们常用了以下几种:1.文件对话框(FileDialog) 它又常用到两个: 打开文件对话框(OpenFileDialog) 保存文件对话(SaveFileDialog)2.字体对话框(F ...
- Android之ToolBar的使用
Toolbar是在 Android 5.0 开始推出的一个 Material Design 风格的导航控件 ,Google 非常推荐大家使用 Toolbar 来作为Android客户端的导航栏,以此来 ...
- Html显示地图
Html可以通过JS来实现第三方地图的显示,如: 高德: 效果如下:浏览器小区域和全屏展示 代码如下:把key换成自己申请的key值 <script type="text/javasc ...
- Memory and Casinos CodeForces - 712E (概率,线段树)
题目链接 题目大意:$n$个点, 每个点$i$有成功率$p_i$, 若成功走到$i+1$, 否则走到走到$i-1$, 多组询问, 求从$l$出发, 在$l$处不失败, 最后在$r$处胜利的概率 设$L ...
- ajax post data 获取不到数据,注意contentType
$.ajax({ url:'/web/register/', type:"POST", data:{'user':'66'}, dataType:'json', 这个东西困惑我一天 ...
- 最全面的mac下的android studio快捷键
Action Mac OSX Win/Linux 注释代码(//) Cmd + / Ctrl + / 注释代码(/**/) Cmd + Option + / Ctrl + Alt + / 格式化代码 ...
- 24.2 网络编程基础——System.Net 命名空间
使用C#进行网络编程时,通常要用到: System. Net 命名空间. System. Net. Sockets 命名空间. System. Net. Mail 命名空间. 24.2.1 Sy ...
- 一、重写(覆盖)override
一.重写(覆盖)override 子类可以继承父类对象的方法,在继承后,重复提供该方法,就叫做方法的重写,又叫做覆盖override package property; //父类对象 public c ...
- html5-磊哥
<!doctype html><html lang="en"> <head> <meta charset=" ...
- sql 判断字符串中是否含有数字和字母
判断是否含有字母 select PATINDEX('%[A-Za-z]%', ‘ads23432’)=0 (如果存在字母,结果<>1) 判断是否含有数字 PATINDEX('%[0-9]% ...