我们有没有swap的嵌入式Linux系统。
目前,当内存使用百分比增加超过阈值时,我们必须发出警报。并在内存使用百分比增加超过(更高)阈值时重新启动。
为什么要这样做:如果某些程序泄漏,我们可以在内核开始杀死我们的进程之前进行安全重启(这可能导致数据损坏或不可用)。
但是我们有一个问题:
如何计算可用于我们目的的内存使用率-%?
我们尝试使用 /proc/meminfo 的值来计算内存使用情况:
/ # cat /proc/meminfo
MemTotal: 126744 kB
MemFree: 58256 kB
Buffers: 16740 kB
Cached: 31308 kB
SwapCached: 0 kB
Active: 37580 kB
Inactive: 24000 kB
Run Code Online (Sandbox Code Playgroud)
没有成功:
(MemTotal - MemFree) 不可用,因为它包含例如缓存。
(MemTotal - MemFree - Buffers - Cached)确实忽略了 的影响Inactive。所以它也给出了太大的内存使用值。
(MemTotal - MemFree - Buffers - Cached - Inactive) 不可用,因为结果可能为负。