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. win+r 快速启动应用程序

    如何使用WIN+R快捷键快速启动应用程序呢?其实很简单 首先随便在一个盘上建一个新文件夹,随便取什么名字,最好是英文格式,小编以D盘为例,如图 2. 打开文件夹,单击右键,选择“新建”,单击“快捷方式 ...

  2. mysql根据时间查询前一天数据

    MySql数据库如何根据时间查询前一天的数据?本文整理了几个解决方法,有需要的朋友参考下.   本节内容:用MySql怎么根据时间查询前一天的数据. 例1: 代码示例: select * from t ...

  3. Ubuntu 下一个可用的音乐播放器

    参考:http://www.pairsdoll.com/install-audacious-music-palyer-in-ubuntu.html/ 方法:打开terminal,sudo apt-ge ...

  4. hdu4135-Co-prime & Codeforces 547C Mike and Foam (容斥原理)

    hdu4135 求[L,R]范围内与N互质的数的个数. 分别求[1,L]和[1,R]和n互质的个数,求差. 利用容斥原理求解. 二进制枚举每一种质数的组合,奇加偶减. #include <bit ...

  5. 第二百二十四天 how can I 坚持

    实物商品兑换,有点小难搞,其实也没什么难的,也就那些东西,不过好像这就是我设计实现的,干起来挺来劲的. 供暖了,挺暖和的,哈哈. 小米耳机(炫彩版)到了.感觉挺好的. 还在纠结到底要买哪种颜色的羽绒服 ...

  6. Django 1.6 最佳实践: 如何设置和使用 Log(转)

    原文: http://www.weiguda.com/blog/37/ 任何参与过高要求的大型项目的编程人员都明白设置适当的log等级, 创建不同的logger, 记录重要事件的重要性. 正确的设置和 ...

  7. Styling FX Buttons with CSS

    http://fxexperience.com/2011/12/styling-fx-buttons-with-css/ ——————————————————————————————————————— ...

  8. python scp

    scp 0.10.2 Downloads ↓ scp module for paramiko Pure python scp module====================== The scp. ...

  9. filter 过滤序列

    class filter(object): """ filter(function or None, iterable) --> filter object Ret ...

  10. oracle学习 一 (持续更新中)

    首先你需要创建一个表空间,然后,再创建一个用户名,用户名要给他指定一个表空间,并且给这个用户赋予权限, DBA: 拥有全部特权,是系统最高权限,只有DBA才可以创建数据库结构. RESOURCE:拥有 ...