了解 sysstat sar 内存输出

cat*_*lin 3 linux memory cpu performance sar

我正在为未来几天的更多流量做好准备,并且我想确保服务器能够处理它。

运行 sar -q,“3.5”的负载在 32 CPU 架构上似乎并不多:

CPU SAR 输出

但是,我不确定内存。

运行 sar -r 显示 %memused 为 98.5%,而 %commit 仅显示 13.60:

内存SAR输出

运行 htop 似乎也可以:14.9G/126G。这是否意味着在 126 个可用的 Gig 中,应用程序仅使用了 14.9 个 Gig?

在此输入图像描述

我对 sar -r 输出更感兴趣。

%memused 看起来是98.5%,而 %commit 只有13.6% 我想知道这意味着什么。

小智 5

你看,当内存不使用时,linux会尝试将读取或写入的磁盘块缓存在内存中。这是您在 kbcached 和 kbbuffers 列中看到 sar 报告的内容。当新请求到来并需要内存时,将从该缓存或空闲列表中授予内存。

kbmemused = 运行进程消耗的内存 + 缓存 + 缓冲区

要找出应用程序实际使用的内存,您应该从 kbmemused 中减去 kbbuffers 和 kbcached。

监视 %commit 更有意义,它是当前正在运行的进程使用的实际内存。在您的情况下,这个数字大约与 htop 的输出匹配。

检查实际可用内存的另一种方法是使用命令free -m。free 报告与 sar 相同的统计数据。

总结一下

  • memused 98.5%显示应用程序使用的内存 + 内核用于加速磁盘访问的缓存和缓冲区。
  • commit 13.6%是内核提交给应用程序进程的实际内存。