top少数进程内存总和大于100%

Pra*_*ash 5 linux memory lamp top memory-usage

我正在尝试计算 LAMP 堆栈计算机中 AMP 使用的内存量。

top -bn1 | grep -E '(mysql|httpd|php)' | awk '{mem += $(NF-2)} END {print mem}'

但是使用上述命令生成的总和大于 100%,但我期望低于 100%,因为各个进程的内存使用情况已经以 % by 表示top

请帮我理解是否top不能使用这种方式报告的内存来计算内存使用情况?

Dav*_*rtz 5

%MEM 字段是进程正在使用的物理内存页数乘以 100 除以物理内存页总数。没有理由它的总和应该为 100——考虑 10 个进程都使用同一物理内存页。

您可能还有一个有错误的版本,top将 %MEM 计算为 VSZ/mem 而不是 RSS/mem。找到这些产生不同结果的情况,并确保最高值是 RSS/mem。

用于top -v查看您是否有 top 的 BusyBox 版本。这往往比 procps 版本有更多错误。

  • 您希望这个测量结果告诉您什么?它会粗略地告诉您用于缓冲区和高速缓存以外的物理内存的百分比。 (2认同)