使用Ubuntu 14.02并运行命令cat / proc / meminfo,我得到以下内容:
MemTotal: 1007796 kB
MemFree: 64248 kB
MemAvailable: 64876 kB
我想知道MemFree和MemAvailable之间的确切区别。此外,任何关于如何更有效地使用系统资源的提示都将受到赞赏。我订购了一台新笔记本电脑,但目前我正在使用1Gb RAM的机器上进行开发。
注意:我在命令时运行了两个终端和eclipse,所以你可以看到它对多任务很难。
提前致谢。
答案 0 :(得分:5)
/ proc / meminfo:提供估算的可用内存
许多负载平衡和工作负载放置程序检查/ proc / meminfo 估计可用的可用内存量。他们通常这样做 通过加起来“免费”和“缓存”,十年前很好,但是 今天几乎可以肯定是错的。
这是错误的,因为Cached包含不可用的内存 页面缓存,例如共享内存段,tmpfs和ramfs,以及 它不包括可回收的板坯内存,它可以占用大量内存 大多数空闲系统中系统内存的一小部分。
目前,可用于新工作负载的内存量, 没有将系统推入交换,可以从MemFree估算, 活动(文件),非活动(文件)和SReclaimable,以及“低” 来自/ proc / zoneinfo的水印。
然而,这可能在未来发生变化,用户空间确实应该如此 不要指望知道内核内部来估计 为可用内存量。
在/ proc / meminfo中提供这样的估计更方便。 如果将来发生变化,我们只需将其改为一体 的地方。
答案 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)
空闲内存实际上是由内核保留的,没有注册该内存块以供使用。
可用内存是已在内核中注册的内存块,可以立即使用。
判决:我们应该将 可用内存 视为免费内存。多余的空间可以运行更多应用程序。