[转帖]Linux cache参数调优
https://zhuanlan.zhihu.com/p/136237953
缓存机制(cache)是保证Linux环境下对硬盘/flash操作效率的有效方式。cache建立在内存中,它缓存了硬盘/flash的数据,当脏数据到达一定水限时,再异步地将数据刷入硬盘。这可以加速进程的文件系统访问操作。但是也有风险,当数据未写入硬盘前设备重启,存在数据丢失的风险。
如果缓存相关参数设置得不好,对系统的运行反而会有不良的影响。如果cache过大,当需要把cache中的巨量数据刷入硬盘时,会让系统显得卡顿,甚至无法调度线程。
Linux提供的接口,以支持修改cache容量。
参数说明
cache中脏数据相关参数
sysctl -a | grep dirty可以看到一组相关的内核参数
$ sysctl -a | grep dirty
vm.dirty_background_bytes = 0
vm.dirty_background_ratio = 5
vm.dirty_bytes = 0
vm.dirty_expire_centisecs = 600
vm.dirty_ratio = 10
vm.dirty_writeback_centisecs = 100
- vm.dirty_background_bytes:脏数据量达到此门限后,系统会开始把脏数据写入外存。此时脏数据可能仍然继续写入内存。
- vm.dirty_ratio:脏数据量达到此门限后,系统会阻塞式地将脏数据写入外存,新的数据将被阻塞,无法写入cache。
- vm.dirty_background_bytes与vm.dirty_bytes:与vm.dirty_background_bytes/vm.dirty_ratio类似,差异仅仅是门限的计数单位,不是内存总量的百分比,而是bytes。注意_ratio与_bytes,有且仅有一个组能生效,如果一组被设置了非0值,另一组就应该被置0。
- vm.dirty_writeback_centisecs:表示间隔多长时间,系统去检查一次cache中的数据量是否超过门限值,以百分之一秒为单位。
- vm.dirty_expire_centisecs:表示数据在cache中允许被缓存多长时间。以百分之一秒为单位。
drop cache相关参数与操作
使用top命令,可以查看当前系统中cache的大小。
# top
top - 16:50:19 up 4 days, 7:00, 22 users, load average: 25.06, 24.12, 23.14
Tasks: 493 total, 7 running, 486 sleeping, 0 stopped, 0 zombie
%Cpu(s): 37.1 us, 18.9 sy, 0.0 ni, 42.3 id, 0.0 wa, 0.0 hi, 1.7 si, 0.0 st
KiB Mem : 65622752 total, 30293032 free, 29879144 used, 5450576 buff/cache
KiB Swap: 0 total, 0 free, 0 used. 31415264 avail Mem
使用echo 3 > /proc/sys/vm/drop_caches可以手动清理cache。但这并不是一个好主意。cache有它存在的必要。假设一台网页服务器,在drop_cache之后,所有用户访问的数据都将从硬盘中读出,这会显著地影响用户访问网站的体验。
如果发现cache确实过大,我们应该尽量使用系统提供的参数来调优,不采用主动drop_cache的方式。
- vm.vfs_cache_pressure:表示系统清理cache的“努力程度”。默认值为100。越大则表示内核会越频繁地回收cache。
参数建议
在一台内存为64G,硬盘读写量长期保持在500KB/s的服务器上,在未调优前,经常发生因系统回收cache导致的系统挂起。因此,我们考虑修改参数,提高flush dirty和cache回收的频率,避免脏数据与cache累积过多,一次性回收导致的系统挂起无响应。
以下参数作参考:
vm.dirty_background_bytes = 0
vm.dirty_background_ratio = 5
vm.dirty_bytes = 0
vm.dirty_expire_centisecs = 600
vm.dirty_ratio = 10
vm.dirty_writeback_centisecs = 100
vm.vfs_cache_pressure = 500
[转帖]Linux cache参数调优的更多相关文章
- Linux Linux内核参数调优
Linux内核参数调优 by:授客 QQ:1033553122 关于调优的建议: 1.出错时,可以查看操作系统日志,可能会找到一些有用的信息 2.尽量不要“批量”修改内核参数,笔者就曾这么干过,结果“ ...
- Linux内核参数调优
用法: vim /etc/sysctl.conf #修改内容 sysctl -p #生效 相关参数仅供参考,具体数值还需要根据机器性能,应用场景等实际情况来做更细微调整. net.core.net ...
- LINUX内核参数调优集锦
1.linux内核参数注释 2.两种修改内核参数方法 3.内核优化参数生产配置 1.linux内核参数注释 以下表格中红色字体为常用优化参数 根据参数文件所处目录不同而进行分表整理 下列文件所在目录: ...
- linux内核参数调优,缓冲区调整,tcp/udp连接管理,保持,释放优化,gossary,terms
changing a readonly file (linu single user mode)
- (转)linux IO 内核参数调优 之 参数调节和场景分析
1. pdflush刷新脏数据条件 (linux IO 内核参数调优 之 原理和参数介绍)上一章节讲述了IO内核调优介个重要参数参数. 总结可知cached中的脏数据满足如下几个条件中一个或者多个的时 ...
- Linux内核 TCP/IP、Socket参数调优
Linux内核 TCP/IP.Socket参数调优 2014-06-06 Harrison.... 阅 9611 转 165 转藏到我的图书馆 微信分享: Doc1: /proc/sy ...
- Linux上TCP的几个内核参数调优
Linux作为一个强大的操作系统,提供了一系列内核参数供我们进行调优.光TCP的调优参数就有50多个.在和线上问题斗智斗勇的过程中,笔者积累了一些在内网环境应该进行调优的参数.在此分享出来,希望对大家 ...
- linux 服务器安全加固和内核参数调优 nf_conntrack
0.内部设置跳板机,服务器只能通过跳板机登录1.禁止ROOT用户远程登录和登录端口 禁止ROOT用户远程登录 .打开 /etc/ssh/sshd_config PermitRootLogin no . ...
- MySQL 优化之 Linux系统层面调优
MySQL 一般运行于Linux系统中.对于MySQL的调优一般分为Linux操作系统层面的调优和MySQL层面的调优(当然还有架构层面.业务层面.应用程序层面的调优).操作系统主要是管理和分配硬件资 ...
- 《linux性能及调优指南》 3.5 网络瓶颈
3.5 Network bottlenecks A performance problem in the network subsystem can be the cause of many prob ...
随机推荐
- JAVAAPI实现血缘关系Rest推送到DataHub V0.12.1版本
DataHub 更青睐于PythonAPI对血缘与元数据操作 虽然开源源码都有Java示例和Python示例:但是这个API示例数量简直是1:100的差距!!不知为何,项目使用Java编写,示例推送偏 ...
- 变更(重命名)AD域名称
文章来自:https://blog.51cto.com/sxleilong/1377731 示例将域名contoso.com重命名为Corp.sxleilong.com 查看当前fsmo的5个角色. ...
- 在 Walrus 上轻松集成 OpenTofu
OpenTofu 是什么? OpenTofu 是一个开源的基础设施即代码(IaC)框架,被提出作为 Terraform 的替代方案,并由 Linux 基金会管理.OpenTofu 的问世为应对 Has ...
- 记一次 MySQL timestamp 精度问题的排查 → 过程有点曲折
开心一刻 下午正准备出门,跟正刷着手机的老妈打个招呼 我:妈,今晚我跟朋友在外面吃,就不在家吃了 老妈拿着手机跟我说道:你看这叫朋友骗缅北去了,tm血都抽干了,多危险 我:那是他不行,你看要是吴京去了 ...
- 云图说|新一代Serverless应用托管引擎——CAE
本文分享自华为云社区<云图说|新一代Serverless应用托管引擎--CAE>,作者:阅识风云. 开发运营一个应用软件,面临种种挑战:软件栈厚重.开发上线慢.资源易浪费.运维投入高.突发 ...
- 逼疯UE设计师,不可不知的提升产品用户体验的10个测试方法
摘要:用户体验的描述比较主观,产品功能的可用性.可靠性.性能等都会影响用户的使用体验,比如功能bug问题也会说体验不好,程序崩溃也会说体验不好,性能卡顿会说体验不好,那是不是都在用户体验测试的范围呢? ...
- 开心档之C++ 数据封装
C++ 数据封装 所有的 C++ 程序都有以下两个基本要素: **程序语句(代码):**这是程序中执行动作的部分,它们被称为函数. **程序数据:**数据是程序的信息,会受到程序函数的影响. 封装是面 ...
- 火山引擎 DataTester:构建增长闭环,3-5 人即可搭建企业增长团队
更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 增长是一个老生常谈的话题,对许多企业而言这个词都很熟悉,但在实践过程中仍然有很多的疑问,比如指标体系应该怎么搭建? ...
- Python openpyxl 将 Excel中的汉字 转换成拼音首字母
将Excel中的汉字列,转换成拼音首字母,并保存 需要安装导入 pypinyin.openpyxl 库 # pip install pypinyin from pypinyin import laz ...
- BBS项目(一):BBS需求分析 数据表设计 注册登录功能实现
目录 BBS需求分析 数据表设计 注册页面前端 上传头像 提交数据 FormData 注册后端逻辑 接受参数 验证参数 数据入库 密码加盐操作 返回数据 登录页面前端 生成验证码 前端提交数据 登录后 ...