total used free shared buffers cached
Mem: 12286456 11715372 571084 0 81912 6545228
-/+ buffers/cache: 5088232 7198224
Swap: 24571408 54528 24516880
我不知道如何在Linux中计算内存。我认为它说5088232用于7198224是免费的,这意味着它实际上消耗5GB的RAM?
#1 楼
值的含义第一行的意思是:
total
:您的总(物理)RAM(不包括内核永久保留的一小部分)在启动时为其自身保留);这就是为什么它显示ca。 11.7 GiB,而不是您可能拥有的12 GiB。used
:操作系统正在使用的内存。free
:未使用的内存。total
= used
+ free
shared
/ buffers
/ cached
:显示特定用途的内存使用,这些值包含在used
的值中。 /> 第二行给出调整后的第一行值。它给出
used
的原始值减去buffers+cached
的总和,再加上free
的原始值加上buffers+cached
的总和,因此得到其标题。这些新值通常比第一行更有意义。最后一行(
Swap:
)提供有关交换空间使用情况的信息(即已临时移至磁盘的内存内容)。 背景
要真正理解数字的含义,您需要了解Linux中的虚拟内存(VM)子系统的背景知识。只是一个简短的版本:Linux(像大多数现代OS一样)将始终尝试使用空闲RAM来缓存内容,因此
Mem: free
几乎总是很低。因此,显示了行-/+ buffers/cache:
,因为它显示了忽略高速缓存时可用的内存量。 如果
free
行中的-/+ buffers/cache:
值变低,则Linux系统的内存确实不足。>有关数字含义的更多详细信息,请参见例如问题:
在Linux中,free命令报告的“缓冲区”和“缓存”之间有什么区别?
为什么Red Hat Linux报告较少的空闲内存?系统比实际可用的系统要多?
procps 3.3.10中的更改
请注意,在procps 3.3.10(2014年发布)中更改了
free
的输出。现在报告的列为“总计”,“已使用”,“免费”,“共享”,“ buff / cache”,“可用”,并且某些值的含义已更改,主要是为了更好地说明Linux内核的面板缓存。有关动机,请参见Debian Bug报告#565518,
free
输出从14.04到16.04的变化意味着什么?有关更多详细信息。评论
您能否扩展Linux可能缓存的内容?是被访问的文件还是网络的东西?
– CMCDragonkai
15年8月2日在13:08
@CMCDragonkai:serverfault.com/questions/23433/…的答案详细说明了构成“缓存”和“缓冲区”的内容。
–sleske
15年8月2日,16:03
我认为语句“ total = used + free”是正确的,请参见我的计算机上的以下输出:$ free -h总共使用了可用的共享buff /缓存可用内存:3.4G 585M 152M 11M 2.6G 2.5G交换:4.0 G 84M 3.9G
–SCBuergel.eth
17-2-13在9:35
@Sebastian:嗯,很有趣。似乎免费的输出已更改(在3.3.10中)。我编辑了答案以提及这一点。如果您对此更改感兴趣,请考虑提出一个新问题:-)。
–sleske
17年2月13日在10:17
总计=已使用+免费+ buff /缓存
–danger89
18-10-26在17:41
#2 楼
缓冲区/缓存行显示了程序使用了多少内存(这些列的第一列),而程序可以免费使用(第二列)。这是一个相当深奥的数字,而不是您在实践中会真正看到的东西。评论
第一行(内存行)是什么意思
–穆罕默德Zeeshan
09年11月17日在11:14
您已经在系统中安装了12GB的RAM,其中已使用11.5GB,当前未使用0.5GB左右。大约82MB的已用内存用于缓冲区(网络连接等),而大约6.5GB的内存用于在磁盘上存储数据的副本,因此,如果再次需要,则不必重新读取数据。
–womble♦
09年11月17日在11:33
@穆罕默德:“ 82MB是免费的。” -不,57MiB是免费的(但这并不重要,请参阅我的回答)。 “现在,这一切都意味着系统已达到极限”-不,一点也不。该系统具有用于缓存的6.9GiB,可以很容易地将其提供给应用程序,因此空间很大。此外,交换使用率非常低(大约50MiB)。如果内存开始变紧,交换使用率将上升。目前,您几乎没有使用一半的RAM。
–sleske
09年11月17日上午11:50
您是否考虑过在某个时候问一个新问题?
–womble♦
09年11月17日在13:27
我不同意,缓冲区/缓存行是系统的实际可用内存,因此如果您想知道系统是否有程序空间,则最相关。
–eckes
15年7月4日在15:27
#3 楼
当前接受的2009年答案已经过时。重要的是要确保所获取的信息正确无误,并且与free
的版本(在Debian软件包procps
中分发或在您的发行版中等效)匹配。查看man free
和man 5 proc
的输出也很有帮助,其中包含有关/proc/meminfo
的信息,free
是从Linux上获取free
数据的文件。默认情况下,
-h
的输出以kb为单位(1 kibibyte) = 1024字节),如您在手册页中所见。我更喜欢使用Mem
参数,该参数显示后缀,如下所示:$ free -h
total used free shared buff/cache available
Mem: 15Gi 6.1Gi 1.9Gi 301Mi 7.5Gi 8.8Gi
Swap: 979Mi 0B 979Mi
第一行
total
的意思是:MemTotal
(Mem):已安装的总内存(即SwapTotal
加上/proc/meminfo
的used
),这是RAM中的所有内存加上分配给Swap的内存。br />
total - free - buffers - cache
(Mem):未使用的内存(即free
加MemFree
),这是RAM和Swap中任何东西(甚至是缓存)未使用的所有内存。 Mem):这是主要用于SwapFree
(shared
)tmpfs
(Mem),Shmem
和buff/cache
的总和:由内核缓冲区(
buffers
)使用,这是内核可以利用的内存。cache
:页面高速缓存和平板使用的内存(buffers
和Buffers
)。页面高速缓存包含高速缓存到RAM中的文件系统中文件的内容,因此,数量很多通常是一件好事。我认为“平板”是类似的缓存功能。cache
(Mem):这是对无需交换即可启动新应用程序的可用内存的估计。它包括Cached
字段中计数的大部分内存(因为可以删除页面缓存以启动新应用程序),但是不计入交换(因为通常最好不要使用慢速交换空间)。第二行是
SReclaimable
,无论出于什么原因,available
页面都无法解释此行。这是我的解释:cache
(交换):这是为交换保留的磁盘空间总量。您可以通过检查它是否与Swap
的输出匹配来进行检查。man
(交换):当前正在使用的交换磁盘空间量。再次,您可以通过将其与total
的输出进行比较来进行检查(交换):当前未使用的交换磁盘空间量。等于swapon -s
评论
serverfault.com/questions/23433/…对于需要更简单,逐步的解释的人,请查看Thoughtsbyclayg.blogspot.com/2008/09/…,他的解释对我有很大帮助。
linuxatemyram.com
这是完全错误的。 buff / cache绝对不是使用过的一部分。我只是在看一个装有1G和12G buff / cache的盒子。 unix.stackexchange.com/questions/521488/…