Cステート(Cstate)は、サーバの電力モードを制御する機能です。
サーバ用途のLinuxであれば、オーバークロックとターボブーストを有効にして常にパフォーマンスを優先することが多いと思います。
ですので、省電力設定をする必要はないと思いますので、Cステートを無効にする方法を紹介します。
BIOS上での設定
BIOS上でCステートの設定を変更できます。
代表的なDELLのPowerEdgeサーバーだと、BIOS上の設定から「CState」の項目があるので、これをDisabled(無効)にします。
デフォルトだとEnabled(有効)になっているはずです。
他ベンダーのBIOSでも同じように設定できます。
OS上でのCステートの設定確認方法
BIOSで有効になっていても、Cステートの無効化をOSで上書きできます。
以下のファイルにてcstateの状態を確認できます。以下はnoneなので無効化されている状態です。
[root@cent77 ~]# cat /sys/devices/system/cpu/cpuidle/current_driver
none
以下の intel_idle が返ってくるのであれば、カーネルパラメータを追加してCステートを無効化します。
[root@cent77 ~]# cat /sys/devices/system/cpu/cpuidle/current_driver
intel_idle
Linux OSでのCステート無効化手順
grubにCステートを無効化するパラメータ赤文字を追加します。
各パラメータ値の0は無効化を意味します。
vi /etc/default/grub
===
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="crashkernel=auto spectre_v2=retpoline rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet intel_idle.max_cstate=0 processor.max_cstate=0"
GRUB_DISABLE_RECOVERY="true"
===
grub2-mkconfigでgrub.cfgを作成します。
★VMサーバの場合
grub2-mkconfig -o /boot/grub2/grub.cfg
★物理サーバの場合
grub2-mkconfig -o /boot/efi/EFI/centos/grub.cfg
OSを再起動します。
systemctl reboot
最終的なcstateの確認
[root@cent77 ~]# cat /sys/devices/system/cpu/cpuidle/current_driver
none
さいごに
新サーバを購入したのに、パフォーマンスが全然出ない場合は真っ先にオーバークロック、ターボブースト、Cstate設定を確認してください。