MemFree和MemAvailable之间的区别

时间:2015-06-16 13:39:06

标签: ubuntu memory memory-management

使用Ubuntu 14.02并运行命令cat / proc / meminfo,我得到以下内容:

MemTotal:        1007796 kB
MemFree:           64248 kB
MemAvailable:      64876 kB

我想知道MemFree和MemAvailable之间的确切区别。此外,任何关于如何更有效地使用系统资源的提示都将受到赞赏。我订购了一台新笔记本电脑,但目前我正在使用1Gb RAM的机器上进行开发。

注意:我在命令时运行了两个终端和eclipse,所以你可以看到它对多任务很难。

提前致谢。

3 个答案:

答案 0 :(得分:5)

/ proc / meminfo:提供估算的可用内存

  

许多负载平衡和工作负载放置程序检查/ proc / meminfo   估计可用的可用内存量。他们通常这样做   通过加起来“免费”和“缓存”,十年前很好,但是   今天几乎可以肯定是错的。

     

这是错误的,因为Cached包含不可用的内存   页面缓存,例如共享内存段,tmpfs和ramfs,以及   它不包括可回收的板坯内存,它可以占用大量内存   大多数空闲系统中系统内存的一小部分。

     

目前,可用于新工作负载的内存量,   没有将系统推入交换,可以从MemFree估算,   活动(文件),非活动(文件)和SReclaimable,以及“低”   来自/ proc / zoneinfo的水印。

     

然而,这可能在未来发生变化,用户空间确实应该如此   不要指望知道内核内部来估计   为可用内存量。

     

在/ proc / meminfo中提供这样的估计更方便。   如果将来发生变化,我们只需将其改为一体   的地方。

来源:https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=34e431b0ae398fc54ea69ff85ec700722c9da773

答案 1 :(得分:2)

可使用内存的数量,可用于启动新的应用而无需交换。

MemFree :系统未使用的物理RAM 的量,以千字节为单位。

尽管我们阅读英语,但对于用户而言,其定义还不够清楚。 MemAvailable是指软件还是用户空间? 应用是什么意思?除了交换以外,还包括大页面吗? 直接地图呢?还有内核页吗?

这又是一个解剖问题,也就是说“可以命名的名称不是常量名称”。

回到现实,我们真正想知道的是如何计算或至少更大。

基于ARM的示例

# cat /proc/meminfo
MemTotal:       1053938048 kB
MemFree:        1050967832 kB
MemAvailable:   1047631704 kB
Buffers:           14972 kB
Cached:           125416 kB
SwapCached:            0 kB

基于Intel的示例

$ cat /proc/meminfo 
MemTotal:       65960628 kB
MemFree:        37493412 kB
MemAvailable:   64537424 kB
Buffers:         5899700 kB
Cached:         19890832 kB
SwapCached:         8672 kB

在打开两个月薪服务器后,问题更加复杂了,与CPU相关吗?

好的,再次回到英语。 https://www.merriam-webster.com/dictionary/

免费:无需费用或费用

可用:存在或准备立即使用

因此,以表为例来说明内存。当我们去餐厅时,有时有免费桌子,但没有。并且有可用的表,但没有更多的可用表。

答案 2 :(得分:1)

空闲内存实际上是由内核保留的,没有注册该内存块以供使用。
可用内存是已在内核中注册的内存块,可以立即使用。

判决:我们应该将 可用内存 视为免费内存。多余的空间可以运行更多应用程序。