コンテキストスイッチと高CPU使用率
コンテキストスイッチとは、CPUがあるタスクの状態を保存し、別のタスクの状態を読み込む処理です。ある程度の切り替えは正常ですが、過剰な発生はCPUを無駄に消費します。
Evidence to look for
高負荷サーバーでは1秒あたりのコンテキストスイッチ数が50,000回以上に達する
CPU使用率は高いがスループットが伸びない
スレッド数を減らすことでパフォーマンスが改善する
What it usually means
コンテキストスイッチにはコストが伴います:レジスタの保存、キャッシュのフラッシュ、新しい状態の読み込みなどです。発生率が高くなると、このオーバーヘッドが無視できなくなります。
What to do next
- 1スレッドまたはプロセス数を削減する
- 2重要なスレッドを特定のコアに固定する
- 3スレッドごとに接続を割り当てる方式の代わりに非同期IOを使用する
See what's causing your CPU
cpum.ai turns CPU, process, disk, and memory signals into plain-English explanations with evidence.
Open cpum.ai