了解 sysstat sar 内存输出

understand sysstat sar memory output

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

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

但是,我不确定内存。

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

运行 htop 似乎也不错:14.9G/126G。这是否意味着在可用的 126 个 Gig 中,只有 14.9 Gig 被应用程序使用?

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

%memused 看起来 98.5% 而 %commit 仅为 13.6% 不知道是什么意思

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

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

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

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

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

总结

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