参数说明
通过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