一旦可以让 monit 监视内存使用情况……
检查系统 foo 如果内存使用率 > 95% 则发出警报
它是否使用可用的 RAM,或可用的 -/+ 缓冲区/缓存?(或其他什么?)
# 免费 -m 已使用的、可用的、缓存的共享缓冲区总数 内存:998 851 146 0 114 70 -/+ 缓冲区/缓存:666 332 交换:2047 54 1993
答案1
这可以从 monit 的源码中获取https://github.com/arnaudsj/monit/tree/master/process。
对于 Linux,该值计算为系统信息库来自 /proc/meminfo :
si->total_mem_kbyte = systeminfo.mem_kbyte_max - mem_free - buffers - cached;
换句话说,monit 使用内存使用量 MemTotal - MemFree - Buffers - Cached。
您的案例为 998 - 146 - 114 - 70 = 668
答案2
在最新的 Monit(即:5.25.x)上,该memory usage
值考虑了 ZFS ARC 缓存 - 因此如果某些程序正在使用 ZFS,则使用的内存不会因可回收的 ARC 数据而膨胀。
当前内存使用量计算如下:
si->memory.usage.bytes = systeminfo.memory.size - zfsarcsize -
(uint64_t)(mem_free + buffers + cached + slabreclaimable) * 1024;
看这里了解更多详细信息。
答案3
据我所知,它基于:
used memory - cached = 851 - 70 = 781