GNU/Linux >> Linux の 問題 >  >> Linux

トップのヒント:LinuxでのCPU負荷の監視

この記事は本の第13章から抜粋したものです Linux in Action、Manningによって公開されました。

Linuxマシンのパフォーマンスが不安定または異常に遅いですか?増大する需要が利用可能なリソースを上回っているのではないかと思いますか?自分自身に尋ねるべきいくつかの質問があります:

  • CPUとメモリのリソースを使い果たすのにどれくらい近づいていますか?
  • シャットダウンされる可能性のある不必要に実行されているものはありますか?
  • 知らないうちに不正に実行されているものはありますか?

その他のLinuxリソース

  • Linuxコマンドのチートシート
  • 高度なLinuxコマンドのチートシート
  • 無料のオンラインコース:RHELの技術概要
  • Linuxネットワーキングのチートシート
  • SELinuxチートシート
  • Linuxの一般的なコマンドのチートシート
  • Linuxコンテナとは何ですか?
  • 最新のLinux記事

どこで答えを探すべきですか? トップ プログラムは始めるのに最適な場所です。システムで実行されているプロセスの豊富な自己更新の概要を提供できます。

次の図は、topの一般的な画面を示しています データ。最初の行には、現在の時刻、最新のシステムブートからの経過時間、現在ログインしているユーザーの数、および最後の1分、5分、および15分の負荷平均が表示されます。この情報は、uptimeを実行して返すこともできます。 。

パフォーマンスの問題を解決しようとしているため、最も関心のあるデータの列は%CPUです。 (特定のプロセスで現在使用されているCPU容量の割合)および%MEM (メモリ容量のパーセンテージ)。特に、リストの一番上に表示されるプロセスに注意する必要があります。

この場合、MySQLデーモンがサーバーのCPUの4.3%を使用しており、次の列から、そのメモリの13%を使用していることがわかります。その行を左にたどると、プロセスID(PID)が1367であることがわかります。 プロセスはmysqlによって「所有」されています ユーザー。

おそらく、このプロセスは正当化できるよりも多くのリソースを消費しており、犠牲にする必要があると結論付けるでしょう(より大きな利益のために、あなたは理解しています)。そのtop ディスプレイはあなたがそれを殺すために必要なすべてをあなたに与えました。 MySQLはsystemd(systemdを使用するディストリビューション)によって管理されるサービスであるため、最初に選択するのはsystemctlを使用することです。 アプリケーションデータを危険にさらすことなく、プロセスを穏やかに停止します。

systemctl stop mysqld

シャットダウンするプロセスがsystemdによって管理されていない場合、または問題が発生してsystemctlが発生した場合 停止に失敗した場合は、killのいずれかを使用できます またはkillall プロセスを排除します。一部のシステムでは、killallをインストールする必要があります psmiscの一部として パッケージ。 PIDをkillに渡します このように:

kill 1367

killall 一方、IDではなくプロセス名を使用します。

killall mysqld

殺すか殺すか、それが問題です 。実際、答えは明らかです。 kill killallが実行されている間、PIDに基づいて単一のプロセスをシャットダウンします。 実行中の特定のプログラムのインスタンスを殺します。したがって、2つまたは3つの別々のMySQLインスタンスがあった場合(おそらく別々のユーザーに属している場合)、すべてが停止します。 killallを起動する前に 、「巻き添え被害」になる可能性のある、実行したい同様の名前のプロセスがないことを確認してください。

もちろん、systemctl disableも実行する必要があります 次回の起動時にプロセスが再起動しないようにするため。

systemctl disable mysqld

解読トップ

それらが必要になった場合に備えて、topの3行目 少し前に見た出力は、他の多くのCPUメトリックの時間値(パーセンテージ)を示します。そこに表示される頭字語の雑然とした概要は次のとおりです。

メトリック 意味
us 優先度の高い(ニックのない)プロセスの実行時間
sy カーネルプロセスの実行時間
ni 優先度の低い(適切な)プロセスの実行時間
id アイドリングに費やした時間
wa I/Oイベントが完了するのを待つ時間
hi ハードウェア割り込みの管理に費やした時間
si ソフトウェア割り込みの管理に費やした時間
st ハイパーバイザー(ホスト)によってこのVMから盗まれた時間

top キーボード入力により、リアルタイムで表示をカスタマイズできます。 hと入力します 詳細については、

をご覧ください。

問題が発生する(CPU負荷をシミュレートする)

topを見たくてたまらない 実際に動作していますが、すべてが順調に進んでいることをご存知でしょうか?

危機レベルのCPU過負荷をシミュレートしてみませんか?子供と同じように、yes 停止するように指示されるまで、(デジタル)ノイズを継続的に出力します。考え直してみると、それは子供とはまったく異なります。

このコマンドは、そのノイズを使い捨ての/dev/nullにリダイレクトします ファイルと& 文字はプロセスをバックグラウンドにプッシュし、コマンドラインの制御をあなたに戻します。圧力を上げるには、コマンドをさらに数回起動します。

$ yes > /dev/null &

それは彼らを忙しくしておくべきです。すべてが実行されている間、topをご覧ください 何が起こっているかを確認します。また、他のアプリケーションを実行して、速度を落とすのにどれだけかかるかを確認することもできます。完了したら、killallを実行します すべてのyesをノックオフします 一度にセッション。

$ killall yes


Linux
  1. Linuxで印刷するための3つのヒント

  2. Linuxコマンドラインに関する8つのヒント

  3. Linuxのニュースとヒントのトップ5ポッドキャスト

  1. 効果的なプロセス管理のための8つのLinuxコマンド

  2. ライターのためのトップLinuxツール

  3. Linux管理者向けのトップ10チュートリアル

  1. 生産性を向上させるためのLinuxコマンドラインのヒント

  2. Linux のトップ コマンド:us、sy、ni、id、wa、hi、si、st (CPU 使用率) は?

  3. Linux :最後の 1 秒間のプロセスによる CPU 使用率を確認する