参数说明

通过top,free,vmstat命令可看到内存使用情况

free 是真正尚未被使用的物理内存数量。

available 是应用程序认为估算的可用内存数量

优先从free中获取,如果free空间不够,就会:抢内存和缓冲,回收缓存和缓冲区以供给应用程序的请求

常见的现象是available>free

因为常见的计算公式是:
available = free + buffer + cache (估算)
必然available >free

遇到如下情况free>available

因是显示项目,所以一台机器上扎堆了一大堆容器,发现此问题;
在这里插入图片描述

原因分析

一定还存在什么误差未考虑
最低保留内存参数:cat /proc/sys/vm/min_free_kbytes
所以更准备的可用内存公式应该是:
available = free + buffer + cache (估算) - LowWaterMark

此现象也说明,内存已经不够用,需要增加内存

修改最小保留内存

单位为kb

  • 临时修改,重启机器后还原
echo 102400 > /proc/sys/vm/min_free_kbytes

cat /proc/sys/vm/min_free_kbytes
  • 永久修改,重启机器自动配置
vi /etc/sysctl.conf 
#最后一行添加:
vm.min_free_kbytes=102400

参考:

https://blog.csdn.net/wwqwwqwwq352/article/details/123734357
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=34e431b0ae398fc54ea69ff85ec700722c9da773
https://ask.csdn.net/questions/763648
https://zhuanlan.zhihu.com/p/548675607
https://blog.csdn.net/reliveIT/article/details/112578216

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐