web-dev-qa-db-ja.com

上位のいくつかのプロセスのメモリの合計が100%を超えている

LAMPスタックマシンでAMPが使用するメモリの量を計算しようとしています。

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

ただし、上記のコマンドを使用して生成された合計は100%を超えていますが、個々のプロセスのメモリ使用量はすでに%でtopで表されているため、100%未満になると予想していました。

topによって報告されたメモリをこの方法で使用してメモリ使用量を計算できないかどうかを理解するのを手伝ってください。

1
Prakash

%MEMフィールドは、プロセスが使用している物理メモリのページ数に100を掛けたものを、物理メモリの合計ページ数で割ったものです。合計が100になる理由はありません。すべて同じページの物理メモリを使用している10個のプロセスを検討してください。

バグのあるバージョンのtopがあり、%MEMをRSS/memではなくVSZ/memとして計算する場合もあります。これらが異なる結果を生成するケースを見つけて、最高値がRSS/memであることを確認してください。

使用する top -vBusyBoxバージョンのtopを使用しているかどうかを確認します。それはprocpsバージョンよりもバグが多い傾向があります。

3
David Schwartz