我试图计算在LAMP堆栈机器中AMP所使用的内存量。
top -bn1 | grep -E '(mysql|httpd|php)' | awk '{mem += $(NF-2)} END {print mem}'
但是使用上面的命令生成的总和大于100%,但是我期望100%以下的数据,因为单个进程的内存使用率已经以%表示。
请帮我理解一下, top报告的内存不能用这种方式来计算内存的使用情况吗?
%MEM字段是进程正在使用的物理内存页面数量除以物理内存总页数的100。 没有任何理由应该总结为100个 – 考虑十个进程都使用同一页的物理内存。
你也可能有一个bug的版本,计算%MEM为VSZ / mem而不是RSS / mem。 find这些产生不同结果并确保最高值为RSS / mem的情况。
使用top -v来查看是否有顶部的BusyBox版本。 这往往是procps版本buggier。