Strangely enough, the unlocked BIOS does not have the C-states question in it. However, C-states are enabled for me. What does
cpupower
say on yours? Mine is below. The CPU only supports C1/C1E, C6, C8, and C10. I have disabled C1E.
Bash:
root@pve:~# cpupower idle-info
CPUidle driver: intel_idle
CPUidle governor: menu
analyzing CPU 2:
Number of idle states: 5
Available idle states: POLL C1 C6 C8 C10
POLL:
Flags/Description: CPUIDLE CORE POLL IDLE
Latency: 0
Usage: 6382
Duration: 54570
C1:
Flags/Description: MWAIT 0x00
Latency: 1
Usage: 23874
Duration: 1721458
C6:
Flags/Description: MWAIT 0x20
Latency: 170
Usage: 536
Duration: 334958
C8:
Flags/Description: MWAIT 0x40
Latency: 200
Usage: 756
Duration: 645080
C10:
Flags/Description: MWAIT 0x60
Latency: 230
Usage: 4329
Duration: 13303478
How did you disable C1E? I'm trying to strike the right balance between idle power usage and latency.
So far, here is what I see:
Stock BIOS, C-states enabled:
12.8W idle average
Average ping (100 samples): 1.133ms
Stock BIOS, C-states disabled:
16W idle average
Average ping (100 samples): 0.682ms
HWP BIOS:
13.2W idle average
Average ping (100 samples): 1.09ms
HWP BIOS w/ >C1E disabled:
15.7W
Average ping (100 samples): 0.458ms
HWP w/ >C1E disabled seems to offer the best blend of responsiveness and idle power and comes the closest to bare metal pfsense which was 0.325ms average ping but 18W idle. This was accomplished via:
Code:
echo 1|tee /sys/devices/system/cpu/cpu*/cpuidle/state[234]/disable
There are other things I haven't tried yet such as playing with the "intel_idle.max_cstate" and "idle=halt" kernel command line parameters.
Something that doesn't make sense to me is that i7z and powertop both showed deep C6+ states being hit with the stock BIOS regardless of the C-states setting in BIOS but the toggle clearly affected responsiveness and power usage.