ここで複数の回答を検索しましたが、このシナリオに関連する回答が見つかりませんでした。答えが見つかったと思われる場合は、教えてください。
理解を助けるためにここに数字を追加します。
キャッシュサーバーとして機能する内部書面イベントベースの分散非同期ネットワークサービスを実行するために専用に使用される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
時には%CPU
80%まで上がることもありますが、負荷平均は非常に低く、決して1.5を超えません。これはほとんどキャッシュ不足があり、キャッシュがアップストリームからキャッシュを取得する必要がある場合に発生するため、ほとんど設定されたネットワークアクティビティです。私が理解したのは、サービスが実行時に実行する計算集約的な作業は、キャッシュするアイテムを適切な分散バケットに格納する必要があるときにキャッシュするアイテムのハッシュを計算することです。このサービスのパラメータにはシステム制限は設定されておらず、プロセスのカーネルオムキラーを無効にするように調整されました。ただし、上限に近いわけではありません。バインドされたsystemdソケットは、より多くのtxおよびrxバッファに対応するように調整されました。
- 96コアサーバーの平均負荷が1より小さいのに、
%CPU
32スレッドを使用するサービスの負荷が20〜80%の間を行き来するのはなぜですか? - 96コアサーバーで
%CPU
安全な操作のための安全な値と見なされるものは何ですか?使用されるスレッド数に関連していますか?スレッド数が増えると、理論的に高いCPU使用率は許容されますか?
ありがとうございます。