PR

LinuxサーバのCステート(CPUの省電力モード)を無効化する方法

スポンサーリンク
Linux

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設定を確認してください。