一次监控内存的猜想
一天一个客户问,他们现在用zabbix做的监控平台看到的内存,跟他们自己用算法算出来的看到的相差非常大,想问问我为啥会这样。
看到图以后第一时间找客户要了一下现在zabbix计算内存的公式,以及现阶段用free -m
显示情况
第一时间能看出图中监控数据不一致的情况其实结论很清楚,就是zabbix的算法是1- available/total 客户是用1- free/total。替换成之前的就行。
但是不理解的点在 为什么 free的值比available大很多,在我印象中available作为程序可看到的内存 一般是available ≈ free + cache/buff
所以 free这么大,但是available不大的情况很少见。
后来经过猜想 以及跟大佬求证发现 实际free的值除了真实内存还会讲部分swap也计算进去。
跟大佬激烈讨论
有swap情况,明显free > available
没有swap情况available > free
`官网下 linux对内存定义的详细描述,free里面是会算部分的swap进去,但是available没算swap。
Estimation of how much memory is available for starting
new applications, without swapping. Unlike the data
provided by the cache or free fields, this field takes
into account page cache and also that not all reclaimable
memory slabs will be reclaimed due to items being in use
(MemAvailable in /proc/meminfo, available on kernels 3.14,
emulated on kernels 2.6.27+, otherwise the same as free)`
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!