深圳松岗网站建设wordpress xmlseo
news/
2025/9/24 14:01:24/
文章来源:
深圳松岗网站建设,wordpress xmlseo,ui界面设计案例分析,企业手机网站建设行情转自#xff1a;技术分享 | MemAvailable 是怎么计算的-腾讯云开发者社区-腾讯云
背景
前两天安装 OceanBase 时遇到一个小问题#xff1a; 很明显#xff0c;安装OB时要求服务器可用内存至少 8G#xff0c;不达标就无法安装。为了凑这3台10G内存的服务器我已经费了不少劲…转自技术分享 | MemAvailable 是怎么计算的-腾讯云开发者社区-腾讯云
背景
前两天安装 OceanBase 时遇到一个小问题 很明显安装OB时要求服务器可用内存至少 8G不达标就无法安装。为了凑这3台10G内存的服务器我已经费了不少劲了free -m 输出中 free 不是有 9G 吗为什么还报错 仔细一看上图available 只有 6.3G而 OB 安装报错的 Free 其实是 available。
那为什么 free -m 输出中free 有 9.3G而 available 只有 6.3G呢
通常我们会把 MemAvailable 看成是 buffer/cache、free 之和。但实际上不是它其实还跟 min_free_kbytes 有着密切关系。
min_free_kbytes
kswapd 是专门用来定期回收内存的进程。为了衡量内存的使用情况定义了三个内存阈值watermark也称为水位分别是 watermarkmin/low/high 上图基本揭示了几个水位的含义当 MemFree 低于 watermarklow 时kswapd 进行内存回收直到空闲内存达到 watermarkhigh 后停止回收。如果申请内存的速度太快导致空闲内存降至 watermarkmin 后内核就会进行 direct reclaim直接回收用回收上来的空闲页满足内存申请这样会阻塞应用程序。而 watermarkmin 的大小等于内核参数 min_free_kbytes 的值其他几个水位的关系是
watermarklow watermarkmin*5/4watermarkhigh watermarkmin*3/2
MemAvailable
显然 watermarkmin 以下的内存属于系统的自留内存不会给普通进程申请使用。而 MemAvailable 意为可以分配使用的内存因此它不应当包含这一块内存。实际上其计算公式为
MemAvailable MemFree - watermark[LOW] (PageCache - min(PageCache / 2, watermark[LOW]))
知道了 MemAvailable 是怎么计算的接下来就很简单了先查看 min_free_kbytes 的设置
[rootobserver2 ~]# cat /proc/sys/vm/min_free_kbytes
2097152
2G 是OB 的部署规范由于是测试环境将它修改为64M后MemAvailable 就符合要求了 min_free_kbytes 设置建议
OB 的部署规范中规定 min_free_kbytes2G不得不说这个点很细节因为
系统会根据内存大小自动计算出 min_free_kbytes 大小但并不是线性关系取值范围是 128K-64M如果系统开启了大页则最大值通常会超过 64M但也不会很大以下面这台服务器为例256G内存min_free_kbytes只有 132M
rootidrc-110:~# cat /proc/sys/vm/min_free_kbytes
135168
rootidrc-110:~# free -mtotal used free shared buff/cache available
Mem: 257897 60060 2068 18161 195768 178009
Swap: 616 6 610
如果 min_free_kbytes 设置的很小则系统剩余可用内存容易触底direct reclaim 会造成性能严重降低。相反如果设置的很大则 watermarkmin/low/high 这3个水位都会很大经常触发内存回收使内存利用率降低。
所以为系统预留2G内存十分合理是一个很容易被忽略的优化点。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/915789.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!