web-dev-qa-db-ja.com

VM 100%でのCPU使用率

メトリックボックスのCPU使用率は、100%断続的に発生しています。
Grafanaダッシュボードのレンダリング時に「内部サーバーエラー」

私たちのマシンで実行されている唯一のアプリケーションは、3つのサブコンテナーを持つDockerです。

  • cadvisor
  • 黒鉛

  • グラファナ

マシンスペック
OSバージョンUbuntu16.04 LTS
リリース16.04(ゼニアル)
カーネルバージョン4.4.0-103-generic
Dockerバージョン17.09.0-ce
CPU 4コア
メモリ4096MB
メモリの予約は無制限です
ネットワークアダプタ管理

ストレージ
ドライバーオーバーレイ2
バッキングファイルシステムextfs
d_typetrueをサポート
ネイティブオーバーレイ差分true

メモリスワップ制限は2.00GBです

以下は、cAdvisorからの抜粋です。

enter image description here

Kworkerおよびksoftirqdプロセスは、ステータスを「D」から「R」、「S」に一貫して変更します。

マシンの仕様はこのセットアップに対して正しいですか?
CPU使用率を「通常」レベルにするにはどうすればよいですか?

[〜#〜]編集[〜#〜]

メモリを4GBから8GBに増やした後、数日間は期待どおりに機能しましたが、時間の経過とともにCPU使用率が増加しました。
enter image description here

6
gpullen

CPUの39%を使用する4 ksoftirqdsがあります。これはかなり高く、I/O負荷の高さ、電源管理の問題、カーネル/デバイスドライバーのバグなどの多くの問題を示している可能性があります。

最新のカーネルに更新して、適切なバリアントが選択されていることを確認し(たとえば、AWSとAzure用に特別に調整されたUbuntuカーネルがある)、Linux I/Oパフォーマンストラブルシューティングツールのいくつかを調べてください。

Linuxのパフォーマンスのトラブルシューティングに関する優れたリソースは、一般的に Brendan Greggのブログ

3
Paul Gear

カーネルが大量のCPU kworkerスレッドを使用しているようです。これは、バグのあるカーネルドライバーが原因であることがよくあります。

デバッグするには、echo l > /proc/sysrq-triggerでバックトレースをトリガーします。これにより、出力がdmesgに生成されます。数回実行して、一貫性があるかどうかを確認します。 このスレッド に基づいて、どのドライバーが高負荷を引き起こしているのかが明らかな場合があります。 1つの考えは、これをESXiで実行している場合、e1000ネットワークインターフェイスドライバーにバグがあることで有名です。

2
Nathan C