web-dev-qa-db-ja.com

CPU使用率が急上昇したプロセスを確認し、数秒前にシステムをフリーズするにはどうすればよいですか?

Ubuntu 18.04が数秒間ランダムにフリーズします。マウスカーソルを(ときどき)移動できますが、そうしないとOSが応答しなくなり、他のアプリケーションに切り替えることができません。

再開すると、システムモニターに移動して、数秒前(ただし70%まで)のCPU使用率の急上昇を確認できますが、それで何がそのCPUを使用したかはわかりません。

最近、どのように処理されてCPUを消費したかを知ることができますか?

[〜#〜] update [〜#〜]:その間、私は 原因はWebStorm であると判断しました、疑わしいアプリを分離することにより、JavaベースのIDE。 VS Codeの使用中、フリーズはありませんでした。

以下は、コメントで求められる追加の診断情報です。

$ free -h
              total        used        free      shared  buff/cache   available
Mem:            15G        8.6G        2.3G        2.0G        4.5G        4.4G
Swap:           15G        487M         15G
$ sysctl vm.swappiness
vm.swappiness = 10

WebStormがフリーズすると、システムモニタの負荷が急上昇しますが、100%には近づきません。

10
Dan Dascalescu

CPUアクティビティをキャプチャするツールでシステムを監視していない限り、CPU使用率の過去の履歴を取得することはできません。 1つの方法は、cpustatを実行して出力をキャプチャし、CPU使用率が発生している場所を確認することです。次に例を示します。

Sudo apt-get install cpustat
cpustat -xS | tee cpu.log

スローダウンが発生すると、cpu.logを表示して、実行中のビジー状態を確認できます。

9
Colin Ian King

私の経験では、CPU使用率だけのためにLinuxが応答しなくなることはめったにありません。 CPU使用率が高すぎると、すべてが少し遅くなる傾向があります。

一方、I/Oの問題(多数のファイルや大きなファイルの書き込み、スワッピング、障害のあるディスクなど)は、すべてが停止しているように見え、その後少しだけ続行して、再び停止するだけのように、無反応になる可能性があります。マウスでさえ動かなくなることがあるという事実から、あなたの問題はこのカテゴリに分類されると私は信じています。

I/Oが原因かどうかを判断するためのかなりシンプルで効果的な方法は、標準ツールvmstatを使用することです。 vmstat -w 5どこか(screen内、またはターミナル内のみ);これにより、5秒ごとに1行の統計が出力されます。その後、フリーズを経験した後、戻って番号を検査(および/またはAskUbuntuに投稿)できます。

出力は次のようになります。

procs -----------------------memory---------------------- ---swap-- -----io---- -system-- --------cpu--------
 r  b         swpd         free         buff        cache   si   so    bi    bo   in   cs  us  sy  id  wa  st
 3  0       865332       328876     18014392      8262980    0    0   108    89    7    7  21   6  73   0   0
 0  0       865332       330016     18006044      8267348    0    1     0   332 2169 8117  25   6  69   0   0

(この目的のための)興味深い列は次のとおりです。

  • CPU:waは、ブロックされているCPUの割合を示しますwa I/Oが終了することを示しています。ここで高い数値は、CPU使用率ではなく、I/Oが問題であることを示唆しています。ボトルネックの特定にも役立ちます。
  • スワップ:siおよびsoは、それぞれスワップインおよびスワップアウトされたKiB/sの数を表示します。 RAMが十分にある場合は、ほぼ0になるはずです。高い数値は、メモリ要件がメモリサイズを超えていることを示しています。
  • I/O:biおよびboは、ディスクから読み取り/書き込みされたKiB/sの数を表示します(これにはスワップアクティビティが含まれます)。予期しない高い書き込み数は、その書き込みを実行しているプロセスの検索を保証する可能性があります(例:iotopを使用)。数値が低い/中程度のフリーズは、ディスクが遅いことを示しています。
4
marcelm

atopをお試しください

システム状態のスナップショットによって過去のアクティビティを継続的にキャプチャするよりグラフィカルな方法は、atopを使用することです。 atoptophtopのようなプログラムに似ていますが、定期的なcronジョブを実行して完全なプロセスとシステムアクティビティデータを生成および保存するという大きな違いがあります。これにより、後で時間をかけて問題を調査することができます。 atopには、従来のUnix atopsarと同様のユーティリティsarも用意されています。両方のユーティリティは、同じシステムデータスナップショットデータベースを共有します。

これは、ディスク使用率ストレス中のシステムを示すatopスクリーンショットです。赤色で強調表示されているsdaおよびLVMの100%のディスク使用率に注意してください。クレジット:atop著者、Gerlof Langeveld、 atoptool.nl

atop screen showing disk-utilization stress in red (credit Gerlof Langeveld, atoptool.nl)

インストールするには:

_    Sudo apt-get install atop
_

ここで、最初のアカウンティングスナップショットが実行されるまで約10分待つ必要があります。スナップショットは、エンティティごとのメトリックポイントごとに使用します。追跡されるエンティティは次のとおりです。

  • プロセス(実行可能ファイルによる)
  • コアごとのCPU使用率、周波数とスケーリング、システムとユーザー
  • メモリとスワップの使用
  • ディスクパーティション:読み取り、書き込み、%utilization
  • ネットワークインターフェイス:パケットの入出力(UDPとTCPの両方)、エラー、パケットの再送信など

すべてのメトリックは、監視されたスナップショットの累積合計です。

過去の活動を見る

これは事実上、少しの「タイムマシン」を提供します。時間を前後に移動して、過去の視聴日のタイムスライスごとに何が起こったかを確認できます。

_   atop -r [/var/log/atop/...]
_

Snapshot-file引数がない場合、atopは、真夜中から開始して、過去の日のビューを表示します(既存のスナップショットファイルを選択して別の日を表示します)。覚えておくべき最も重要なキーは次のとおりです。

t 時間を先に進める(次のタイムスライスに)

T 時間をさかのぼって(前のタイムスライスに)

h 助けて

q 終了する

スナップショットデルタは、各プロセスでプロセスアカウンティングを使用して正しく実装されているexit()なので、実行中の短いプロセスが多数ある場合でも、それらのパーツの合計は合計され、適切な実行可能ファイルと適切な時間の両方に正しく割り当てられます。 -スライス。

キャプチャされるのはプロセスだけではありません。完全なシステム状態がキャプチャされます。画面の上半分には、すべてのエンティティの重要なシステムメトリック、CPU、メモリ、ディスク、ネットワークの使用率がすべて表示されます。データには、CPU周波数とスケーリング係数、ネットワークエラーなどが含まれます。さらに役立つように、異常な値は色で強調表示されます。たとえば、100%のタイムスライスディスク使用率は明るい赤で表示され、最大に近い値は別の色で表示されるため、ストレスがかかったエンティティは見落とされがちです。

バッチスタイルの方が好きな場合は、atopsarよりもatopを使用することをお勧めします。たとえば、完全な時間範囲のバッチスタイルをダンプするには、次のように使用できます。

_   atopsar -D -b 14:05 -e 14:45
_

(_-D_:開始)14:05と(_-b_:終了)14:45の間のディスク使用率(_-e_)による上位3プロセスを表示します。より詳細な使用法については、_man atopsar_。

特定のサブエリアに焦点を当てたい場合は、次のatopsarオプションを使用できます(atopは対話的に同じ文字を使用します):

_    -C  sort processes in order of cpu-consumption (default)
    -M  sort processes in order of memory-consumption
    -D  sort processes in order of disk-activity
    -N  sort processes in order of network-activity
    -A  sort processes in order of most active resource (auto mode)
_

atopatopsarを使用すると、さらに多くのことができます。詳細については、_man atop_および_man atopsar_を使用してください。以上がその要点です。

1
arielf