内存使用率+可用率不等于100
Q:linux大盘显示的内存使用率(mem_used_percent)+内存可用率(mem_available_percent)为什么不是100%
A:
两个指标的计算公式如下:
- used_percent = 100 * Used / Total
- available_percent = 100 * Available / Total
再拆解分子:
- Used = Total - Free - Buffers - Cached
- Available 两种情况,取值MemAvailable(MemAvailable is in /proc/meminfo (kernel 3.14+)),另一种是没有获取到 MemAvailable 需要手动计算
MemFree不能代表全部可用的内存,系统中有些内存虽然已被使用但是可以回收的,比如cache/buffer、slab都有一部分可以回收,所以这部分可回收的内存加上MemFree才是系统可用的内存,即MemAvailable。/proc/meminfo中的MemAvailable是内核使用特定的算法估算出来的,要注意这是一个估计值,并不精确 ——[转载]/PROC/MEMINFO之谜