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 ...
随机推荐
- LeetCode--191--位1的个数
问题描述: 编写一个函数,输入是一个无符号整数,返回其二进制表达式中数字位数为 ‘1’ 的个数(也被称为汉明重量). 示例 : 输入: 11 输出: 3 解释: 整数 11 的二进制表示为 00000 ...
- codeforces 966c//Big Secret// Codeforces Round #477 (Div. 1)
题意:一个数组,重新打乱后前缀异或和递增.问这样的排列. 将所有元素按照二进制最高位分组.每次选当前前缀和sum的二进制最低的0位,再从分组中挑一个作为答案.先放首1在较低位的再放首1在较高位的总是可 ...
- Confluence 6 为 Active Directory 配置一个 SSL 连接预要求
希望生成证书,你需要安装下面的组件在你希望连接的 Windows Domain Controller 上. Internet Information Services (IIS) 在你安装 Windo ...
- php-fpm.conf配置文件中文说明详解及重要参数说明
摘自:https://www.jb51.net/article/148550.htm 感谢分享 php-fpm工作流程 php-fpm全名是PHP FastCGI进程管理器 php-fpm启动后会先读 ...
- 『Pandas』数据读取&DataFrame切片
读取文件 numpy.loadtxt() import numpy as np dataset_filename = "affinity_dataset.txt" X = np.l ...
- hdu-1892-二维BIT
See you~ Time Limit: 5000/3000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)Total Su ...
- quartz---properties
quartz---properties quartz.properties: 如果没有properties默认读取quartz-2.3.0.jar下的org.quartz下的quartz.proper ...
- SQL触发器实例(下)
基本语法: Create Trigger [TriggerName] ON [TableName] FOR [Insert][,Delete][,Update] AS --触发器要执行的操作语句. G ...
- Access-Control-Allow-Origin实现跨域访问 跨域
总结:跨域的get,post请求 后台可以设置 Access-Control-*相关的参数,让浏览器支持. // 指定允许其他域名访问 header('Access-Control-Allow-Ori ...
- 铺音out2
1◆ 忘记的 ed t d du dʒ dge si ʒ su ph f gh ck k ch gh 2◆ 整理 success