machdep.hwpstate_pkg_ctrl no visible effect ?

this is an i7-11700K cpu running FreeBSD 15.1 Stable .

As I understand it, machdep.hwpstate_pkg_ctrl tunable is expected to control if the whole CPU/all cores runs at the same frequency or if the
Cores run at individual frequencies .

regardless if the machdep.hwpstate_pkg_ctrl is ONE ore ZERO , the cores appears to run at individual frequencies ? why is this ?

sysctl -a | grep machdep.hwpstate_pkg
machdep.hwpstate_pkg_ctrl: 1 ( set to Package control (default ) )


dev.cpufreq.0.freq_driver: hwpstate_intel0 ( showing that the cpufreq / hwpstate driver is operational )
dev.cpufreq.0.%driver: cpufreq
dev.cpufreq.0.%desc: CPU frequency control
dev.cpu.15.freq_levels: 3600/-1
dev.cpu.15.freq: 2977
dev.cpu.13.freq_levels: 3600/-1
dev.cpu.13.freq: 3117
dev.cpu.11.freq_levels: 3600/-1
dev.cpu.11.freq: 2811
dev.cpu.9.freq_levels: 3600/-1
dev.cpu.9.freq: 3384
dev.cpu.7.freq_levels: 3600/-1
dev.cpu.7.freq: 3056
dev.cpu.5.freq_levels: 3600/-1
dev.cpu.5.freq: 2865
dev.cpu.3.freq_levels: 3600/-1
dev.cpu.3.freq: 2898
dev.cpu.1.freq_levels: 3600/-1
dev.cpu.1.freq: 3024
dev.cpu.14.freq_levels: 3600/-1
dev.cpu.14.freq: 3334
dev.cpu.12.freq_levels: 3600/-1
dev.cpu.12.freq: 3258
dev.cpu.10.freq_levels: 3600/-1
dev.cpu.10.freq: 2959
dev.cpu.8.freq_levels: 3600/-1
dev.cpu.8.freq: 2682
dev.cpu.6.freq_levels: 3600/-1
dev.cpu.6.freq: 3920
dev.cpu.4.freq_levels: 3600/-1
dev.cpu.4.freq: 3107
dev.cpu.2.freq_levels: 3600/-1
dev.cpu.2.freq: 3114
dev.cpu.0.freq_levels: 3600/-1
dev.cpu.0.freq: 2966

The cores run at individual speeds ?
 

This should be a helpful resource.

 
I discovered the following :

The Core Ultra9 ArrowLake-S processor has 12 "packages" as shown below , output from Verbose BOOT :
Each Perfomance Core is its own "package" and the Efficiency core are packaged in lots of 4.
Cores 0, 1, 10,11,12,13, 22 and 23 are Performance cores

2,3,4,5, 6,7,8,9 14,15,16,17 and 18,19,20,21 are "packages" of efficiency cores.

Now I can see that the listed frequency of the cores ( cpuctl -a | grep dev.cpu.*.freq ) correspondes with the "packages" of the cores.
The info is also essential for setting up CPUSETS.

# dmesg -a
.
.
Package HW ID = 0
Core HW ID = 0
CPU0 (BSP): APIC ID: 0
Package HW ID = 1
Core HW ID = 4
CPU1 (AP): APIC ID: 8
Package HW ID = 2
Core HW ID = 8
CPU2 (AP): APIC ID: 16
Core HW ID = 9
CPU3 (AP): APIC ID: 18
Core HW ID = 10
CPU4 (AP): APIC ID: 20
Core HW ID = 11
CPU5 (AP): APIC ID: 22
Package HW ID = 3
Core HW ID = 12
CPU6 (AP): APIC ID: 24
Core HW ID = 13
CPU7 (AP): APIC ID: 26
Core HW ID = 14
CPU8 (AP): APIC ID: 28
Core HW ID = 15
CPU9 (AP): APIC ID: 30
Package HW ID = 4
Core HW ID = 16
CPU10 (AP): APIC ID: 32
Package HW ID = 5
Core HW ID = 20
CPU11 (AP): APIC ID: 40
Package HW ID = 6
Core HW ID = 24
CPU12 (AP): APIC ID: 48
Package HW ID = 7
Core HW ID = 28
CPU13 (AP): APIC ID: 56
Package HW ID = 8
Core HW ID = 32
CPU14 (AP): APIC ID: 64
Core HW ID = 33
CPU15 (AP): APIC ID: 66
Core HW ID = 34
CPU16 (AP): APIC ID: 68
Core HW ID = 35
CPU17 (AP): APIC ID: 70
Package HW ID = 9
Core HW ID = 36
CPU18 (AP): APIC ID: 72
Core HW ID = 37
CPU19 (AP): APIC ID: 74
Core HW ID = 38
CPU20 (AP): APIC ID: 76
Core HW ID = 39
CPU21 (AP): APIC ID: 78
Package HW ID = 10
Core HW ID = 40
CPU22 (AP): APIC ID: 80
Package HW ID = 11
Core HW ID = 44
CPU23 (AP): APIC ID: 88
 
As I understand it, machdep.hwpstate_pkg_ctrl tunable is expected to control if the whole CPU/all cores runs at the same frequency or if the
Cores run at individual frequencies .
I'm not too sure about that tunable, but I use dev.hwpstate_intel.0.epp="0" and it sets all cores
 
the "package" of Efficiency in 4 lots of 4 cores I discovered this Saturday morning. explains why the pack of four cores
has the same clockspeed. when dev.hwpstate_intel.0.epp=1, but another group of 4 has a different frequency set.
 
It seems to be possible to limit the Desktop Environment to the Performance Cores and leave the Efficency cores to background jobs.

from initial VT terminal before starting the desktop.

# cpuset -l 0,1,10-13,22,23 -s 1 startx

.xinitrc contains the KDE/plasma6 startup command.
ksnip_20260530-221942.png

a screenshot of HTOP shows load on the listed performance cores only.
Next step is to create secondary cpuset and throw some compile jobs ont to it.
 
Back
Top