Hello for everyone, i try to improve performance on my Thinkpad t480 using this guide: Исправление троттлинга на ThinkPad с ультрабучными процессорами - Evv1L Space
This guide using throttled software for fix Intel CPU throttling. But originally tool not work in dom0, then i forked it GitHub - r3t4k3r/throttled-qubes: Workaround for Intel throttling issues in Linux. .
But software shows me the error:
[I] Detected CPU architecture: Intel KabyLake
[I] Trying to unlock MSR allow_writes.
[I] Testing if undervolt is supported...
[E] Unable to write to MSR MSR_OC_MAILBOX (150). Unknown error.
[W] Undervolt seems not to be supported by your system, disabling.
[I] Testing if HWP is supported...
[E] Unable to read to MSR IA32_HWP_REQUEST (774). Unknown error.
[W] HWP seems not to be supported by your system, disabling.
[I] Loading config file.
[D] cpu platform info: maximum non turbo ratio = 0
[D] cpu platform info: maximum efficiency ratio = 0
[D] cpu platform info: minimum operating ratio = 0
[D] cpu platform info: feature ppin cap = 0
[D] cpu platform info: feature programmable turbo ratio = 0
[D] cpu platform info: feature programmable tdp limit = 0
[D] cpu platform info: number of additional tdp profiles = 0
[D] cpu platform info: feature programmable temperature target = 0
[D] cpu platform info: feature low power mode = 0
[W] Setting temperature target is not supported by this CPU
[E] Unable to read to MSR MSR_RAPL_POWER_UNIT (606). Unknown error.
throttled use sudo rdmsr -a 0x774
and other offsets, but it seems don’t work
I already tried to add msr.allow_writes=on
(throttled issue ) for kernel and cpufreq=xen:hwp
(qubes issue ) for xen params
Another software thinkfan also didn’t work in my case
Maybe someone know more about MSR and how HWP works in Qubes, and could help me to solve this problem?
Best wishes, anone381
1 Like
i’ve fixed that problem, with adding dom0=msr-relaxed
into xen params, but now all readed values contains 0
value only. Maybe VCPU’s conected into dom0, not real CPU?
[I] Detected CPU architecture: Intel KabyLake
[I] Trying to unlock MSR allow_writes.
[I] Testing if undervolt is supported...
[I] Testing if HWP is supported...
[I] Loading config file.
[D] cpu platform info: maximum non turbo ratio = 0
[D] cpu platform info: maximum efficiency ratio = 0
[D] cpu platform info: minimum operating ratio = 0
[D] cpu platform info: feature ppin cap = 0
[D] cpu platform info: feature programmable turbo ratio = 0
[D] cpu platform info: feature programmable tdp limit = 0
[D] cpu platform info: number of additional tdp profiles = 0
[D] cpu platform info: feature programmable temperature target = 0
[D] cpu platform info: feature low power mode = 0
[W] Setting temperature target is not supported by this CPU
[W] cTDP setting not supported by this CPU
[W] cTDP setting not supported by this CPU
[D] Undervolt plane CORE - write 0 mV (0x0) - read 0 mV (0x0) - match OK
[D] Undervolt plane GPU - write 0 mV (0x0) - read 0 mV (0x0) - match OK
[D] Undervolt plane CACHE - write 0 mV (0x0) - read 0 mV (0x0) - match OK
[D] Undervolt plane UNCORE - write 0 mV (0x0) - read 0 mV (0x0) - match OK
[D] Undervolt plane ANALOGIO - write 0 mV (0x0) - read 0 mV (0x0) - match OK
[I] Starting main loop.
[D] core 0 thermal status: thermal limit status = 0
[D] core 0 thermal status: thermal limit log = 0
[D] core 0 thermal status: prochot or forcepr status = 0
[D] core 0 thermal status: prochot or forcepr log = 0
[D] core 0 thermal status: crit temp status = 0
[D] core 0 thermal status: crit temp log = 0
[D] core 0 thermal status: thermal threshold1 status = 0
[D] core 0 thermal status: thermal threshold1 log = 0
[D] core 0 thermal status: thermal threshold2 status = 0
[D] core 0 thermal status: thermal threshold2 log = 0
[D] core 0 thermal status: power limit status = 0
[D] core 0 thermal status: power limit log = 0
[D] core 0 thermal status: current limit status = 0
[D] core 0 thermal status: current limit log = 0
[D] core 0 thermal status: cross domain limit status = 0
[D] core 0 thermal status: cross domain limit log = 0
[D] core 0 thermal status: cpu temp = 0
[D] core 0 thermal status: temp resolution = 0
[D] core 0 thermal status: reading valid = 0
[D] core 1 thermal status: thermal limit status = 0
[D] core 1 thermal status: thermal limit log = 0
[D] core 1 thermal status: prochot or forcepr status = 0
[D] core 1 thermal status: prochot or forcepr log = 0
[D] core 1 thermal status: crit temp status = 0
[D] core 1 thermal status: crit temp log = 0
[D] core 1 thermal status: thermal threshold1 status = 0
[D] core 1 thermal status: thermal threshold1 log = 0
[D] core 1 thermal status: thermal threshold2 status = 0
[D] core 1 thermal status: thermal threshold2 log = 0
[D] core 1 thermal status: power limit status = 0
[D] core 1 thermal status: power limit log = 0
[D] core 1 thermal status: current limit status = 0
[D] core 1 thermal status: current limit log = 0
[D] core 1 thermal status: cross domain limit status = 0
[D] core 1 thermal status: cross domain limit log = 0
[D] core 1 thermal status: cpu temp = 0
[D] core 1 thermal status: temp resolution = 0
[D] core 1 thermal status: reading valid = 0
[D] core 2 thermal status: thermal limit status = 0
[D] core 2 thermal status: thermal limit log = 0
[D] core 2 thermal status: prochot or forcepr status = 0
[D] core 2 thermal status: prochot or forcepr log = 0
[D] core 2 thermal status: crit temp status = 0
[D] core 2 thermal status: crit temp log = 0
[D] core 2 thermal status: thermal threshold1 status = 0
[D] core 2 thermal status: thermal threshold1 log = 0
[D] core 2 thermal status: thermal threshold2 status = 0
[D] core 2 thermal status: thermal threshold2 log = 0
[D] core 2 thermal status: power limit status = 0
[D] core 2 thermal status: power limit log = 0
[D] core 2 thermal status: current limit status = 0
[D] core 2 thermal status: current limit log = 0
[D] core 2 thermal status: cross domain limit status = 0
[D] core 2 thermal status: cross domain limit log = 0
[D] core 2 thermal status: cpu temp = 0
[D] core 2 thermal status: temp resolution = 0
[D] core 2 thermal status: reading valid = 0
[D] core 3 thermal status: thermal limit status = 0
[D] core 3 thermal status: thermal limit log = 0
[D] core 3 thermal status: prochot or forcepr status = 0
[D] core 3 thermal status: prochot or forcepr log = 0
[D] core 3 thermal status: crit temp status = 0
[D] core 3 thermal status: crit temp log = 0
[D] core 3 thermal status: thermal threshold1 status = 0
[D] core 3 thermal status: thermal threshold1 log = 0
[D] core 3 thermal status: thermal threshold2 status = 0
[D] core 3 thermal status: thermal threshold2 log = 0
[D] core 3 thermal status: power limit status = 0
[D] core 3 thermal status: power limit log = 0
[D] core 3 thermal status: current limit status = 0
[D] core 3 thermal status: current limit log = 0
[D] core 3 thermal status: cross domain limit status = 0
[D] core 3 thermal status: cross domain limit log = 0
[D] core 3 thermal status: cpu temp = 0
[D] core 3 thermal status: temp resolution = 0
[D] core 3 thermal status: reading valid = 0
[D] core 4 thermal status: thermal limit status = 0
[D] core 4 thermal status: thermal limit log = 0
[D] core 4 thermal status: prochot or forcepr status = 0
[D] core 4 thermal status: prochot or forcepr log = 0
[D] core 4 thermal status: crit temp status = 0
[D] core 4 thermal status: crit temp log = 0
[D] core 4 thermal status: thermal threshold1 status = 0
[D] core 4 thermal status: thermal threshold1 log = 0
[D] core 4 thermal status: thermal threshold2 status = 0
[D] core 4 thermal status: thermal threshold2 log = 0
[D] core 4 thermal status: power limit status = 0
[D] core 4 thermal status: power limit log = 0
[D] core 4 thermal status: current limit status = 0
[D] core 4 thermal status: current limit log = 0
[D] core 4 thermal status: cross domain limit status = 0
[D] core 4 thermal status: cross domain limit log = 0
[D] core 4 thermal status: cpu temp = 0
[D] core 4 thermal status: temp resolution = 0
[D] core 4 thermal status: reading valid = 0
[D] core 5 thermal status: thermal limit status = 0
[D] core 5 thermal status: thermal limit log = 0
[D] core 5 thermal status: prochot or forcepr status = 0
[D] core 5 thermal status: prochot or forcepr log = 0
[D] core 5 thermal status: crit temp status = 0
[D] core 5 thermal status: crit temp log = 0
[D] core 5 thermal status: thermal threshold1 status = 0
[D] core 5 thermal status: thermal threshold1 log = 0
[D] core 5 thermal status: thermal threshold2 status = 0
[D] core 5 thermal status: thermal threshold2 log = 0
[D] core 5 thermal status: power limit status = 0
[D] core 5 thermal status: power limit log = 0
[D] core 5 thermal status: current limit status = 0
[D] core 5 thermal status: current limit log = 0
[D] core 5 thermal status: cross domain limit status = 0
[D] core 5 thermal status: cross domain limit log = 0
[D] core 5 thermal status: cpu temp = 0
[D] core 5 thermal status: temp resolution = 0
[D] core 5 thermal status: reading valid = 0
[D] core 6 thermal status: thermal limit status = 0
[D] core 6 thermal status: thermal limit log = 0
[D] core 6 thermal status: prochot or forcepr status = 0
[D] core 6 thermal status: prochot or forcepr log = 0
[D] core 6 thermal status: crit temp status = 0
[D] core 6 thermal status: crit temp log = 0
[D] core 6 thermal status: thermal threshold1 status = 0
[D] core 6 thermal status: thermal threshold1 log = 0
[D] core 6 thermal status: thermal threshold2 status = 0
[D] core 6 thermal status: thermal threshold2 log = 0
[D] core 6 thermal status: power limit status = 0
[D] core 6 thermal status: power limit log = 0
[D] core 6 thermal status: current limit status = 0
[D] core 6 thermal status: current limit log = 0
[D] core 6 thermal status: cross domain limit status = 0
[D] core 6 thermal status: cross domain limit log = 0
[D] core 6 thermal status: cpu temp = 0
[D] core 6 thermal status: temp resolution = 0
[D] core 6 thermal status: reading valid = 0
[D] core 7 thermal status: thermal limit status = 0
[D] core 7 thermal status: thermal limit log = 0
[D] core 7 thermal status: prochot or forcepr status = 0
[D] core 7 thermal status: prochot or forcepr log = 0
[D] core 7 thermal status: crit temp status = 0
[D] core 7 thermal status: crit temp log = 0
[D] core 7 thermal status: thermal threshold1 status = 0
[D] core 7 thermal status: thermal threshold1 log = 0
[D] core 7 thermal status: thermal threshold2 status = 0
[D] core 7 thermal status: thermal threshold2 log = 0
[D] core 7 thermal status: power limit status = 0
[D] core 7 thermal status: power limit log = 0
[D] core 7 thermal status: current limit status = 0
[D] core 7 thermal status: current limit log = 0
[D] core 7 thermal status: cross domain limit status = 0
[D] core 7 thermal status: cross domain limit log = 0
[D] core 7 thermal status: cpu temp = 0
[D] core 7 thermal status: temp resolution = 0
[D] core 7 thermal status: reading valid = 0
[D] MSR PACKAGE_POWER_LIMIT - write 0x802c00c9802c - read 0x0 - match ERR
[D] MCHBAR PACKAGE_POWER_LIMIT - write 0x802c00c9802c - read 0x802c00c9802c - match OK
1 Like
I found the simmilar problem here https://groups.google.com/g/qubes-devel/c/05MLJCOB1o4 . How i understand, xen just don’t allow access for some offsets. For solve this problem xen should be patched. Or you can use xenpm for power managment control, but it’s also broken Intel CPU Frequency Scaling Broken · Issue #4604 · QubesOS/qubes-issues · GitHub
I not partly true, xenpm
looks like really works in last Qubes 4.2 release. You could control performance using xenpm set-cpufreq-hwp energy-perf:<number>
where <number>
can be integer in range 0-255
, when less, then faster. I used 18
value and less. Real cpu frequency you can see using xenpm start 1 | grep KHz
renehoj
December 20, 2024, 8:35pm
6
Do you experience any actual difference between min and max energy settings?
When I tested it on my T480, I didn’t really notice any significant difference in battery life when changing the CPU energy settings.
Using xenpm to disable boost seems to improve battery life, when the CPU is under moderate workload, e.g. when watching video.
Yes, the system works faster. Usually my CPU temperature no more then 50-60, but after command with energy-perf:8
usually 62-70
I’m not sure about that, i’ve just solved that problem 10 mins ago.
Usually i use my laptop only with charger.
renehoj
December 20, 2024, 8:59pm
8
The clock speed doesn’t tell you how much power the CPU uses, if the P to C state ratio also goes up, then you are just working less for a longer duration of time.
If you don’t are about battery life, just install ThinkFan and run the fan more aggressive. You can bump up the rpm a lot without the fan getting too loud.
1 Like
I really don’t know why you think so. How i already said, idk about working time, but performance really improve
Example of /etc/thinkfan.conf
, which use max fan RPM if temperature more then 50.
sensors:
- tpacpi: /proc/acpi/ibm/thermal
indices: [0]
fans:
- tpacpi: /proc/acpi/ibm/fan
levels:
- [0, 0, 50]
- ["level full-speed", 50, 255]