MemFree和MemAvailable之间的区别

Zar*_*619 3 memory ubuntu memory-management

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

MemTotal:        1007796 kB
MemFree:           64248 kB
MemAvailable:      64876 kB
Run Code Online (Sandbox Code Playgroud)

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

注意:我在命令时运行了两个终端和eclipse,所以你可以看到多任务是多么困难.

提前致谢.

The*_*ast 5

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

许多负载平衡和工作负载放置程序检查/ proc/meminfo以估计可用的可用内存量.他们通常通过添加"免费"和"缓存"来实现这一点,这在十年前还不错,但今天几乎可以肯定是错误的.

这是错误的,因为Cached包含不能作为页面缓存释放的内存,例如共享内存段,tmpfs和ramfs,并且它不包括可回收的slab内存,它可以占用大部分空闲系统上的大部分系统内存.很多文件.

目前,可以从MemFree,Active(文件),Inactive(文件)和SReclaimable估计新工作负载可用的内存量,而无需将系统推入交换,以及来自/的"低"水印PROC/zoneinfo中.

但是,这可能在未来发生变化,并且实际上不应该期望用户空间知道内核内部以获得可用内存量的估计.

在/ proc/meminfo中提供这样的估计更方便.如果将来发生变化,我们只需要在一个地方进行更改.

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


Lin*_*ive 5

MemAvailable:可用于启动新应用程序内存量,无需交换。

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
Run Code Online (Sandbox Code Playgroud)

基于英特尔的示例

$ cat /proc/meminfo 
MemTotal:       65960628 kB
MemFree:        37493412 kB
MemAvailable:   64537424 kB
Buffers:         5899700 kB
Cached:         19890832 kB
SwapCached:         8672 kB
Run Code Online (Sandbox Code Playgroud)

可惜开了两台月付服务器,问题比较复杂,是不是跟CPU有关?

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

免费:不花费或收取任何费用

可用:存在或可立即使用

所以以表格作为记忆的例子。当我们去restraut时,有时有空桌但没有空位;并且有可用的桌子,但没有更多的免费桌子。