我想知道是否有一种简单的方法来确定 Linux 中“已使用”的内存量。具体来说,是内核和应用程序正在积极使用的内存,不包括缓冲区和缓存内存。我正在寻找类似于 Window 在任务管理器中找到的已用内存报告(您可以在其中看到已用内存的百分比)的内容。
到目前为止,我能想到的最接近的计算解决方案来自此链接:Determining Free Memory on Linux
在我的 Ubuntu 13.0.4 上,做了一个
cat /proc/meminfo
,
然后我计算 100-(((MemFree+Buffers+Cached)/MemTotal)*100)
,它应该给出“已使用”内存的百分比。
这是我发现的获取物理内存百分比的最接近的方法,就像在窗口任务管理器中找到的方法一样。
这看起来是一个有效的方法吗?如果是这样,是否有更直接的方法?
我是
free -m
的粉丝
total used free shared buffers cached
Mem: 1446 1172 273 0 225 821
-/+ buffers/cache: 126 1320
Swap: 1471 0 1471
这以更易于理解的方式向您显示内存统计信息:
sar -r 0
在 Linux 上,我们可以读取 cgroup 的使用情况和限制,以获得可用资源的容器化感知视图。我们可以使用 awk 格式化结果。
awk -v usage="$(cat /sys/fs/cgroup/memory/memory.usage_in_bytes)" \
-v limit="$(cat /sys/fs/cgroup/memory/memory.limit_in_bytes)" \
'BEGIN {
free=limit-usage;
printf("Total (GiB): %02.1f\n Used (GiB): %04.1f\n Free (GiB): %04.1f\n Used (%%): %04.1f\n", limit/1024^3, usage/1024^3, free/1024^3, usage/limit*100)
}'
打印:
Total (GiB): 48.0
Used (GiB): 07.0
Free (GiB): 41.0
Used (%): 14.6