すべてのプロダクト
Search
ドキュメントセンター

Elastic Compute Service:C ステート変更による vCPU 応答レイテンシーの短縮

最終更新日:Sep 25, 2025

C ステート (C-state) とは、CPU のアイドル時の状態を定義したものです。CPU がアイドル状態になると、省電力機能によってその状態は C0 (アクティブ状態) から、段階的に深いレベルへと移行し、最終的に C6 (消費電力が最小の状態) に達します。CPU がより深い C ステートに入ると、ウェイクアップ時のレイテンシーが増加し、リアルタイム性の要求が高いシナリオではパフォーマンスに影響を与える可能性があります。したがって、パフォーマンスの一貫性が求められる場合は、C ステートを C1 に変更して vCPU の応答レイテンシーを短縮することを推奨します。

背景情報

vCPU の負荷が低い場合、OS は消費電力削減のため、vCPU をより深い省電力状態 (高レベルの C ステート) へ移行させます。しかし、この深い状態からのウェイクアップには一定のレイテンシーが伴い、特に NIC の割り込み発生時などに応答レイテンシーとして顕在化します。したがって、OS レベルで深い C ステートを無効化し、vCPU を意図的に浅い C ステート (C1など) に維持する手法は、ウェイクアップレイテンシーの短縮に加え、HLT や MWAIT 命令実行時のハイパーバイザ起因オーバーヘッド低減にも効果的です。このウェイクアップレイテンシーの具体的な値は、CPU のチップロアーキテクチャによって異なります。

手順

この手順では、ecs.g8i.large インスタンスと Alibaba Cloud Linux 3 を例に、vCPU の高レベルの C ステートを無効にする方法を説明します。なお、コマンドの出力結果はインスタンスタイプとイメージによって異なるため、実際の環境に応じて確認してください。

  1. ECS インスタンスにログインします。

    詳細については、「Workbench を使用して Linux インスタンスにログインする」をご参照ください。

  2. 現在のシステムで使用されている CPUidle ドライバーと、サポートされている C ステートを確認します。

    説明

    次のコマンドを実行しても CPUidle ドライバーが表示されない場合は、OS イメージが古い可能性があります。イメージの更新を検討してください。

    cpupower idle-info

    以下のような出力結果が返されます。Number of idle states はサポートされている C ステートの数を示し、Available idle states はサポートされている具体的な C ステートを示します。

    image

  3. /etc/default/grub ファイルで、 C ステートに関連するパラメーターを変更します。

    1. /etc/default/grub ファイルを開きます。

      sudo vim /etc/default/grub
    2. i キーを押して挿入モードに入ります。

    3. GRUB_CMDLINE_LINUX= の行を見つけ、行の末尾に intel_idle.max_cstate=1processor.max_cstate=1 を追加します。これにより、アイドル状態の vCPU の最大 C ステートが C1 に制限されます。

      image

    4. Esc キーを押し、:wq と入力してから Enter キーを押して、設定ファイルを保存して閉じます。

    5. GRUB 設定ファイルを再生成します。

      sudo grub2-mkconfig -o /boot/grub2/grub.cfg
  4. インスタンスを再起動し、設定を有効にします。

    sudo reboot
  5. 変更後の CPUidle ドライバーと C ステートを再度確認します。

    cpupower idle-info

    以下の出力例のように、利用可能な C ステートが POLL および C1 のみに制限されていれば、設定は正しく適用されています。

    image