====== Proxmox VEの省電力設定 ======
Proxmox VEの省電力機能に関する設定。PVEっていうかLinuxのお作法ですな。
===== 試した環境 =====
* Proxmox VE 6.3-2 (Linux kernel 5.4 (LTS))
* Proxmox VE 7.1-8 (Linux kernel 5.13)
* Xeon E5-2673v3 / X10DRi
* Xeon E5-2680v4 / X10SRL-F
===== 省電力設定 =====
==== CPU ====
標準で性能重視の電力チューニングとなっているところを、省電力重視に変更する。
=== ガバナーの設定 ===
PVE 7もといLinux kernel 5.7からintel_pstate CPUドライバが大きく変わり、hardware-managed P-states (HWP)の有無でガバナーの挙動が変化する。
HWP有効の場合、intel_pstateはアクティブモードでの動作となり、intel_pstate自体がCPUステートの調整を行う。スケーリングガバナーはCPUfreqが定義する値が有効だが一部挙動が異なり、例えばpowersaveガバナーはondemandガバナーに似た挙動となる。
HWP無効の場合、intel_pstateはパッシブモードとして動作し、その実、intel_cpufreqドライバーが動いている。powersaveガバナーが最も消費電力を抑えられるが、動作周波数が最低に固定されてしまう。実用上はondemandあたりにしておくのが良さそう。
echo ondemand | tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
++++ PVE 6.2の情報 |
echo powersave | tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
使える値は使用するCPUドライバーやシステムで異なるが、PVEを動かすようなマシンは、ほぼほぼSandyBridge以降だろう。それ前提でintel_pstateドライバが使われてるとすると、powersave, performanceの2値を指定できる。PVEのデフォルトはperformanceとなっている。
うちの環境ではpowersaveにすると、アイドル時で10~15W程度削減できた。
なお、古い記述ではondemandを指定しているが、設定としてはもはや存在しない。効果の面でも現行のperformanceの方が、性能・省エネ両面でondemandより良好とのこと。
++++
=== 性能バイアスの設定 ===
''cpupower''コマンドで、CPUの電力ポリシーを設定する。PVEに最初から入っているコマンドではないので、yumでインストールのこと。
cpupower set -b 15
数値は0~15が指定可能で、0の方が性能優先、15の方が省エネ優先となる。処理負荷に対してCPUのクロック(やステート、電圧)をどの程度鋭敏に追従させるかの指定と思われる。数値が大きいほど消費電力の上昇は抑えられるが、その分、レスポンスが悪くなるのでバランスを見て適切な値にするのが良い。
==== SATA LPM/ALPM ====
SATAの信号リンクまわりの省電力設定。
echo min_power | tee /sys/class/scsi_host/host*/link_power_management_policy
使える値は min_power, medium_power, max_performance で、意味は名前のとおり。PVEのデフォルトはmax_performanceだった。
うちの環境では思いのほか効果があり、アイドル時で5~10W程度削減できた。
==== NVMe ASPT ====
NVMe SSDの省電力設定ASPT((Autonomous Power State Transition))の設定。
ドライブが対応している必要がある。対応してれば、以下のコマンドのように応答があるらしい。
# nvme get-feature /dev/nvme[0-9] -f 0x0c -H
get-feature:0xc (Autonomous Power State Transition), Current value:0x000001
Autonomous Power State Transition Enable (APSTE): Enabled
...
うちのドライブは対応してないので未設定。
==== PCIe ASPM ====
PCI-Expressの省電力設定ASPM((Active State Power Manegement))の設定。
システム/デバイス/カーネルが対応している必要がある。調べてみると、問題が見つかってカーネルではデフォルト無効という情報が出てくるが、現在はどうなっているか不明。
システムの有効状況はdmesgで確認できる。
$ dmesg | grep ASPM
[ 0.682087] acpi PNP0A03:02: _OSC: OS supports [ExtendedConfig ASPM ClockPM Segments MSI HPX-Type3]
[ 0.697841] acpi PNP0A03:03: _OSC: OS supports [ExtendedConfig ASPM ClockPM Segments MSI HPX-Type3]
[ 0.749473] acpi PNP0A08:00: _OSC: OS supports [ExtendedConfig ASPM ClockPM Segments MSI HPX-Type3]
[ 0.779408] pci 0000:00:03.2: ASPM: current common clock configuration is broken, reconfiguring
[ 0.788812] pci 0000:06:00.0: disabling ASPM on pre-1.1 PCIe device. You can enable it with 'pcie_aspm=force'
[ 0.791668] acpi PNP0A08:01: _OSC: OS supports [ExtendedConfig ASPM ClockPM Segments MSI HPX-Type3]
デバイスの状況はlspciで。
# lspci -vvs 01:00.0
01:00.0 Ethernet controller: Mellanox Technologies MT27520 Family [ConnectX-3 Pro]
Subsystem: Mellanox Technologies MT27520 Family [ConnectX-3 Pro] (Mellanox Technologies ConnectX-3 Pro Stand-up dual-port 40GbE MCX314A-BCCT)
Physical Slot: 1
...
Capabilities: [60] Express (v2) Endpoint, MSI 00
...
LnkCtl: ASPM Disabled; RCB 64 bytes Disabled- CommClk+ ★これ
ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
...
現在の自分の環境では、有効なのか無効なのか正直なところ分からない。少なくともConnectX-3がASPM無効で動いていることだけは間違いない。
===== 参考サイト =====
* [[https://www.reddit.com/r/homelab/comments/bltm26/proxmox_power_usagemanagement_still_no_cpu_scaling/|Proxmox power usage/management -- still no CPU scaling? : homelab]]
* [[https://wiki.archlinux.jp/index.php/CPU_%E5%91%A8%E6%B3%A2%E6%95%B0%E3%82%B9%E3%82%B1%E3%83%BC%E3%83%AA%E3%83%B3%E3%82%B0|CPU 周波数スケーリング - ArchWiki]]
* [[https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/6/html/power_management_guide/alpm|3.8. Aggressive Link Power Management Red Hat Enterprise Linux 6 | Red Hat Customer Portal]]
* [[https://wiki.archlinux.org/index.php/Solid_state_drive/NVMe|Solid state drive/NVMe - ArchWiki]]