我有一个系统,我们不断地将文件存储到 RAM(在 /tmp/ 下)中,处理它们,然后删除它们。
有些文件我们需要保留在 RAM 中,而另一些则不需要。
我的问题是我想报告剩余多少 RAM 可用于存储文件。
当我使用“免费”时,我可能会收到一份报告,上面写着:
free: 10000 (KB)
然而,当我跑步时,cat /proc/meminfo
我得到了一个不同/更有意义的故事:
memfree: 10000 (KB)
Cached: 100000 (KB)
SwapCached: 0 (KB)
Active: 59000 (KB)
Inactive: 41000 (KB)
好的,为了清楚起见,我对这些值进行了近似/四舍五入。
从这篇文章:linux-非活动内存,我可以看到“非活动”内存是可用的,因此 - 就我而言 - 它是免费的。
所以我应该能够报告 10000 KB + 41000 KB 的空闲(好吧,不是“空闲”空闲,而是可用)内存。
是否有我可以使用的命令(或其他方法)来报告总“可用”内存?
据我了解,我相信总的可用空间是“免费”+“不活跃”。
谢谢
答案1
从 3.14 开始,Linux 内核跟踪实际可用的内存量 -IE无需点击交换即可分配,包括可回收内存 -MemAvailable
在/proc/meminfo
.这已经包括跟踪为不活动的可回收内存,因此甚至不需要添加它。
在较旧的内核上,您可以使用答案中给出的公式如何跨发行版获取可移植的可用内存量?:
awk -v low=$(grep low /proc/zoneinfo | awk '{k+=$2}END{print k}') \
'{a[$1]=$2}
END{
print a["MemFree:"]+a["Active(file):"]+a["Inactive(file):"]+a["SReclaimable:"]-(12*low);
}' /proc/meminfo