dasharo-issues
dasharo-issues copied to clipboard
CPU core frequencies go lower than minimum frequency for v1210
Device
V1210
Dasharo version
Dasharo v0.9.2
Affected component(s) or functionality
No response
Brief summary
CPU core frequencies go lower than minimum frequency for v1210
How reproducible
No response
How to reproduce
execute:
lscpu | grep -i mhz
cat /proc/cpuinfo | grep -i mhz
Expected behavior
None of CPU core frequencies should be higher than maximum frequency or lower than minimum frequency.
Actual behavior
ubuntu@3mdeb:~$ lscpu | grep -i mhz
CPU max MHz: 2900,0000
CPU min MHz: 800,0000
ubuntu@3mdeb:~$ cat /proc/cpuinfo | grep -i mhz
cpu MHz : 733.093
cpu MHz : 800.013
cpu MHz : 797.937
cpu MHz : 800.014
Screenshots
No response
Additional context
No response
Solutions you've tried
No response
FIVR RFI Spread Spectrum might be causing this (causing the frequency to fluctuate a bit above and below the requested freq, to reduce RF interference). I also don't know where the reading in /proc/cpuinfo
comes from, it may not be perfectly accurate. I'd just add 1-2% allowed margin for error in the tests.
2% would still be too little:
91) '800.0 <= 727.263' should be true.
You would need 10% here.
I sometimes saw 600 and 400. Even 50% would not be enough. One would have to take an average of a few measurements to have a meaningful value. We are also not sure on what basis this frequency is calculated really.
Is this issue still valid? When I try to reproduce it, I'm getting:
root@3mdeb:~# grep cpu\ MHz /proc/cpuinfo
cpu MHz : 1363.922
cpu MHz : 800.038
cpu MHz : 800.000
cpu MHz : 799.926
root@3mdeb:~# grep cpu\ MHz /proc/cpuinfo
cpu MHz : 806.273
cpu MHz : 800.053
cpu MHz : 1363.966
cpu MHz : 800.086
root@3mdeb:~# grep cpu\ MHz /proc/cpuinfo
cpu MHz : 799.952
cpu MHz : 800.000
cpu MHz : 1400.014
cpu MHz : 800.000
root@3mdeb:~# grep cpu\ MHz /proc/cpuinfo
cpu MHz : 799.954
cpu MHz : 800.114
cpu MHz : 1400.000
cpu MHz : 1400.000
root@3mdeb:~# grep cpu\ MHz /proc/cpuinfo
cpu MHz : 800.058
cpu MHz : 800.033
cpu MHz : 1364.774
cpu MHz : 846.526
root@3mdeb:~# grep cpu\ MHz /proc/cpuinfo
cpu MHz : 892.811
cpu MHz : 897.991
cpu MHz : 800.000
cpu MHz : 1386.314
root@3mdeb:~# grep cpu\ MHz /proc/cpuinfo
cpu MHz : 800.366
cpu MHz : 800.000
cpu MHz : 800.042
cpu MHz : 1400.168
root@3mdeb:~# grep cpu\ MHz /proc/cpuinfo
cpu MHz : 1380.924
cpu MHz : 800.072
cpu MHz : 800.022
cpu MHz : 852.195
root@3mdeb:~# grep cpu\ MHz /proc/cpuinfo
cpu MHz : 799.952
cpu MHz : 800.000
cpu MHz : 800.016
cpu MHz : 1400.014
root@3mdeb:~# grep cpu\ MHz /proc/cpuinfo
cpu MHz : 1400.000
cpu MHz : 800.000
cpu MHz : 800.000
cpu MHz : 1417.746
root@3mdeb:~# grep cpu\ MHz /proc/cpuinfo
cpu MHz : 800.000
cpu MHz : 800.046
cpu MHz : 800.043
cpu MHz : 1400.000
root@3mdeb:~# grep cpu\ MHz /proc/cpuinfo
cpu MHz : 799.975
cpu MHz : 1385.201
cpu MHz : 1239.762
cpu MHz : 988.209
root@3mdeb:~# grep cpu\ MHz /proc/cpuinfo
cpu MHz : 800.067
cpu MHz : 800.000
cpu MHz : 868.420
cpu MHz : 1400.000
root@3mdeb:~# grep cpu\ MHz /proc/cpuinfo
cpu MHz : 800.104
cpu MHz : 800.000
cpu MHz : 1251.645
cpu MHz : 1400.000
root@3mdeb:~# grep cpu\ MHz /proc/cpuinfo
cpu MHz : 800.000
cpu MHz : 800.043
cpu MHz : 1400.000
cpu MHz : 800.000
root@3mdeb:~# grep cpu\ MHz /proc/cpuinfo
cpu MHz : 800.000
cpu MHz : 800.000
cpu MHz : 1400.000
cpu MHz : 799.813
root@3mdeb:~# grep cpu\ MHz /proc/cpuinfo
cpu MHz : 800.059
cpu MHz : 800.015
cpu MHz : 1385.204
cpu MHz : 800.000
root@3mdeb:~# grep cpu\ MHz /proc/cpuinfo
cpu MHz : 800.028
cpu MHz : 800.027
cpu MHz : 1386.275
cpu MHz : 800.000
root@3mdeb:~# grep cpu\ MHz /proc/cpuinfo
cpu MHz : 800.000
cpu MHz : 799.987
cpu MHz : 1400.014
cpu MHz : 800.118
root@3mdeb:~# grep cpu\ MHz /proc/cpuinfo
cpu MHz : 800.000
cpu MHz : 799.960
cpu MHz : 1384.482
cpu MHz : 800.000
root@3mdeb:~# grep cpu\ MHz /proc/cpuinfo
cpu MHz : 800.000
cpu MHz : 955.464
cpu MHz : 1400.000
cpu MHz : 868.154
root@3mdeb:~# grep cpu\ MHz /proc/cpuinfo
cpu MHz : 1149.718
cpu MHz : 1253.534
cpu MHz : 800.016
cpu MHz : 800.000
root@3mdeb:~# grep cpu\ MHz /proc/cpuinfo
cpu MHz : 799.981
cpu MHz : 800.013
cpu MHz : 1400.000
cpu MHz : 800.000
root@3mdeb:~# grep cpu\ MHz /proc/cpuinfo
cpu MHz : 799.339
cpu MHz : 800.065
cpu MHz : 1371.457
cpu MHz : 922.000
root@3mdeb:~# grep cpu\ MHz /proc/cpuinfo
cpu MHz : 834.752
cpu MHz : 800.026
cpu MHz : 1400.883
cpu MHz : 1400.000
root@3mdeb:~# grep cpu\ MHz /proc/cpuinfo
cpu MHz : 799.955
cpu MHz : 799.969
cpu MHz : 1400.000
cpu MHz : 800.000
So it looks like it really falls just about 1% below 800MHz.
Oh, the above was with intel_pstate=disable
added, if I remove it, I'm getting the previously reported discrepancies:
cpu MHz : 795.598
cpu MHz : 799.968
cpu MHz : 800.154
cpu MHz : 791.218
root@3mdeb:~# grep cpu\ MHz /proc/cpuinfo
cpu MHz : 799.157
cpu MHz : 799.975
cpu MHz : 800.000
cpu MHz : 782.922
root@3mdeb:~# grep cpu\ MHz /proc/cpuinfo
cpu MHz : 799.301
cpu MHz : 799.983
cpu MHz : 800.134
cpu MHz : 800.000
root@3mdeb:~# grep cpu\ MHz /proc/cpuinfo
cpu MHz : 797.225
cpu MHz : 800.016
cpu MHz : 763.864
cpu MHz : 787.491
root@3mdeb:~# grep cpu\ MHz /proc/cpuinfo
cpu MHz : 798.954
cpu MHz : 799.975
cpu MHz : 800.000
cpu MHz : 800.000
So it's probably either an environment issue (we should set intel_pstate=disable
for testing), or developers should look into why there's a correct behaviour with intel_pstate=disable
set.
I don't know where the frequencies reported in /proc/cpuinfo come from, I'd use turbostat -s Bzy_MHz
to get the most accurate frequency readout.
Related code @wiktormowinski : https://github.com/Dasharo/open-source-firmware-validation/blob/main/dasharo-performance/cpu-frequency.robot#L212