狠狠撸

狠狠撸Share a Scribd company logo
Linux I/O Scheduler
       沐剑
访问磁盘的过程
访问磁盘的过程
                   Typical HDD figures
?   寻道时间
                   HDD                   Average
    Server: 3ms    Spindle               rotational
    Common: 10ms   [rpm]                 latency [ms]
                   4,200                 7.14
?   旋转延迟
                   5,400                 5.56
    平均半圈
                   7,200                 4.17
                   10,000                3.00
                   15,000                2.00

?   存取时间=平均寻道时间+平均旋转延迟
?   数据读取时间
    <1ms,忽略丌计

?   影响IOPS的主要因素:寻道时间
SATA II                SAS
7200 RPM IOPS:   ~90   15K RPM IOPS:   ~180
SATA II
Intel X25-M IOPS:   ~8600
访问磁盘的过程
?   如何让磁盘读写更快

    减少寻道时间(避免磁头移动开销)

    让磁头旋转一圈读写更多相邻扇区的数据(顺序读写)
扇区

?   操作系统视角

    逻辑块序列


?   硬件视角

    物理扇区


?   磁盘控制器

    映射「逻辑块」->实际物理扇区
读取一个扇区
?   CPU->磁盘控制器

    读某个逻辑块号


?   磁盘控制器

    快速表搜索

    逻辑块号->(盘面,磁道,扇区)三元组,唯一标示物理扇区


?   机械移动(寻道、旋转)
?   拷贝主存
? I/O调度器的层级结构
滨/翱子系统
Block I/O Layer
I/O调度器
?   目标

    减少寻道时间,让旋转一圈读取更多扇区
?   任务

    1、管理块设备请求队列
    2、分配I/O资源给请求


?   做法

    合并 + 排序
合并
?   同一或多个相邻扇区的请求 —— 合并 ——> 一次I/O
?   一次I/O对应一条寻址指令


?   减少系统开销和寻址次数
排序
?   I/O请求按照扇区增长排列


?   Sorted Queue
? 几种I/O调度器
Linus电梯
?   简单的合并+排序


?   避免请求饥饿

    梱测到队列中有长期没有被处理的请求,那么就暂时中止插入


?   缺点

    I/O调度器并没有真正去处理饥饿请求,而是采取了一种间接的方式,所以很
    有可能饥饿的请求依旧饥饿,并没有解决实质问题
Deadline
?   带超时的调度算法


?   3个I/O Queue

    Read Queue(default timeout: 500ms) FIFO
    Write Queue(default timeout: 5000ms) FIFO
    Sorted Queue


?   缺点

    当系统存在大量顺序请求时,可能导致请求无法被很好地排序,引发频繁寻
    道,比较适合随机访问多、时效性高的场景
Deadline
?   权衡了全局吞吐量和系统延迟


?   请求同时插入Read/Write Queue和Sorted Queue


?   writes_starved

    避免写饥饿,当写饥饿次数达到writes_starved,写请求会被立即处理
Anticipatory (AS)
?   2.6.18之前默认的I/O调度器

    基于预测算法

    主要是为了解决Deceptive idleness问题


?   处理完一个请求,丌直接处理下一个请求,而是针对上一个请求的进程等待
    片刻,如果该进程发出一个不当前扇区相同或相邻扇区的请求,则优先处理
?   默认等待6ms
?   如果系统存在大量相邻扇区请求,性能会很好
CFQ
?   2.6.18之后默认的I/O调度器

    每个提交I/O请求的进程都有一个自己单独的Sorted Queue


?   在一个时间片中,CFQ调度器选择一个进程,处理其I/O队列
?   丌是简单的轮询,基于红黑树选择进程(进程优先级)


?   特点是保证各个进程的I/O请求能被均衡处理


?   也有类似AS的等待机制
?   QUEUE_FLAG_NONROT
NOOP
?   面向随机访问设备(例如SSD)


?   我们只做合并,元芳,你怎么看?


?   对于SSD

    选择NOOP还是Deadline?

    Deadline平衡读写比例
Benchmark




Red Hat Enterprise Linux 4 I/O schedulers vs. Red Hat Enterprise Linux 3
       for database Oracle 10G oltp/dss (relative performance)
谢谢!

More Related Content

What's hot (20)

吴岷 视频Cdn分发、调度与服务的探讨
吴岷  视频Cdn分发、调度与服务的探讨吴岷  视频Cdn分发、调度与服务的探讨
吴岷 视频Cdn分发、调度与服务的探讨
drewz lin
?
硬件体系架构浅析
硬件体系架构浅析硬件体系架构浅析
硬件体系架构浅析
frogd
?
IoTDB OptimizeAndCaseStudy
IoTDB OptimizeAndCaseStudyIoTDB OptimizeAndCaseStudy
IoTDB OptimizeAndCaseStudy
JialinQiao
?
搁别诲颈蝉介绍
搁别诲颈蝉介绍搁别诲颈蝉介绍
搁别诲颈蝉介绍
zhaolinjnu
?
云计算环境中厂蝉诲在肠补蝉蝉补苍诲谤补测试的性能表现
云计算环境中厂蝉诲在肠补蝉蝉补苍诲谤补测试的性能表现 云计算环境中厂蝉诲在肠补蝉蝉补苍诲谤补测试的性能表现
云计算环境中厂蝉诲在肠补蝉蝉补苍诲谤补测试的性能表现
july19850903
?
狈辞厂蚕尝误用和常见陷阱分析
狈辞厂蚕尝误用和常见陷阱分析狈辞厂蚕尝误用和常见陷阱分析
狈辞厂蚕尝误用和常见陷阱分析
iammutex
?
Hdfs
HdfsHdfs
Hdfs
jiang yu
?
IoTDB Ops
IoTDB OpsIoTDB Ops
IoTDB Ops
JialinQiao
?
主库自动切换 V2.0
主库自动切换 V2.0主库自动切换 V2.0
主库自动切换 V2.0
jinqing zhu
?
Java_07:Thread
Java_07:ThreadJava_07:Thread
Java_07:Thread
Brad Chao
?
排队论及其应用浅析
排队论及其应用浅析排队论及其应用浅析
排队论及其应用浅析
frogd
?
海量日志分析系统实践,顿产补
海量日志分析系统实践,顿产补海量日志分析系统实践,顿产补
海量日志分析系统实践,顿产补
Cevin Cheung
?
搁别诲颈蝉介绍
搁别诲颈蝉介绍 搁别诲颈蝉介绍
搁别诲颈蝉介绍
yubao fu
?
Ch8 file system management(2013 ncu-nos_nm)
Ch8   file system management(2013 ncu-nos_nm)Ch8   file system management(2013 ncu-nos_nm)
Ch8 file system management(2013 ncu-nos_nm)
Kir Chou
?
1221 探討 Windows Server 2008 WDS 部署服務
1221 探討 Windows Server 2008 WDS 部署服務1221 探討 Windows Server 2008 WDS 部署服務
1221 探討 Windows Server 2008 WDS 部署服務
Timothy Chen
?
顿叠础学院课程之:惭测厂蚕尝故障诊断案例
顿叠础学院课程之:惭测厂蚕尝故障诊断案例顿叠础学院课程之:惭测厂蚕尝故障诊断案例
顿叠础学院课程之:惭测厂蚕尝故障诊断案例
Hui Liu
?
惭测厂蚕尝查询优化浅析
惭测厂蚕尝查询优化浅析惭测厂蚕尝查询优化浅析
惭测厂蚕尝查询优化浅析
frogd
?
Cgroup lxc在17173 iaas应用池中应用
Cgroup lxc在17173 iaas应用池中应用Cgroup lxc在17173 iaas应用池中应用
Cgroup lxc在17173 iaas应用池中应用
Jinrong Ye
?
《保哥線上講堂》打造一個具有 Linux 溫度的 Windows 命令提示字元工具
《保哥線上講堂》打造一個具有 Linux 溫度的 Windows 命令提示字元工具《保哥線上講堂》打造一個具有 Linux 溫度的 Windows 命令提示字元工具
《保哥線上講堂》打造一個具有 Linux 溫度的 Windows 命令提示字元工具
Will Huang
?
尝颈苍耻虫学习
尝颈苍耻虫学习尝颈苍耻虫学习
尝颈苍耻虫学习
tonyhuang2008
?
吴岷 视频Cdn分发、调度与服务的探讨
吴岷  视频Cdn分发、调度与服务的探讨吴岷  视频Cdn分发、调度与服务的探讨
吴岷 视频Cdn分发、调度与服务的探讨
drewz lin
?
硬件体系架构浅析
硬件体系架构浅析硬件体系架构浅析
硬件体系架构浅析
frogd
?
IoTDB OptimizeAndCaseStudy
IoTDB OptimizeAndCaseStudyIoTDB OptimizeAndCaseStudy
IoTDB OptimizeAndCaseStudy
JialinQiao
?
搁别诲颈蝉介绍
搁别诲颈蝉介绍搁别诲颈蝉介绍
搁别诲颈蝉介绍
zhaolinjnu
?
云计算环境中厂蝉诲在肠补蝉蝉补苍诲谤补测试的性能表现
云计算环境中厂蝉诲在肠补蝉蝉补苍诲谤补测试的性能表现 云计算环境中厂蝉诲在肠补蝉蝉补苍诲谤补测试的性能表现
云计算环境中厂蝉诲在肠补蝉蝉补苍诲谤补测试的性能表现
july19850903
?
狈辞厂蚕尝误用和常见陷阱分析
狈辞厂蚕尝误用和常见陷阱分析狈辞厂蚕尝误用和常见陷阱分析
狈辞厂蚕尝误用和常见陷阱分析
iammutex
?
主库自动切换 V2.0
主库自动切换 V2.0主库自动切换 V2.0
主库自动切换 V2.0
jinqing zhu
?
排队论及其应用浅析
排队论及其应用浅析排队论及其应用浅析
排队论及其应用浅析
frogd
?
海量日志分析系统实践,顿产补
海量日志分析系统实践,顿产补海量日志分析系统实践,顿产补
海量日志分析系统实践,顿产补
Cevin Cheung
?
搁别诲颈蝉介绍
搁别诲颈蝉介绍 搁别诲颈蝉介绍
搁别诲颈蝉介绍
yubao fu
?
Ch8 file system management(2013 ncu-nos_nm)
Ch8   file system management(2013 ncu-nos_nm)Ch8   file system management(2013 ncu-nos_nm)
Ch8 file system management(2013 ncu-nos_nm)
Kir Chou
?
1221 探討 Windows Server 2008 WDS 部署服務
1221 探討 Windows Server 2008 WDS 部署服務1221 探討 Windows Server 2008 WDS 部署服務
1221 探討 Windows Server 2008 WDS 部署服務
Timothy Chen
?
顿叠础学院课程之:惭测厂蚕尝故障诊断案例
顿叠础学院课程之:惭测厂蚕尝故障诊断案例顿叠础学院课程之:惭测厂蚕尝故障诊断案例
顿叠础学院课程之:惭测厂蚕尝故障诊断案例
Hui Liu
?
惭测厂蚕尝查询优化浅析
惭测厂蚕尝查询优化浅析惭测厂蚕尝查询优化浅析
惭测厂蚕尝查询优化浅析
frogd
?
Cgroup lxc在17173 iaas应用池中应用
Cgroup lxc在17173 iaas应用池中应用Cgroup lxc在17173 iaas应用池中应用
Cgroup lxc在17173 iaas应用池中应用
Jinrong Ye
?
《保哥線上講堂》打造一個具有 Linux 溫度的 Windows 命令提示字元工具
《保哥線上講堂》打造一個具有 Linux 溫度的 Windows 命令提示字元工具《保哥線上講堂》打造一個具有 Linux 溫度的 Windows 命令提示字元工具
《保哥線上講堂》打造一個具有 Linux 溫度的 Windows 命令提示字元工具
Will Huang
?

Similar to Linux I/O Scheduler (20)

奥别产并发模型粗浅探讨
奥别产并发模型粗浅探讨奥别产并发模型粗浅探讨
奥别产并发模型粗浅探讨
Robbin Fan
?
奥别产并发模型粗浅探讨v3
奥别产并发模型粗浅探讨v3奥别产并发模型粗浅探讨v3
奥别产并发模型粗浅探讨v3
乐费 胡
?
狈辞蝉辩濒叁步曲
狈辞蝉辩濒叁步曲狈辞蝉辩濒叁步曲
狈辞蝉辩濒叁步曲
84zhu
?
开源混合存储方案(贵濒补蝉丑肠补肠丑别)
开源混合存储方案(贵濒补蝉丑肠补肠丑别)开源混合存储方案(贵濒补蝉丑肠补肠丑别)
开源混合存储方案(贵濒补蝉丑肠补肠丑别)
Feng Yu
?
数据库性能模型与容量规划
数据库性能模型与容量规划数据库性能模型与容量规划
数据库性能模型与容量规划
freezr
?
闯补惫补应用性能测试与分析
闯补惫补应用性能测试与分析闯补惫补应用性能测试与分析
闯补惫补应用性能测试与分析
Frank Lee
?
惭测蝉辩濒调优
惭测蝉辩濒调优惭测蝉辩濒调优
惭测蝉辩濒调优
ken shin
?
System optimize experience
System optimize experienceSystem optimize experience
System optimize experience
召仁 刘
?
MongoDB at Qihoo 360
MongoDB at Qihoo 360MongoDB at Qihoo 360
MongoDB at Qihoo 360
MongoDB
?
System optimize experience
System optimize experienceSystem optimize experience
System optimize experience
召仁 刘
?
贰虫补诲补迟补那点事
贰虫补诲补迟补那点事贰虫补诲补迟补那点事
贰虫补诲补迟补那点事
freezr
?
20110625.【打造高效能的肠诲苍系统】.易统
20110625.【打造高效能的肠诲苍系统】.易统20110625.【打造高效能的肠诲苍系统】.易统
20110625.【打造高效能的肠诲苍系统】.易统
锐 张
?
抢救资料库效能大作战
抢救资料库效能大作战抢救资料库效能大作战
抢救资料库效能大作战
Rico Chen
?
基于翱辫别苍搁别蝉迟测的百万级长连接推送
基于翱辫别苍搁别蝉迟测的百万级长连接推送基于翱辫别苍搁别蝉迟测的百万级长连接推送
基于翱辫别苍搁别蝉迟测的百万级长连接推送
OpenRestyCon
?
賽門鐵克 NetBackup 7.5 完整簡報
賽門鐵克 NetBackup 7.5 完整簡報賽門鐵克 NetBackup 7.5 完整簡報
賽門鐵克 NetBackup 7.5 完整簡報
Wales Chen
?
顿狈厂协议与应用介绍
顿狈厂协议与应用介绍顿狈厂协议与应用介绍
顿狈厂协议与应用介绍
琛琳 饶
?
寫出高性能的服務與應用 那些你沒想過的事
寫出高性能的服務與應用 那些你沒想過的事寫出高性能的服務與應用 那些你沒想過的事
寫出高性能的服務與應用 那些你沒想過的事
Chieh (Jack) Yu
?
分布式缓存与队列
分布式缓存与队列分布式缓存与队列
分布式缓存与队列
XiaoJun Hong
?
惭测厂蚕尝和滨翱(下)
惭测厂蚕尝和滨翱(下)惭测厂蚕尝和滨翱(下)
惭测厂蚕尝和滨翱(下)
Feng Yu
?
浅谈数据库优化
浅谈数据库优化浅谈数据库优化
浅谈数据库优化
Sky Jian
?
奥别产并发模型粗浅探讨
奥别产并发模型粗浅探讨奥别产并发模型粗浅探讨
奥别产并发模型粗浅探讨
Robbin Fan
?
奥别产并发模型粗浅探讨v3
奥别产并发模型粗浅探讨v3奥别产并发模型粗浅探讨v3
奥别产并发模型粗浅探讨v3
乐费 胡
?
狈辞蝉辩濒叁步曲
狈辞蝉辩濒叁步曲狈辞蝉辩濒叁步曲
狈辞蝉辩濒叁步曲
84zhu
?
开源混合存储方案(贵濒补蝉丑肠补肠丑别)
开源混合存储方案(贵濒补蝉丑肠补肠丑别)开源混合存储方案(贵濒补蝉丑肠补肠丑别)
开源混合存储方案(贵濒补蝉丑肠补肠丑别)
Feng Yu
?
数据库性能模型与容量规划
数据库性能模型与容量规划数据库性能模型与容量规划
数据库性能模型与容量规划
freezr
?
闯补惫补应用性能测试与分析
闯补惫补应用性能测试与分析闯补惫补应用性能测试与分析
闯补惫补应用性能测试与分析
Frank Lee
?
惭测蝉辩濒调优
惭测蝉辩濒调优惭测蝉辩濒调优
惭测蝉辩濒调优
ken shin
?
System optimize experience
System optimize experienceSystem optimize experience
System optimize experience
召仁 刘
?
MongoDB at Qihoo 360
MongoDB at Qihoo 360MongoDB at Qihoo 360
MongoDB at Qihoo 360
MongoDB
?
System optimize experience
System optimize experienceSystem optimize experience
System optimize experience
召仁 刘
?
贰虫补诲补迟补那点事
贰虫补诲补迟补那点事贰虫补诲补迟补那点事
贰虫补诲补迟补那点事
freezr
?
20110625.【打造高效能的肠诲苍系统】.易统
20110625.【打造高效能的肠诲苍系统】.易统20110625.【打造高效能的肠诲苍系统】.易统
20110625.【打造高效能的肠诲苍系统】.易统
锐 张
?
抢救资料库效能大作战
抢救资料库效能大作战抢救资料库效能大作战
抢救资料库效能大作战
Rico Chen
?
基于翱辫别苍搁别蝉迟测的百万级长连接推送
基于翱辫别苍搁别蝉迟测的百万级长连接推送基于翱辫别苍搁别蝉迟测的百万级长连接推送
基于翱辫别苍搁别蝉迟测的百万级长连接推送
OpenRestyCon
?
賽門鐵克 NetBackup 7.5 完整簡報
賽門鐵克 NetBackup 7.5 完整簡報賽門鐵克 NetBackup 7.5 完整簡報
賽門鐵克 NetBackup 7.5 完整簡報
Wales Chen
?
顿狈厂协议与应用介绍
顿狈厂协议与应用介绍顿狈厂协议与应用介绍
顿狈厂协议与应用介绍
琛琳 饶
?
寫出高性能的服務與應用 那些你沒想過的事
寫出高性能的服務與應用 那些你沒想過的事寫出高性能的服務與應用 那些你沒想過的事
寫出高性能的服務與應用 那些你沒想過的事
Chieh (Jack) Yu
?
分布式缓存与队列
分布式缓存与队列分布式缓存与队列
分布式缓存与队列
XiaoJun Hong
?
惭测厂蚕尝和滨翱(下)
惭测厂蚕尝和滨翱(下)惭测厂蚕尝和滨翱(下)
惭测厂蚕尝和滨翱(下)
Feng Yu
?
浅谈数据库优化
浅谈数据库优化浅谈数据库优化
浅谈数据库优化
Sky Jian
?

Linux I/O Scheduler

  • 3. 访问磁盘的过程 Typical HDD figures ? 寻道时间 HDD Average Server: 3ms Spindle rotational Common: 10ms [rpm] latency [ms] 4,200 7.14 ? 旋转延迟 5,400 5.56 平均半圈 7,200 4.17 10,000 3.00 15,000 2.00 ? 存取时间=平均寻道时间+平均旋转延迟 ? 数据读取时间 <1ms,忽略丌计 ? 影响IOPS的主要因素:寻道时间
  • 4. SATA II SAS 7200 RPM IOPS: ~90 15K RPM IOPS: ~180
  • 5. SATA II Intel X25-M IOPS: ~8600
  • 6. 访问磁盘的过程 ? 如何让磁盘读写更快 减少寻道时间(避免磁头移动开销) 让磁头旋转一圈读写更多相邻扇区的数据(顺序读写)
  • 7. 扇区 ? 操作系统视角 逻辑块序列 ? 硬件视角 物理扇区 ? 磁盘控制器 映射「逻辑块」->实际物理扇区
  • 8. 读取一个扇区 ? CPU->磁盘控制器 读某个逻辑块号 ? 磁盘控制器 快速表搜索 逻辑块号->(盘面,磁道,扇区)三元组,唯一标示物理扇区 ? 机械移动(寻道、旋转) ? 拷贝主存
  • 12. I/O调度器 ? 目标 减少寻道时间,让旋转一圈读取更多扇区 ? 任务 1、管理块设备请求队列 2、分配I/O资源给请求 ? 做法 合并 + 排序
  • 13. 合并 ? 同一或多个相邻扇区的请求 —— 合并 ——> 一次I/O ? 一次I/O对应一条寻址指令 ? 减少系统开销和寻址次数
  • 14. 排序 ? I/O请求按照扇区增长排列 ? Sorted Queue
  • 16. Linus电梯 ? 简单的合并+排序 ? 避免请求饥饿 梱测到队列中有长期没有被处理的请求,那么就暂时中止插入 ? 缺点 I/O调度器并没有真正去处理饥饿请求,而是采取了一种间接的方式,所以很 有可能饥饿的请求依旧饥饿,并没有解决实质问题
  • 17. Deadline ? 带超时的调度算法 ? 3个I/O Queue Read Queue(default timeout: 500ms) FIFO Write Queue(default timeout: 5000ms) FIFO Sorted Queue ? 缺点 当系统存在大量顺序请求时,可能导致请求无法被很好地排序,引发频繁寻 道,比较适合随机访问多、时效性高的场景
  • 18. Deadline ? 权衡了全局吞吐量和系统延迟 ? 请求同时插入Read/Write Queue和Sorted Queue ? writes_starved 避免写饥饿,当写饥饿次数达到writes_starved,写请求会被立即处理
  • 19. Anticipatory (AS) ? 2.6.18之前默认的I/O调度器 基于预测算法 主要是为了解决Deceptive idleness问题 ? 处理完一个请求,丌直接处理下一个请求,而是针对上一个请求的进程等待 片刻,如果该进程发出一个不当前扇区相同或相邻扇区的请求,则优先处理 ? 默认等待6ms ? 如果系统存在大量相邻扇区请求,性能会很好
  • 20. CFQ ? 2.6.18之后默认的I/O调度器 每个提交I/O请求的进程都有一个自己单独的Sorted Queue ? 在一个时间片中,CFQ调度器选择一个进程,处理其I/O队列 ? 丌是简单的轮询,基于红黑树选择进程(进程优先级) ? 特点是保证各个进程的I/O请求能被均衡处理 ? 也有类似AS的等待机制 ? QUEUE_FLAG_NONROT
  • 21. NOOP ? 面向随机访问设备(例如SSD) ? 我们只做合并,元芳,你怎么看? ? 对于SSD 选择NOOP还是Deadline? Deadline平衡读写比例
  • 22. Benchmark Red Hat Enterprise Linux 4 I/O schedulers vs. Red Hat Enterprise Linux 3 for database Oracle 10G oltp/dss (relative performance)