《Tuning I/O Performance》读后笔记
《Tuning I/O Performance》,文章地址:http://doc.opensuse.org/products/draft/SLES/SLES-tuning_sd_draft/cha.tuning.io.html
大家在读了原文后若有更好的见解,请不吝赐教,谢谢!
文章以SUSE Linux Enterprise Server为例讲解了Linux系统的IO调度策略及调优,可适应于其他Linux操作系统,如CentOS、UBUNTU等。
1、查看当前IO调度策略(大多数Linux发行版的默认策略是CFQ)
命令:cat /sys/block/sda/queue/scheduler
结果:noop anticipatory deadline [cfq] #CentOS系统,可知可用的调度策略和当前调度策略,[]中的为当前系统采用的调度策略
2、更改当前调度策略
a、在系统启动时加入elevator=SCHEDULER 的内核参数
b、直接修改内核参数:echo SCHEDULER > /sys/block/DEVICE/queue/scheduler
3、策略调优
各个策略均有参数可以调优,参数路径大致相同,在 /sys/block/DEVICE/queue/iosched/目录下
命令:echo VALUE > /sys/block/DEVICE/queue/iosched/TUNABLE
4、各主要策略调优
a、CFQ(Completely Fair Queuing)
i、CFQ是一个公平的算法,每个线程都有一个时间片来提交I/O请求,不同的任务也可以分配不同的I/O优先级(man 1 ionice)
ii、可调优的参数
/sys/block/<device>/queue/iosched/slice_idle
#就算一个任务当前没有I/O请求了,采用此策略仍然会等待一段时间才切换到下一个线程。
#针对 SSDs、多磁盘SAN等当前磁道位置(不用额外花费时间寻址)不是特别重要的,只可以把此参数设置为0可以明显提高吞吐量。
/sys/block/<device>/queue/iosched/quantum
#限制设备同时处理的请求数量,默认值是4
#调高此值虽然可以提高性能,但因为并发处理量增多了,可能会增加某些I/O的延时
#所以可调整/sys/block/<device>/queue/iosched/slice_async_rq(默认是2,限制同一时间片的异步写请求数量)
/sys/block/<device>/queue/iosched/low_latency
#对I/O延迟要求非常高的负载环境中,可以将此值设置为1会好一些
b、NOOP
i、它是一种非常普通的调度策略,有I/O请求时它就处理,它可以用来检测其它调度算法在复杂I/O环境下是否引起了I/O性能。
ii、有自身的的调度算法的设备,如智能存储设备、SSDs等,虽然一般情况下DEADLINE更适合这些设备,但在较低负载下它的性能可能会更好。
c、DEADLINE
i、DEADLINE是为降低延时而设计的,每个I/O请求分配了一个结束时间,超时后便会暂存到队列(读和写两个队列)中,当没有超时的请求时再处理这些队 列里的请求,这个算法对读的好处大于写。
ii、在并发读写及优先级不是非常重要的情况下,此调试要比CFQ策略性能好许多。
iii、调优参数
/sys/block/<device>/queue/iosched/writes_starved
#控制在多少个读请求后可以处理一个写请求,设置为3表示处理3个请求后可以处理一个写请求
/sys/block/<device>/queue/iosched/read_expire
#以毫秒为单位,默认值是500,设置读操作的超时时间(当前时间往后推read_expire值便是超时的时间点)
/sys/block/<device>/queue/iosched/write_expire
#同上,控制写请求超时时间
5、I/O Barrier调优
Write Barriers 是一种内核机制,可以保证文件系统元数据正确有序地写入持久化存储,哪怕持久化存储掉电的情况也能保证。大多数文件系统(XFS、ext3、ext4、reiserfs)在fsync或事务提交的时候便会触发 Write Barriers 。可在有备用电池的磁盘关闭 Write Barriers 来提高性能。
可在ext3、ext4、reiserfs文件系统挂载时加上barrier=0的选项,XFS挂载时使用nobarrier选项。
转载于:https://blog.51cto.com/wxiaowu/1547122
《Tuning I/O Performance》读后笔记相关推荐
- Best practice for JVM Tuning[转]
原文地址:https://backstage.forgerock.com/knowledge/kb/article/a35746010 JVM tuning considerations Before ...
- kernel: TCP: out of memory -- consider tuning tcp_mem 问题处理记录
问题: 1.通过/var/log/messages定位到原因,大概意思是TCP发送缓冲区满了 2.查看其默认tcp_mem配置: 解决办法: 1.vim /etc/sysctl. ...
- How Kafka’s Storage Internals Work
In this post I'm going to help you understand how Kafka stores its data. I've found understanding th ...
- 对比学习系列论文SDCLR(二)-Self-Damaging Contrastive Learning
目录 0.Abstract 0.1逐句翻译 0.2总结 1. Introduction 1.1. Background and Research Gaps 1.1.1逐句翻译 第一段(引出对比学习是否 ...
- weedfs java_初窥weedfs分布式文件系统
介绍 Seaweedfs是一个简单,高扩展性的分布式文件系统,它的两个目标分别是: 存储数十亿级的文件 快速响应文件. seaweedfs选择以键值对(key->file)的实现方式,这有点像& ...
- 深度学习之对象检测_深度学习时代您应该阅读的12篇文章,以了解对象检测
深度学习之对象检测 前言 (Foreword) As the second article in the "Papers You Should Read" series, we a ...
- OpenstackNova-KVM性能调优
前言:请勿轻易调优,除非很清楚在干什么 KVM 作为 Nova 的虚拟化 Driver,是真正意义上负责虚拟机生命周期管理虚拟化基础设施,所以,如果清楚 KVM 的某些调优参数和策略,就有可能为 No ...
- nginx documentation | Development guide
Table of Contents nginx documentation Development guide Nginx distributions ▪️ OpenResty ▪️ The Te ...
- oracle中慢sql优化思路
参考资料:官方文档SQL Tuning Guide https://docs.oracle.com/en/database/oracle/oracle-database/12.2/tgsql/sql- ...
最新文章
- 记一次错误的伪静态配置文件
- 使用expdp导出时评估所需存储容量大小
- 纯php mysql_【总结】纯php 操作 mysql 数据库
- oracle11 删除表空间,oracle11g启动停止服务,修改字符集,导入导出,创建删除表空间,卸载oracle等...
- qemu-kvm磁盘读写的缓冲(cache)的五种模式
- org.apache.struts2.json.JSONWriter can not access a member of class
- Python库:Imageio库(待完善)
- 机器学习-octave使用
- Spring 应用开发框架 Spring Boot 2.3.0 最新版本发布
- 【手把手教你】股市技术分析利器之TA-Lib
- 张正友标定算法原理详解
- 大数据处理需要用到的九种编程语言
- 2018-2019-2 网络对抗技术 20165322 Exp4 恶意代码分析
- java金额转换函数_将阿拉伯数字转换成人民币大写形式的JAVA工具类
- 门店私域运营,突围线上冲击
- 用友NC65产品portal新增按钮
- 【机器学习】机器学习30个笔试题
- spark master web ui 端口8080被占用解决方法
- fread函数详解和fwrite函数详解
- 大数据 BigData
热门文章
- 【数字信号处理】线性时不变系统 LTI “ 输入 “ 与 “ 输出 “ 之间的关系 ( 周期性分析 | 卷积运算规律 | 交换律 | 结合律 | 分配率 | 冲击不变性 )
- 【Groovy】集合遍历 ( 使用 for 循环遍历集合 | 使用集合的 each 方法遍历集合 | 集合的 each 方法返回值分析 )
- 【C 语言】文件操作 ( 文件加密解密 | 加密解密原理 | 对称加密 | 非对称加密 | 散列函数 )
- 【Android 逆向】Frida 框架 ( 安装 frida 12.7.5 | 安装 frida-tools 5.1.0 | PC 端 frida 与 安卓模拟器端 frida-server )
- 【EventBus】发布-订阅模式 ( EventBus 组成模块 | 观察者模式 )
- 【数据挖掘】关联规则挖掘 Apriori 算法 ( Apriori 算法过程 | Apriori 算法示例 )
- 【运筹学】线性规划 单纯形法 案例二 ( 案例解析 | 标准形转化 | 查找初始基可行解 | 最优解判定 | 查找入基变量与出基变量 | 第一次迭代 )
- 【Android FFMPEG 开发】Android Studio 工程配置 FFMPEG ( 动态库打包 | 头文件与函数库拷贝 | CMake 脚本配置 )
- 【网站建设】Linux上安装MySQL - 12条命令搞定MySql
- 上下文 及 执行上下文