linux | free 命令获取的系统内存信息

发布时间 2023-12-08 09:10:05作者: 槑孒

root@echohye:~# free -h
               total        used        free      shared  buff/cache   available
Mem:            14Gi       5.5Gi       296Mi       152Mi       9.2Gi       9.0Gi
Swap:             0B          0B          0B

下面是各列的解释:

  1. total: 总内存大小。在这个例子中,系统总共有 14GB 的内存。

  2. used: 已使用的内存大小。在这个例子中,有 5.5GB 的内存被使用。

  3. free: 空闲内存大小。在这个例子中,有 296MB 的内存是空闲的,即系统当前未使用的内存。

  4. shared: 共享内存大小。在这个例子中,有 152MB 的内存是被共享的,通常用于多个进程之间共享的内存。

  5. buff/cache: 缓存和缓冲区的内存大小。在这个例子中,有 9.2GB 的内存被用作缓存和缓冲区。这部分内存通常用于提高文件系统的性能。

  6. available: 可用内存大小。在这个例子中,有 9.0GB 的内存是可用的,即系统可以分配给新进程的内存。

  7. Swap: 交换空间的信息。在这个例子中,交换空间大小为 0B,表示系统当前没有启用交换空间。

这些信息提供了有关系统内存使用情况的概览,包括已使用、空闲和可用内存的量。这对于监控系统性能以及调整系统配置非常有用。

free和available什么区别

freeavailable 是用于描述系统内存的两个不同概念,它们在 Linux free 命令的输出中都会显示。

  1. Free Memory (free): 表示完全未被使用的内存,即当前系统中没有任何进程占用的内存。这包括完全未被使用的内存以及已经被系统保留但尚未被分配给进程的内存。在 free 命令的输出中,free 列显示的是完全未被使用的内存。

  2. Available Memory (available): 表示系统当前可以立即分配给进程的内存。这包括完全未被使用的内存、已经被系统保留但尚未被分配给进程的内存,以及当前被用作缓存和缓冲区的内存。在 free 命令的输出中,available 列显示的是系统当前可以使用的内存。

free 列为 0 时表示当前没有完全未被使用的内存,但这并不一定意味着系统没有可用内存。关键是查看 available 列,因为它考虑了系统用于缓存和缓冲区的内存。

如果 free 列为 0,但 available 列仍然有一定的数值,那么系统仍然有一些被用于缓存和缓冲区,但仍然可以立即分配给新进程的内存。这是因为一部分内存被用于提高文件系统性能,以及缓冲磁盘 I/O 等操作。

只有在 available 列也接近于 0 的情况下,才表示系统内存可能已经相当饱和,可用内存非常有限。在这种情况下,系统可能会开始出现性能问题,因为没有足够的内存供新进程使用。

在理解这两者之间的区别时,关键点在于 "available" 包括了一些可能被系统用于缓存或缓冲区的内存。系统将一部分内存用于缓存文件系统的数据,以提高性能。因此,即使 free 内存较少,但 available 内存可能仍然足够分配给新进程。

总的来说,available 更准确地反映了系统当前可以用于分配给进程的内存,因为它考虑了缓存和缓冲区。在决定系统的可用内存时,更关注 available 列是比较合适的。