33.3.4. カーネルコマンドラインオプションを使用した C-状態の無効化
ホストのアプリケーションのレイテンシーが C-状態の影響を受けているかどうかをテストするには、カーネルコマンドラインオプションで消費状態(C-状態)を一時的に無効にします。
processor.max_cstate および intel_idle.max_cstate カーネルコマンドラインパラメーターは、使用可能な最大 C-状態 CPU コアを設定します。たとえば、パラメーターを 1 に設定すると、CPU は C1 より下の C-状態を要求しなくなります。
特定の状態をハードコーディングしないようにするには、より動的なソリューションの使用を検討してください。Disabling C-states by using a custom TuneD profile を参照してください。
前提条件
-
tunedサービスが実行されていないか、C-状態設定を更新しないように設定されています。
手順
システムが使用するアイドル状態のドライバーを表示します。
# cat /sys/devices/system/cpu/cpuidle/current_driver intel_idleドライバーの詳細は、
kernel-docパッケージによって提供される/usr/share/doc/kernel-doc-<version>/Documentation/admin-guide/pm/cpuidle.rstファイルを参照してください。ホストが
intel_idleドライバーを使用している場合は、intel_idle.max_cstateカーネルパラメーターを設定して、CPU コアが使用できる最高の C-状態を定義します。# grubby --update-kernel=ALL --args="intel_idle.max_cstate=0"intel_idle.max_cstate=0を設定すると、intel_idleドライバーが無効になります。その結果、カーネルは、EFI ファームウェアで設定された C-状態値を使用するacpi_idleドライバーを使用します。このため、これらの C-状態設定をオーバーライドするには、processor.max_cstateも設定します。すべてのホストで、CPU ベンダーから独立して、CPU コアが使用できる最高の C-状態を設定します。
# grubby --update-kernel=ALL --args="processor.max_cstate=0"重要intel_idle.max_cstate=0に加えてprocessor.max_cstate=0を設定すると、acpi_idleドライバーはprocessor.max_cstateの値をオーバーライドして1に設定します。その結果、processor.max_cstate=0 intel_idle.max_cstate=0の場合、カーネルが使用する最高の C-状態は C0 ではなく C1 になります。変更を有効にするためにホストを再起動します。
# reboot
検証
最大の C-状態を表示します。
# cat /sys/module/processor/parameters/max_cstate 1ホストが
intel_idleドライバーを使用している場合は、最大の C-状態を表示します。# cat /sys/module/intel_idle/parameters/max_cstate 0