Linux中可用于应用程序的内存总量
我正在编写一个
shell脚本,需要知道系统中可用(可免费回收)内存的总量.为此,我正在解析free命令的输出.免费的典型输出如下:
$free -m total used free shared buffers cached Mem: 2488 965 1523 0 83 517 -/+ buffers/cache: 363 2124 Swap: 1565 0 1565 通常认为由缓冲区和缓存校正的“空闲”列表示可以自由或可回收的内存,因此可用于应用程序.因此,在上面的示例中,我们将有大约2124 MB可用. 但是,如果正在使用tmpfs,这是不正确的,因为tmpfs使用的任何内存都包含在“缓存”中,但此内存不可回收(this article中的更多信息) 那么我们怎样才能找出实际可用的内存量? 解决方法
看起来获取可用内存量并不像“缓存空闲缓冲区 – shmem”那么容易.为了解决这个问题,Linux内核3.14引入了一个名为“MemAvailable”的新指标,它考虑了多个因素:
更多信息可以在in the kernel commit message找到. 对于早于3.14的内核,there are tools可以以与内核计算方式相同的方式模拟此度量. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |