我正在尝试计算 LAMP 堆栈机器中 AMP 使用的内存量。
top -bn1 | grep -E '(mysql|httpd|php)' | awk '{mem += $(NF-2)} END {print mem}'
但是使用上述命令生成的总和大于 100%,但我预计它会低于 100%,因为各个进程的内存使用量已经以 % 表示top
。
top
请帮我理解是否不能用这种方式报告的内存来计算内存使用情况?
答案1
%MEM 字段是进程使用的物理内存页数乘以 100 除以物理内存页总数。没有理由总和为 100——考虑 10 个进程都使用同一页物理内存。
您可能还遇到了一个有缺陷的版本,top
它将 %MEM 计算为 VSZ/mem 而不是 RSS/mem。请找出产生不同结果的情况,并确保最高值为 RSS/mem。
用来top -v
查看您是否拥有 BusyBox 版本的 top。该版本往往比 procps 版本更容易出现错误。