1. pdflush刷新脏数据条件

linux IO 内核参数调优 之 原理和参数介绍)上一章节讲述了IO内核调优介个重要参数参数。

总结可知cached中的脏数据满足如下几个条件中一个或者多个的时候就会被pdflush刷新到磁盘:
(1)数据存在的时间超过了dirty_expire_centisecs(默认30s)时间
(2)脏数据所占内存 /(MemFree + Cached - Mapped) > dirty_background_ratio。也就是说当脏数据所占用的内存占(MemFree + Cached - Mapped)内存的内存的比例超过dirty_background_ratio的时候会触发pdflush刷新脏数据。
    可以看出这两个参数是有联系的。比如把dirty_expire_centisecss设置较小,那么pdflush就会刷新脏数据的频率就会增加,这样就会使得脏数据所占总内存的比例不会达到dirty_background_ratio,从而使得dirty_background_ratio参数没有什么作用。相反,如果dirty_background_ratio参数设置很小同时dirty_expire_centisecs设置较大,可能在达到过期时间之前脏数据就被pdflush刷新到磁盘中。
 
2.  参数调优
如果系统的cached中脏数据量很大,会产生两个问题:
a. 缓存的数据越多,丢数据的风险越大。
b. 会定期出现IO峰值,这个峰值时间会较长,在这期间所有新的写IO性能会很差(极端情况直接被hang住)。
后一个问题对写负载很高的应用会产生很大影响。
 
如何调节内核IO参数来优化IO写性能?
(1)首先调优dirty_background_ratio
    把这个参数适当调小,这样可以使得cached主的脏数据减少,把原来一个大的IO刷新操作变为多个小的IO刷新操作,从而把IO写峰值削平。对于cached很大或者磁盘很慢的场景,应该把这个值设置的小一点。调节方法:echo 5 >> /proc/sys/vm/dirty_background_ratio 把这个百分比更新为5% (注意这里所占的百分比是针对于:MemFree + Cached - Mapped而言的,并不是相对于MemTotal)
 
(2)第二步调节dirty_ratio参数
    把这个参数适当调小,原理通(1)类似。如果cached的脏数据所占比例(这里是占MemTotal的比例)超过这个设置,系统会停止所有的应用层的IO写操作,等待刷完数据后恢复IO。所以万一触发了系统的这个操作,对于用户来说影响非常大的。
 
(3)第三步调节dirty_expire_centisecs参数(这个参数表示page cache中的数据多久标记为脏)
    这个参数调节可能意义不大。调小这个参数并不保证可以很快的把脏数据刷新下去,因为这里会有个IO拥塞问题。如果在一个dirty_expire_centisecs周期内没有刷完脏数据就会导致这个参数失效了。理想情况我们希望一个dirty_expire_centisecs刷完脏数据,但如果cached的脏数据较多或者磁盘较慢的时候就会导致IO拥塞问题。一般使用默认值就好。
 
(4)第四步调节dirty_writeback_centisecs参数(这个参数调节pdflush被唤醒的频率)
理论上调小这个参数,可以提高pdflush工作频率,从而尽快把脏数据刷新到磁盘上。但是这一样会遇到第三步IO拥塞问题。所以这个参数效果也不尽如人意。一般使用默认值就好。
 
3. Swapping调优
    swap空间是一块磁盘空间,操作系统使用这块空间保存从内存中换出的操作系统不常用page数据,这样可以分配出更多的内存做page cache。这样通常会提升系统的吞吐量和IO性能,但同样会产生很多问题。页面频繁换入换出会产生IO读写、操作系统中断,这些都很影响系统的性能。这个值越大操作系统就会更加积极的使用swap空间。
调节swappniess方法如下:
cat /proc/sys/vm/swappniess查看这个参数的配置(默认值是60)
echo 0 >> /proc/sys/vm/swappniess 禁止操作系统使用任何的swap空间
echo 100 >> /proc/sys/vm/swappniess 操作系统会尽量使用swap空间
swappniess设置一个适当值对于系统性能也会有明显的影响。
swappniess很小时,系统能并发的进程或者线程就会减少,但每个进程或者线程运行的速度较快,cpu利用率较好。
swappniess很大时,系统并发好,但每个进程或者线程速度较慢。较多IO读写和系统中断会消耗很多cpu资源,此时系统效率较低。
所以如果希望提高服务器的并发量,对服务的相应时间要求不很高的场景可以适当的把swappniess调节的高些。对于并发量不大但希望相应时间小的应用场景可以适当的调小这个参数,比如个人电脑可以直接禁掉swap。

linux 内核参数VM调优 之 参数调节和场景分析的更多相关文章

  1. 阿里云下 centos7下启动程序总是被killed ,看内存占用情况以检查哪些服务存在问题并调整参数作调优

    很久不搭理自己的网站了,几天突然发现启动程序总是被killed, 于是查看了系统日志 vi /var/log/messages 发现出现 kernel: Out of memory: Kill pro ...

  2. JVM调优常用参数和注意点备忘录

    本文主要是工作过程中总结的一些jvm调优的参数和注意的地方,作为一个备忘录,先占个坑,有时间在来细化具体的实例. gc日志是覆盖的方式如果文件名字固定会导致上一次被覆盖可以采用这个-Xloggc:ba ...

  3. mysql的从头到脚优化之服务器参数的调优

    一. 说到mysql的调优,有许多的点可以让我们去做,因此梳理下,一些调优的策略,今天只是总结下服务器参数的调优  其实说到,参数的调优,我的理解就是无非两点: 如果是Innodb的数据库,innod ...

  4. spark submit参数及调优

    park submit参数介绍 你可以通过spark-submit --help或者spark-shell --help来查看这些参数.   使用格式:  ./bin/spark-submit \   ...

  5. spark submit参数及调优(转载)

    spark submit参数介绍 你可以通过spark-submit --help或者spark-shell --help来查看这些参数. 使用格式:  ./bin/spark-submit \ -- ...

  6. Perf -- Linux下的系统性能调优工具,第 1 部分 应用程序调优的使用和示例 Tracepoint 是散落在内核源代码中的一些 hook,一旦使能,它们便可以在特定的代码被运行到时被触发,这一特性可以被各种 trace/debug 工具所使用。Perf 就是该特性的用户之一。

    Perf -- Linux下的系统性能调优工具,第 1 部分 应用程序调优的使用和示例 https://www.ibm.com/developerworks/cn/linux/l-cn-perf1/i ...

  7. RandomForest 随机森林算法与模型参数的调优

    公号:码农充电站pro 主页:https://codeshellme.github.io 本篇文章来介绍随机森林(RandomForest)算法. 1,集成算法之 bagging 算法 在前边的文章& ...

  8. linux概念之性能调优

    目前,对系统进行性能调试的工具有很多,这些可以两大类:一类是标准的分析工具,即所有的UNIX都会带的分析工具: 另一类是不同厂商的UNIX所特有的性能分析工具,比如HP-UX就有自己的增值性能分析工具 ...

  9. Perf Event :Linux下的系统性能调优工具

    Perf Event :Linux下的系统性能调优工具 2011-05-27 10:35 刘 明 IBMDW 字号:T | T Perf Event 是一款随 Linux 内核代码一同发布和维护的性能 ...

随机推荐

  1. configsections規範配置信息

    對於小型項目,配置信息可以通过appSettings进行配置,而如果配置信息太多,appSettings显得有些乱,而且在开发人员调用时,也不够友好,节点名称很容易写错,这时,我们有几种解决方案 1 ...

  2. [POJ] #1008# Maya Calendar : 字符处理/同余问题

    一. 题目 Maya Calendar Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 74085   Accepted: 2 ...

  3. collectionView/tableview刷新时关闭动画无效

    collectionView/tableview reloadSections/reloaddata时去掉动画无效时可以尝试使用 [UIView performWithoutAnimation:^{ ...

  4. [POJ] #1002# 487-3279 : 桶排序/字典树(Trie树)/快速排序

    一. 题目 487-3279 Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 274040   Accepted: 48891 ...

  5. 第三百五十一天 how can I 坚持

    是应该喜欢还是厌烦这种状态,犹豫不定,毫无目标. 人不贪,谁信,我嘴上说我不贪,可是内心已经把我出卖了,要不怎么股票会被套呢. 别人贪婪时我恐惧,别人恐惧时我贪婪,我成了什么,别人贪婪时,我狂妄,别人 ...

  6. centos安装postfixadmin

    postfixadmin的安装,跟普通网站安装没什么区别 配置好虚拟目录,然后在数据库中创建数据库postfix 修改config.inc.php文件,详细搜索谷歌 访问http://www.你的域名 ...

  7. oracle关键字使用

    v_Describe:=substr(v_Describe,0,length(v_Describe)-1); substr(目标内容,开始位置,截取长度) length(要计算的内容长度) 上述语句可 ...

  8. PHP导出数据库数据字典脚本

    <?php /** * mysql数据字典在线生成 * @author change */ //配置数据库 $dbserver = "192.168.1.218:3306"; ...

  9. SSH下载的方法2

    ------------------------------下作下载方法二---------------------------------------------------String msg=n ...

  10. javascript 汉字生成拼音

    在网上下载的一个汉字生成拼音的js,很有用,大家一起分享! var PinYin = {"a":"/u554a/u963f/u9515","ai&qu ...