前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何更改操作系统文件缓存刷新策略?

如何更改操作系统文件缓存刷新策略?

作者头像
党志强
发布2020-01-30 16:57:27
2.4K0
发布2020-01-30 16:57:27
举报
文章被收录于专栏:敏而好学敏而好学

环境说明

以下针对linux操作系统,在centos/RHEL 6、centos/RHEL 7上测试有效。

相关参数

和文件系统写缓存策略相关的主要是下面两个参数,其它相关参考可自行谷歌:

/proc/sys/vm/dirty_ratio

文件系统写缓冲区的大小,单位是百分比,表示系统内存的百分比,表示当写缓冲使用到系统内存多少的时候,开始向磁盘写出数据。增大之会使用更多系统内存用于磁盘写缓冲,也可以极大提高系统的写性能。但是,当需要持续、恒定的写入时,应该降低其数值。

/proc/sys/vm/dirty_background_ratio

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

对比说明

vm.dirty_background_ratio: 这个参数指定了当文件系统缓存脏页数量达到系统内存百分之多少时(如5%)就会触发pdflush/flush/kdmflush等后台回写进程运行,将一定缓存的脏页异步地刷入外存;

vm.dirty_ratio: 而这个参数则指定了当文件系统缓存脏页数量达到系统内存百分之多少时(如10%),系统不得不开始处理缓存脏页(因为此时脏页数量已经比较多,为了避免数据丢失需要将一定脏页刷入外存);在此过程中很多应用进程可能会因为系统转而处理文件IO而阻塞。

正常都是先达到vm.dirty_background_ratio的条件然后触发flush进程进行异步的回写操作,但是这一过程中应用进程仍然可以进行写操作,如果多个应用进程写入的量大于flush进程刷出的量那自然会达到vm.dirty_ratio这个参数所设定的坎,此时操作系统会转入同步地处理脏页的过程,阻塞应用进程。

也就是说,正常vm.dirty_background_ratio < vm.dirty_ratio才有意义。

在经常有大量写入操作的系统中,应该分别调低这两个参数的值,加快数据刷盘的频率,从而避免因系统同步处理文件IO而导致相关进程处于D状态。

参数修改方法

临时生效方法(重启后失效):

代码语言:javascript
复制
echo 5 >/proc/sys/vm/dirty_background_ratio
echo 10 >/proc/sys/vm/dirty_ratio

或者

代码语言:javascript
复制
sysctl -w vm.dirty_background_ratio=5
sysctl -w vm.dirty_ratio=10

永久生效方法:

代码语言:javascript
复制
echo "vm.dirty_background_ratio = 5" >> /etc/sysctl.conf
echo "vm.dirty_ratio = 10" >> /etc/sysctl.conf
sysctl -p /etc/sysctl.conf

参考: http://blog.sina.com.cn/s/blog_448574810101k1va.html

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-05-07 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 环境说明
  • 相关参数
  • 对比说明
  • 参数修改方法
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档