有时我们需要准确地知道我们的Linux系统如何使用内存。本文将研究如何使用free命令行程序查看Linux系统上的内存使用情况。我们将清楚地定义Linux系统上空闲Free内存和可用内存之间的区别。

了解可用内存与空闲内存

什么是空闲内存,它与可用内存有什么不同?

空闲内存是当前的内存量不用于任何东西。出于这个原因,尤其是在服务器上,我喜欢将空闲内存视为浪费的内存。一旦您的应用程序启动并经过了相当长的正常运行时间,这个数字几乎总是很小。

可用内存是可用于分配给新进程或现有进程的内存量。可用内存是不需要swap交换空间即可使用的内存量的估计。

Linux中空闲内存与可用内存之间区别在于,空闲内存未在使用中,并且无所事事。虽然可用内存是使用过的内存,包括但不限于缓存和缓冲区,但可以在没有使用交换空间swap的性能损失的情况下释放它们。

比较空闲内存和可用内存。

考虑到这一点,让我们看看两台60GB内存的Linux服务器。服务器A服务器B。我们将使用free命令:

要查看 Linux 中的可用内存与空闲内存,请登录到您的服务器并输入以下命令:

free -h

结果应该类似于下面这两个屏幕截图。我还运行了uptime命令以确认两个系统都已在线一段时间。


服务器 A:空闲内存少于 1%(浪费内存),13GB可用内存。


服务器 B:在 153 天的正常运行时间之后,仍然浪费了30GB的内存(free)。

以上是Linux中空闲内存与可用内存之间的区别。当您比较两个系统时,即使负载平均值相似(处理相同的工作负载),很明显一台服务器几乎使用了其内存的100%(服务器 A),而另一台服务器则浪费了50%以上的内存(服务器 B)。请注意,这两款服务器都有12个CPU核心,并且可以交换到RAID 10 NVMe存储。

请注意,即使有可用内存,Linux内核也会将最不常用的内存页移动到交换空间中

结论

不要因为查看Linux系统上的“空闲”内存而匆忙下结论,因为您还应该考虑可用内存、缓冲区/缓存和其他概述的因素。