CPU使用率と平均負荷率の違い、いつ心配する必要がありますか?

CPU使用率と平均負荷率の違い、いつ心配する必要がありますか?

ここで複数の回答を検索しましたが、このシナリオに関連する回答が見つかりませんでした。答えが見つかったと思われる場合は、教えてください。

理解を助けるためにここに数字を追加します。

キャッシュサーバーとして機能する内部書面イベントベースの分散非同期ネットワークサービスを実行するために専用に使用される256 GBのRAMを備えた96コアベアメタルLinuxサーバーがあります。デーモンは32のワーカースレッドで実行されます。インポートとキャッシュの主なタスクに加えて、サーバーはヘルスチェックのために他のメンバーポーリング、Unixソケットへのメトリックの書き込みなど、いくつかの追加の個々のスレッドでさまざまな関連タスクを実行します。この値を大きくするとキャッシュロック競合が増加するため、ワーカースレッドの値は「t」です。このサーバーはメトリックの一括書き込みを試みるため、ディスクアクティビティはあまりなく、Unixソケットが失敗した場合は無視してメモリを解放します。

このインスタンスは9ノードクラスタの一部であり、このノードの統計はクラスタの残りのインスタンスを表します。

最近の着信トラフィックが急増したため、プロセスのCPU使用率が大幅に増加したことがわかりますが、負荷平均はまだ1未満です。

以下の統計を確認してください。

:~$ nice top
top - 19:51:55 up 95 days,  7:27,  1 user,  load average: 0.33, 0.28, 0.32
PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
587486 cacher   20   0  107.4g  93.0g  76912 S  17.2  37.0   5038:13 cacher

時には%CPU80%まで上がることもありますが、負荷平均は非常に低く、決して1.5を超えません。これはほとんどキャッシュ不足があり、キャッシュがアップストリームからキャッシュを取得する必要がある場合に発生するため、ほとんど設定されたネットワークアクティビティです。私が理解したのは、サービスが実行時に実行する計算集約的な作業は、キャッシュするアイテムを適切な分散バケットに格納する必要があるときにキャッシュするアイテムのハッシュを計算することです。このサービスのパラメータにはシステム制限は設定されておらず、プロセスのカーネルオムキラーを無効にするように調整されました。ただし、上限に近いわけではありません。バインドされたsystemdソケットは、より多くのtxおよびrxバッファに対応するように調整されました。

  • 96コアサーバーの平均負荷が1より小さいのに、%CPU32スレッドを使用するサービスの負荷が20〜80%の間を行き来するのはなぜですか?
  • 96コアサーバーで%CPU安全な操作のための安全な値と見なされるものは何ですか?使用されるスレッド数に関連していますか?スレッド数が増えると、理論的に高いCPU使用率は許容されますか?

ありがとうございます。

ベストアンサー1

他のSEサイトにはこの質問に対する良い答えがあります。ここそしてここ。デフォルトでは、負荷平均は、特定のCPUコアを待っているプロセス数と%CPUコア使用量を示します。

96コアサーバーでは、ほとんど問題なく96コアをすべて100%実行できます。オペレーティングシステムやその他のプロセスには特定の量またはリソースが必要なため、アプリケーションがそのようなすべてのリソースを占有したくありません。

負荷平均は一般的に良い指標ではありません。 I / Oを実行するプロセスの数が多いと、CPU使用率が低く、アプリケーションの応答時間が非常に良い場合でも、負荷平均が非常に高くなる可能性があります。

おすすめ記事