free 输出中缓冲区/缓存行的含义

Mua*_*han 189 linux memory virtual-memory memory-usage

为什么我的服务器显示

            total      used      free   shared buffers    cached
    Mem: 12286456  11715372    571084        0   81912   6545228
-/+ buffers/cache:  5088232   7198224
   Swap: 24571408     54528  24516880
Run Code Online (Sandbox Code Playgroud)

我不知道在 linux 中计算内存。我认为它说 5088232 用于 7198224 是免费的,这意味着它实际上消耗了 5GB 的 RAM?

sle*_*ske 246

值的含义

第一行的意思是:

  • total:您的总(物理)RAM(不包括内核在启动时永久为自己保留的一小部分);这就是为什么它显示 ca。11.7 GiB,而不是您可能拥有的 12 GiB。

  • used:操作系统正在使用的内存。

  • free: 内存未使用。

  • shared/ buffers/ cached:该用于特定目的节目的内存使用情况,这些值包括在该值used

第二行给出调整后的第一行值。它给出了used 减去总和buffers+cached的原始值和free 加上总和的原始值buffers+cached,因此它的标题。这些新值通常比第一行的值更有意义。

最后一行 ( Swap:) 提供有关交换空间使用情况的信息(即已临时移动到磁盘的内存内容)。

背景

要真正理解这些数字的含义,您需要了解 Linux 中的虚拟内存 (VM) 子系统的一些背景知识。只是一个简短的版本:Linux(像大多数现代操作系统一样)将始终尝试使用可用 RAM 来缓存内容,因此Mem: free几乎总是非常低。因此显示了该行-/+ buffers/cache:,因为它显示了忽略缓存时有多少内存可用;如果内存不足,缓存将自动释放,因此它们并不重要。

如果行中的free-/+ buffers/cache:变低,Linux 系统的内存就会非常低。

有关数字含义的更多详细信息,请参见例如问题:

procps 3.3.10 的变化

请注意,freeprocps 3.3.10(2014 年发布)中的输出已更改。报告的列现在是"total", "used", "free", "shared", "buff/cache", "available",一些值的含义发生了变化,主要是为了更好地说明 Linux 内核的slab缓存。

有关动机,请参阅Debian 错误报告 #565518,以及从 14.04 到 16.04 的输出变化free是什么意思?了解更多详细信息。

  • 我不认为语句“total = used + free”是正确的,请在我的机器上看到以下输出:`$ free -h` `total used free shared buff/cache available` `Mem: 3.4G 585M 152M 11M 2.6G 2.5G``交换:4.0G 84M 3.9G` (7认同)
  • `total = used + free + buff/cache` (4认同)

Fli*_*imm 10

当前接受的2009 年答案已过时。确保您获得的信息是正确的并且与free(在 Debian 软件包procps中分发或在您的分发中等效)的版本相匹配很重要。这也有利于看的输出man free,并且还man 5 proc,其中包含有关信息/proc/meminfo,该文件free在Linux中获取数据。

默认情况下,free的输出以字节为单位(1 千字节 = 1024 字节),如您在手册页中所见。我更喜欢使用-h显示后缀的参数,如下所示:

$ free -h
              total        used        free      shared  buff/cache   available
Mem:           15Gi       6.1Gi       1.9Gi       301Mi       7.5Gi       8.8Gi
Swap:         979Mi          0B       979Mi
Run Code Online (Sandbox Code Playgroud)

第一行的Mem意思是:

  • total(Mem): 总安装内存(即MemTotal来自/proc/meminfo),这是 RAM 中的所有内存
  • used (Mem):已用内存,等于 total - free - buffers - cache
  • free(Mem):未使用的内存(即MemFree),这是 RAM 中任何东西(甚至缓存)都未使用的所有内存
  • shared(Mem):这是主要用于tmpfs( Shmem)的内存量
  • buff/cache(MEM),的总和bufferscache
    • buffers:内核缓冲区使用的内存(Buffers),这是内核可以利用的内存
    • cache:页面缓存和slab(CachedSReclaimable)使用的内存。该页面缓存包含缓存到RAM文件系统文件的内容,它通常是一件好事,这是一个高数字。我认为“slabs”是一个类似的缓存功能。
  • available(Mem):这是估计有多少内存可用于启动新应用程序,无需交换。它包括该cache字段中计算的大部分内存(因为可以删除页面缓存以启动新应用程序),但它不计算交换(因为通常最好不要使用慢速交换空间)。

第二行是Swap。这是我的解释:

  • total(Swap):这是为交换 ( SwapTotalin proc/meminfo)保留的磁盘空间总量。您可以通过检查这与swapon -s.
  • used(Swap):当前正在使用的交换磁盘空间量。同样,您可以通过将其与swapon -s
  • free(Swap):当前未使用的交换磁盘空间量 ( SwapFreein /proc/meminfo)。它等于total (Swap) - used (Swap)


归档时间:

查看次数:

242063 次

最近记录:

4 年,8 月 前