文档章节

linux下proc里关于磁盘性能的参数

f
 ffredy
发布于 2015/11/04 10:04
字数 1592
阅读 46
收藏 4

  我们在磁盘写操作持续繁忙的服务器上曾经碰到一 个特殊的性能问题。每隔 30 秒,服务器就会遇到磁盘写活动高峰,导致请求处理延迟非常大(超过3秒)。后来上网查了一下资料,通过调整内核参数,将写活动的高峰分布成频繁的多次写, 每次写入的数据比较少。这样可以把尖峰的写操作削平成多次写操作。以这种方式执行的效率比较低,因为内核不太有机会组合写操作。但对于繁忙的服务器,写操 作将更一致地进行,并将极大地改进交互式性能。
  下面是相关参数的调整:

一、2.6内核下

  1、/proc/sys/vm/dirty_ratio  
  这个参数控制文件系统的文件系统写缓冲区的大小,单位是百分比,表示系统内存的百分比,表示当写缓冲使用到系统内存多少的时候,开始向磁盘写出数据。增大 之会使用更多系统内存用于磁盘写缓冲,也可以极大提高系统的写性能。但是,当你需要持续、恒定的写入场合时,应该降低其数值,:
  echo '1' > /proc/sys/vm/dirty_ratio 

  2、/proc/sys/vm/dirty_background_ratio  
  这个参数控制文件系统的pdflush进程,在何时刷新磁盘。单位是百分比,表示系统内存的百分比,意思是当写缓冲使用到系统内存多少的时 候,pdflush开始向磁盘写出数据。增大之会使用更多系统内存用于磁盘写缓冲,也可以极大提高系统的写性能。但是,当你需要持续、恒定的写入场合时, 应该降低其数值,:
  echo '1' > /proc/sys/vm/dirty_background_ratio

  3、/proc/sys/vm/dirty_writeback_centisecs  
  这个参数控制内核的脏数据刷新进程pdflush的运行间隔。单位是 1/100 秒。缺省数值是500,也就是 5 秒。如果你的系统是持续地写入动作,那么实际上还是降低这个数值比较好,这样可以把尖峰的写操作削平成多次写操作。设置方法如下:
  echo "100" > /proc/sys/vm/dirty_writeback_centisecs  如果你的系统是短期地尖峰式的写操作,并且写入数据不大(几十M/次)且内存有比较多富裕,那么应该增大此数值:
  echo "1000" > /proc/sys/vm/dirty_writeback_centisecs

  4、/proc/sys/vm/dirty_expire_centisecs  
  这个参数声明Linux内核写缓冲区里面的数据多“旧”了之后,pdflush进程就开始考虑写到磁盘中去。单位是 1/100秒。缺省是 30000,也就是 30 秒的数据就算旧了,将会刷新磁盘。对于特别重载的写操作来说,这个值适当缩小也是好的,但也不能缩小太多,因为缩小太多也会导致IO提高太快。
  echo "100" > /proc/sys/vm/dirty_expire_centisecs  
  当然,如果你的系统内存比较大,并且写入模式是间歇式的,并且每次写入的数据不大(比如几十M),那么这个值还是大些的好。

  5、/proc/sys/vm/vfs_cache_pressure
  该文件表示内核回收用于directory和inode  cache内存的倾向;缺省值100表示内核将根据pagecache和swapcache,把directory和inode  cache保持在一个合理的百分比;降低该值低于100,将导致内核倾向于保留directory和inode  cache;增加该值超过100,将导致内核倾向于回收directory和inode  cache 
  缺省设置:100   

  6、/proc/sys/vm/min_free_kbytes
  该文件表示强制Linux  VM最低保留多少空闲内存(Kbytes)。  缺省设置:724(512M物理内存)  

  7、/proc/sys/vm/nr_pdflush_threads
  
该文件表示当前正在运行的pdflush进程数量,在I/O负载高的情况下,内核会自动增加更多的pdflush进程。  
  缺省设置:2(只读)  

  8、/proc/sys/vm/overcommit_memory
  
该文件指定了内核针对内存分配的策略,其值可以是0、1、2。
  0,  表示内核将检查是否有足够的可用内存供应用进程使用;如果有足够的可用内存,内存申请允许;否则,内存申请失败,并把错误返回给应用进程。
  1,  表示内核允许分配所有的物理内存,而不管当前的内存状态如何。
  2,  表示内核允许分配超过所有物理内存和交换空间总和的内存(参照overcommit_ratio)。  
  缺省设置:0

  9、/proc/sys/vm/overcommit_ratio
  该文件表示,如果overcommit_memory=2,可以过载内存的百分比,通过以下公式来计算系统整体可用内存。
  系统可分配内存=交换空间+物理内存*overcommit_ratio/100   缺省设置:50(%)  

  10、/proc/sys/vm/page-cluster
  该文件表示在写一次到swap区的时候写入的页面数量,0表示1页,1表示2页,2表示4页。  缺省设置:3(2的3次方,8页) 

  11、/proc/sys/vm/swapiness
  该文件表示系统进行交换行为的程度,数值(0-100)越高,越可能发生磁盘交换。


五.总结

 

1.通过这四个参数,可以控制脏数据在内存中占用多大比例写入磁盘文件系统;

2.脏数据在内存中最多可以存在多长时间,超过这个时间就写入磁盘;

3.单个任务在内存中的脏数据所占内存比例多大则写入磁盘;

4.pdflush内核线程执行的频率。

 

    

六.注意

 

1. 区分  dirty_background_ratio   与  dirty_ratio   的不同  。

 

 

2. 数据库系统 ORACLE  和  MySQL的性能调优很多都是基于OS层面的。即使数据库进行调优,具体参数还得受限于OS。因为RDBMS 安装在 OS上。

 

 

七.通过下面命令查看这四个参数

 find /proc/sys/vm  -name dirty*  -print   | while  read   name; do  echo $name ;cat ${name}; done

 

例如:

[root@localhost Desktop]# find /proc/sys/vm  -name dirty*  -print   | while  read   name; do  echo $name ;cat ${name}; done

/proc/sys/vm/dirty_expire_centisecs

2999

/proc/sys/vm/dirty_writeback_centisecs

499

/proc/sys/vm/dirty_ratio

40

/proc/sys/vm/dirty_background_ratio

10

[root@localhost Desktop]# 

 

 

八.调整方法

1.(法一)  vi  /etc/sysctl.conf  

然后修改即可比如

 

vm.dirty_ratio =  30

 

sysctl -p  生效(重启有效)

 

2.(法二)  echo  30 >  /proc/sys/vm/dirty_ratio

 

echo   30 > /proc/sys/vm/dirty_ratio

 

这种方法重启无效


本文转载自:http://www.cnblogs.com/eddy-he/archive/2012/05/15/2501767.html

f
粉丝 6
博文 48
码字总数 37775
作品 0
浦东
私信 提问
【转】Linux内核源码详解——命令篇之iostat

iostat源码共563行,应该算是Linux系统命令代码比较少的了。源代码中主要涉及到如下几个Linux的内核文件: 1、/proc/diskstats——该文件是内核2.6以上的系统中的,记录了从Linux系统启动之后...

shangluyi
2018/06/26
0
0
从磁盘同步看linux的机制和策略

linux操作系统是典型的机制和策略相分离的系统,机制和策略一直是设计领域一直关注的重要问题,它们的结合程度直接关系到系统的稳定性和可扩展性。今天做了一个linux上膝上电脑的电源管理的脚...

晨曦之光
2012/04/10
489
0
linux查看硬件配置的命令

linux查看硬件配置的命令 1.查看机器所有硬件信息: dmidecode |more dmesg |more 这2个命令出来的信息都非常多,所以建议后面使用"|more"便于查看 2.查看CPU信息 方法一: Linux下CPU相关的参数...

长平狐
2013/06/03
1K
0
【运维小分享】linux性能分析及调优

第一节:cpu 性能瓶颈 计算机中,cpu是最重要的一个子系统,负责所有计算任务;基于摩尔定律的发展,cpu是发展最快的一个硬件,所以瓶颈很少出现在cpu上;我们线上环境的cpu都是多核的,并且...

xierex
2018/07/04
0
0
你需要知道的16个Linux服务器监控命令

英文原文: hp.com,翻译:oschina 如果你想知道你的服务器正在做干什么,你就需要了解一些基本的命令,一旦你精通了这些命令,那你就是一个 专业的 Linux 系统管理员。 有些 Linux 发行版会...

Ryan-瑞恩
2014/11/27
147
0

没有更多内容

加载失败,请刷新页面

加载更多

聊聊nacos的notifyConfigInfo

序 本文主要研究一下nacos的notifyConfigInfo CommunicationController nacos-1.1.3/config/src/main/java/com/alibaba/nacos/config/server/controller/CommunicationController.java @Cont......

go4it
昨天
2
0
队列-顺序(c/c++实现)

队列是在线性表功能稍作一改形成的,在生活中排队是不能插队的吧,先排队先得到对待,慢来得排在最后面,这样来就形成了”先进先出“的队列。 队列(顺序)实现的三个步骤: 定义所需的功能(...

白客C
昨天
5
0
安装tomcat部署网站/nginx代理tomcat/tomcat部署多个网站

来源:https://blog.csdn.net/Powerful_Fy 安装jdk: Oracle官方下载 https://www.oracle.com/technetwork/java/javase/downloads/index.html yum安装openjdk: 1.查找可使用的jdk包: [roo......

asnfuy
昨天
4
0
Linux 安装 Android studio

官网下载linux 版本 android xxxxx-xxxx.tar.gz 然后 找到它 解压缩 得到 android-studio文件夹 执行 [root@monkey java]# mv ./android-studio /opt [root@monkey java]# cd /opt/android-s......

MrLins
昨天
6
0
VMware vSphere虚拟机的迁移

VMware vSphere 6.7下,虚拟机的迁移按照移动的内容,可以分为4种: 1)冷迁移(cold migration) 2)热迁移(vMotion) 3)存储热迁移(storage vMotion) 4)完全热迁移(shared-nothing ...

大别阿郎
昨天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部