この最上位コマンドを解釈する方法

この最上位コマンドを解釈する方法
top - 04:36:16 up 32 days,  2:33,  1 user,  load average: 251.72, 250.54, 231.19
Tasks: 785 total, 249 running, 522 sleeping,   2 stopped,  12 zombie
Cpu(s):  8.9%us, 90.5%sy,  0.4%ni,  0.0%id,  0.0%wa,  0.0%hi,  0.2%si,  0.0%st
Mem:  16313868k total,  7021336k used,  9292532k free,   432196k buffers
Swap:  4194296k total,   295012k used,  3899284k free,   514320k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
18873 nudenude  20   0 97.8m  26m 4944 R  4.0  0.2   0:09.35 php
18140 nudenude  20   0 93984  22m 4940 R  3.7  0.1   0:11.04 php
18178 nudenude  20   0 99.6m  26m 4912 R  3.7  0.2   0:11.11 php
18537 nudenude  20   0  100m  26m 4936 R  3.7  0.2   0:10.31 php
18726 nudenude  20   0 98.3m  25m 4868 R  3.7  0.2   0:09.82 php
18977 nudenude  20   0  101m  25m 4952 R  3.7  0.2   0:09.14 php
19049 nudenude  20   0 99.5m  28m 4920 R  3.7  0.2   0:08.87 php
19852 nudenude  20   0  100m  30m 4912 R  3.7  0.2   0:07.08 php
20504 nudenude  20   0 93024  18m 4880 R  3.7  0.1   0:04.86 php
20562 nudenude  20   0  100m  31m 4940 R  3.7  0.2   0:04.73 php
20681 nudenude  20   0 90912  14m 4940 R  3.7  0.1   0:04.40 php
20685 nudenude  20   0 90656  15m 4928 R  3.7  0.1   0:04.38 php

何かおかしいです。

システムが%syに多くのCPUを使用しているのはなぜですか?

まだ十分なメモリがあるにもかかわらず、そのタスクで仮想メモリを多く使用しているようです。だからなぜそれを知りたいですか?

また、解像度とVIRTでは、15mと14mはどういう意味ですか? man top には何も表示されません。

確認しましたhttp://unixhelp.ed.ac.uk/CGI/man-cgi?top何も表示されません。

注:ロードはかつて50%でした。さらに、VIRT列は通常ゼロです。ただし、コアからCPUの90%を使用するストップモードに切り替えることがあります。カーネルが正確に何をしているのかわかりません。

ユーザーはCPUをほとんど使用しません。負荷が高すぎるのは当然です。しかし、何?カーネルがすること>

答え1

私が書いたマニュアルページからこれをコピーしました。フロッグ、なぜなら私はそこからそれを明らかにしようとしているからです:

上記の統計の一部を解釈するときは、仮想アドレス空間と物理メモリの違いを理解することが重要です。名前が示すように、仮想アドレス空間は実際ではありません。これはデフォルトで現在のプロセスに割り当てられているすべてのメモリのマップです。このマップのサイズ制限は、すべてのプロセス(通常2〜4 GB)に対して同じであり、累積されません。つまり、数十または数百のプロセスがあり、各プロセスには独自の2〜4 GBの仮想アドレス空間があります。実際の物理メモリはわずか512MBです。

データは実際には仮想アドレス空間に保存または取得できません。物理データには物理メモリが必要です。お互いの関係を管理するのがカーネルの使命です。仮想空間統計(VirtualSz、Data + Stack、およびPriv&Write)は、プロセス構造と物理メモリ使用量との関係を考慮するのに役立ちますが、物理メモリ統計(ResidentSz、Share、およびRatio)はプロセスの構造を考慮するのに最も役立ちます。実際に使用されているRAMの量が重要です。

Top にはこれらのメトリックがすべて正確に含まれているわけではありませんが、VIRT スコアは仮想アドレス空間であり、SHR などの RES は物理メモリを表します。相対的なメモリ使用量(つまり、あるプロセスを別のプロセスと比較)に興味がある場合、RESスコアはより関連性が高くなります。

VIRTの一部は、ボリューム全体に基づくopenVZ制限コンテナなどの他のプロセスにリンクされています。個人書き込み可能アドレス空間、RSSの代わりに。 Topはこれを報告しませんが、pmapとplogはそれを報告します(「Priv&Write」のplogのマンページを参照してください。これは実際にそれを書いたときのやる気の一部でした)。

答え2

トップ出力によると、PHPスクリプトに問題があるようです。確認できます。

  • PHPスクリプトが正しく機能していることを確認してください。
  • Apacheエラーログを確認してください
  • 時々cronエントリをチェックしてください。多くのPHPスクリプトがcronを介して実行されます。
  • また、ゾンビプロセスの原因を見つけてください。
  • ApacheとPHPのチューニング

私はPHPの負荷が高いので、次のように実行してPHPプロセスを簡単に終了できると確信しています。

killall -9 phpまたはpkill -9 php上から見てください。

関連情報