如何禁用 procps-ng 3.3.10 免费宽输出格式?

如何禁用 procps-ng 3.3.10 免费宽输出格式?

我正在编写一个脚本,该脚本应该简单地告诉我不包括缓存的可用物理内存量,我注意到我的 Fedora 系统显示的输出格式与我拥有 Unix 帐户的 CentOS 系统不同:

$ free
              total        used        free      shared  buff/cache   available
Mem:        7865868     3934924      241300      485916     3689644     3093784
Swap:       8388604      950988     7437616
$ ssh -q centos free
             total       used       free     shared    buffers     cached
Mem:       1921876    1848024      73852          0      10120      87124
-/+ buffers/cache:    1750780     171096
Swap:      2097148     240428    1856720
$ free -V                           
free from procps-ng 3.3.10
$ ssh -q centos free -V
procps version 3.2.8

有没有一种方法可以让我的 Fedorafree输出看起来像 CentOS 的输出?

答案1

不,这是不可能的。

请注意,这不仅仅是格式问题。 procps-ng 中的程序free最近已更新,以包含MemAvailable最近在 Linux 内核中引入的新指标,这比典型的(通常是错误的)“空闲 + 缓冲区/缓存”更好地指示了实际可用的内存。估计(见下文)。

procps-ng 3.3.10 中包含的程序free不提供任何禁用此信息的选项。事实上,您看到的已经是“压缩”格式了。还有一个“宽”选项(尝试-w--wide),它不聚合缓冲区和缓存。

如果您正在编写脚本来查找可用内存,我建议使用 free 报告的“可用”值,而不是“free + buffers/cache”。看这条评论Linux 内核邮件列表中解释了MemAvailable引入的原因:

许多负载平衡和工作负载放置程序都会检查 /proc/meminfo 以估计有多少可用内存。他们通常通过将“免费”和“缓存”相加来做到这一点,这在十年前还不错,但今天几乎肯定是错误的。

这是错误的,因为 Cached 包含不可作为页面缓存释放的内存,例如共享内存段、tmpfs 和 ramfs,并且它不包含可回收的平板内存,在大多数空闲的系统上,这些内存可能会占用大部分系统内存很多文件。

相关内容