複数のスレッドまたはプロセスが /proc/cpuinfoファイルを同時に読み取ると、システムはすべてのCPUコアにプロセッサ間割り込み (IPI) 要求を送信して、最新の周波数関連データを取得します。 これにより、IPIストームを形成するための待機中のIPI要求が多数生成され、システムのパフォーマンスと応答速度が低下します。 この問題を解決するために、Alibaba Cloudは、カーネルバージョン5.10.134-17.al8以降のAlibaba Cloud Linux 3のx86アーキテクチャでの実装を最適化します。
最適化ソリューション
すべてのスレッドまたはプロセスが同時にCPU頻度データを取得するときに発生するIPIストームの問題を解決するには、スレッドとプロセスが最新のバックアップデータのコピーを取得する必要があります。 次に、バックアップデータ内のフィールド値をチェックして更新するために、アトミック交換 (
atomic_xchg()) が実行される。 バックアップデータの有効期間は約20ミリ秒です。 CPU周波数データを取得するプロセス中に、有効期間が終了した後にのみ、更新されたデータを要求するために、smp_call_function_single()関数の新しい呼び出しを行うことができます。 これにより、スレッドまたはプロセスが、特定の期間内に多数のIPI要求を同じCPUに繰り返し送信することが防止される。システムが
/proc/cpuinfoファイルを読み取ってCPU周波数データを取得すると、システムはすべてのCPUにIPI要求を送信します。これにより、CPUは強制的にアイドル状態になります。 CPUウェイクアッププロセス中に、CPU周波数が変化することがあり、これは動的スケジューリングアルゴリズムによって決定される。 システム効率を改善するために、最適化が行われる。 CPUがアイドル状態の場合、Alibaba Cloud Linux 3ではNOHZ機能が有効になり、システムから送信されるIPIリクエストを待つことなく、アイドル状態のCPUが基本周波数値を返すことができます。 これにより、CPUステータスの変更によるCPU周波数のずれが防止されます。
メリットとデメリット
メリット
リソース消費の削減: IPI要求の不適切な使用が防止され、アイドル状態のCPUをウェイクアップするIPI要求が削減され、処理時間が効果的に削減されます。
全体的なパフォーマンスの最適化: マルチコアシステム環境では、タスクスケジューリングなどの他のCPU管理アクティビティへの影響が軽減され、システムの効率的で安定したパフォーマンスを維持するのに役立ちます。
デメリット
最適化ソリューションはリソース消費を削減し、全体的なパフォーマンスを向上させることができますが、最適化ソリューションは、システムが
/proc/cpuinfoファイルを読み取ることによって取得するIdle状態のCPUの頻度をIdle状態の実際の頻度よりも低くします。 正確なCPU周波数データは、ターボスタットツールまたは他のツールを使用してMSRを読み取ることによって取得できます。