Linux の top コマンド
Linux の top
コマンドは、アクティブなプロセスと、必要以上にメモリまたは処理能力を消費しているアプリケーションをユーザーが判断できるようにすることを目的としています。
top コマンドは簡単に使用できますが、詳細を知っておく必要があります。負荷平均は、サーバーのパフォーマンスを評価するための問題のあるメトリックです。
Linux での top
コマンドの内訳
ターミナルで top
に入る:
$ top
出力:
top - 00:04:54 up 3:30, 1 user, load average: 1.84, 3.02, 2.50
Tasks: 233 total, 2 running, 231 sleeping, 0 stopped, 0 zombie
%Cpu(s): 38.5 us, 9.5 sy, 0.0 ni, 51.6 id, 0.3 wa, 0.0 hi, 0.0 si, 0.0 st
MiB Mem : 3840.9 total, 277.3 free, 2286.3 used, 1277.3 buff/cache
MiB Swap: 2048.0 total, 1447.0 free, 601.0 used. 777.7 avail Mem
top - 00:04:54 up 3:30, 1 user,
:コマンドは現在のシステム時刻を表示し、続いてuptime
(この場合は 3 時間 30 分)、最後にシステムにログインしているユーザーの数。この場合は 1 です。SSH を介して、これはボックス、アイドル、画面などでローカルに実行できます。load average: 1.84, 3.02, 2.50
:このセクションには負荷平均が表示されます。これは、特に仮想マシンとクラウドを扱う場合に、複雑な概念になる可能性があります。最初の数値は現在の負荷平均、2 番目の数値は 5 分間の平均、3 番目の数値は 15 分間の負荷平均です。タスク:合計 233、実行中 2、スリープ中 231、停止中 0、ゾンビ 0
:ps aux
またはその使用法のバリエーションを入力すると、アプリケーションの数が表示されます
進行中のプロセスの数は、CPU が現在使用されている量を示します。非マルチスレッドアプリケーションは一度に 1つの CPU しか使用できないため、クアッドコアサーバーでは 2つの方法が CPU の 50%を占め、負荷平均は 2 であることがよくあります。
スリープ状態のプロセスの数は、動作しているがアクティブに使用されていないことを示します。これには通常、多くのバックグラウンドジョブ、システムソフトウェア、プリンタードライバー、およびその他のそのようなアイテムが含まれます。
トラブルシューティングのためにプロセスに SIGSTOP
または kill-STOP
を配信した場合を除き、停止したプロセスの数は 0
である必要があります。0
とは異なる値は、実動システムに問題を引き起こす可能性があります。
ゾンビを含むプロセスは、マルチスレッドアプリケーションが子プロセスを作成し、それが突然破棄または終了して、ゾンビプロセスが残ったことを示しています。
何かひどいことが起こった場合、Apache はおそらく復讐で応答します。ほとんどの場合、これも 0
である必要があります。
CPU に関する情報
%Cpu(s): 38.5 us, 9.5 sy, 0.0 ni, 51.6 id, 0.3 wa, 0.0 hi, 0.0 si, 0.0 st
- 各プロセッサが最大 100%使用する時間の割合。その結果、1つのプロセスが 1つの CPU を 100%使用するクアッドコアでは、これは 25%の使用を示します。8 コアシステムでは、12.5 パーセントは 1 コアがピンアウトされていることを意味します。
システム CPU 使用率
という用語は、システムの CPU がどれだけ使用されているかを示します。ここでの数値が大きい場合は、カーネル構成の問題、ドライバーの問題、またはその他のさまざまな理由を示している可能性があります。- パーセンテージ
ni
は、nice
またはrenice
コマンドの影響を受けたユーザーランドプロセスによって使用された CPU のパーセンテージを示します。つまり、それらの優先度は、スケジューラのデフォルトからより高いまたはより低いに変更されました。正の数は優先度が低いことを示し、負の数は優先度が高いことを示します。デフォルト値は 0 です。これは、スケジューラーが決定を行うことを示しています。 - 100.0 パーセントから前の 3つの数値を差し引いた結果は、パーセント
id
であり、これはアイドル
処理能力を測定します。 wa
は、CPU が待機している% of I/O
です。プロセスまたはプログラムがデータを必要とする場合、最初にプロセッサキャッシュをチェックし、次にメモリ、そして最後にディスクをチェックします。通常、IO スレッドが RAM への情報の読み取りを完了するのを待ってから、ディスクに到達したときに再度処理する必要があります。ディスクの速度が遅いほど、各プロセスの IO 待機率が高くなります。待機時間が常に 100 /(CPU の数*プロセスの数)よりも大きい場合は、監視する必要のあるストレージの問題がある可能性があります。高い負荷平均を検出した場合は、最初にこの数値を確認してください。この値が高い場合、ディスク上のプロセスがボトルネックになります。si
は、ソフトウェア割り込みの処理に費やされた時間です。Linux カーネルには、ハードウェアまたはデバイス(ドライバー)がマザーボードの割り込みラインで割り込みを要求するのではなく、ソフトウェアが割り込みを要求し、カーネルが割り込みハンドラーを介して割り込みを処理できるようにする機能がバージョン 2.4 に含まれています。これは、アプリケーションが優先度ステータスを要求でき、カーネルが要求の受信を確認でき、ソフトウェアが割り込みがアドレス指定されるのを辛抱強く待つことを意味します。st
は、仮想マシンによって盗まれた時間を指します。CPU を制限するために VM を使用しないため、1つまたは 2つの VM に 8つの CPU を使用させても、プール全体に悪影響を与えることはありません。VM の仮想 CPU によって使用される物理(またはハイパースレッド xeon の場合は論理 CPU)CPU の数が物理の数よりも多い場合、スチール時間が増加します。
Linux での top
コマンドの使用
top
コマンド構文を表示するには:
$ top -h
出力:
procps-ng 3.3.16
Usage:
top -hv | -bcEHiOSs1 -d secs -n max -u|U user -p pid(s) -o field -w [cols]
top
コマンドはセキュアモードで使用できます。
$ top -s