負荷平均 (LA) が高い理由がわかりません

負荷平均 (LA) が高い理由がわかりません

32 コア/64 スレッドの CPU と 64 GB の RAM を搭載したベアメタル サーバーを入手しました。Ubuntu 18.04 がオンボードです。pgsql (低負荷) を実行しています。ネットワーク作業用に Python を使用した約 250 個の Docker コンテナーを実行しています。htop で LA 120 (1/5/15 分) と表示されますが、理由がわかりません。

  • htop は全コアの約 50% の負荷を表示します
  • 12GBの空きRAMを取得
  • vnstat -l はネットワーク アダプタの負荷が 25% であることを示します (両側の概要)
  • トップショー wa (iowait) 0.0
  • iostat は HDD に何も書き込まれていないと表示しますが、iotop は 1 秒間に 10 ~ 20Kb/秒の書き込みを行うプロセスを表示することがあります。
  • 上部に赤い線は表示されません。すべてグレーです (良好)。
  • 「ps -eo stat | grep -c D」と「ps -eo stat | grep -c D」は「1」を表示します。

CPU、RAM、HDD、ネットワークのすべてをチェックしたと思います。LA が大きい原因は Python のコンテナーにあることは理解しています。しかし、最適化のボトルネックを見つけたいのです。LA が高い理由をもっと詳しく知るには、どこを見ればよいでしょうか?

追記:いくつか追加。コンテナーで pypy を使用すると LA が低下し、単純な pyhton を使用すると LA が増加するため、CPU のどこかにボトルネックがあると思います。ただし、htop では常に CPU 負荷が 100% 未満と表示されるため、その理由は理解できません。

答え1

Linux 負荷平均は、現在 (アクティブに) 実行中または実行を待機中のプロセスの数です。

250 個の Docker コンテナとシステム プロセス、および監視ツールがあります。これは単純に膨大な数のプロセスです。コンテナ内で何が実行されているか、およびプロセスが何かを実行するために起動する頻度によって多少異なります。Docker コンテナの数を 50% 削減し、負荷平均も 50% 低下した場合、原因がわかります。

関連情報