AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 85470
Accepted
Muahmmad Zeeshan
Muahmmad Zeeshan
Asked: 2009-11-18 02:37:38 +0800 CST2009-11-18 02:37:38 +0800 CST 2009-11-18 02:37:38 +0800 CST

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

  • 772

为什么我的服务器显示

            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?

linux memory memory-usage virtual-memory
  • 3 3 个回答
  • 264273 Views

3 个回答

  • Voted
  1. Best Answer
    sleske
    2009-11-18T03:42:05+08:002009-11-18T03:42:05+08:00

    值的含义

    第一行的意思是:

    • 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 系统的内存就会非常低。

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

    • 在Linux中,free命令上报的“buffers”和“cache”有什么区别?
    • 为什么 Red Hat Linux 报告系统上的可用内存少于实际可用内存?

    procps 3.3.10 的变化

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

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

    • 254
  2. Flimm
    2020-07-15T06:21:28+08:002020-07-15T06:21:28+08:00

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

    默认情况下,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
    

    第一行的Mem意思是:

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

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

    • totalSwapTotal(Swap):这是为交换 ( in proc/meminfo)保留的磁盘空间总量。您可以通过检查这是否与swapon -s.
    • used(Swap):当前正在使用的交换磁盘空间量。同样,您可以通过将其与swapon -s
    • free(Swap):当前未使用的交换磁盘空间量 ( SwapFreein /proc/meminfo)。它等于total (Swap) - used (Swap)
    • 20
  3. womble
    2009-11-18T03:03:17+08:002009-11-18T03:03:17+08:00

    缓冲区/缓存行显示程序使用了多少内存(这些列中的第一列),并且可供程序使用(第二列)。这是一个相当深奥的数字,在实践中你不会真正关注它。

    • 2

相关问题

  • 多操作系统环境的首选电子邮件客户端

  • 你最喜欢的 Linux 发行版是什么?[关闭]

  • 更改 PHP 的默认配置设置?

  • 保护新的 Ubuntu 服务器 [关闭]

  • (软)Ubuntu 7.10 上的 RAID 6,我应该迁移到 8.10 吗?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    从 IP 地址解析主机名

    • 8 个回答
  • Marko Smith

    如何按大小对 du -h 输出进行排序

    • 30 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    Windows 中执行反向 DNS 查找的命令行实用程序是什么?

    • 14 个回答
  • Marko Smith

    如何检查 Windows 机器上的端口是否被阻塞?

    • 4 个回答
  • Marko Smith

    我应该打开哪个端口以允许远程桌面?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    MikeN 在 Nginx 中,如何在维护子域的同时将所有 http 请求重写为 https? 2009-09-22 06:04:43 +0800 CST
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    0x89 bash中的双方括号和单方括号有什么区别? 2009-08-10 13:11:51 +0800 CST
  • Martin Hope
    kch 如何更改我的私钥密码? 2009-08-06 21:37:57 +0800 CST
  • Martin Hope
    Kyle Brandt IPv4 子网如何工作? 2009-08-05 06:05:31 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve