Dasharo / dasharo-issues

The Dasharo issue tracker
https://dasharo.com/
24 stars 0 forks source link

CPU core frequencies go lower than minimum frequency for v1210 #703

Open Psotas opened 7 months ago

Psotas commented 7 months ago

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

mkopec commented 6 months ago

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.

pkubaj commented 4 months ago

2% would still be too little: 91) '800.0 <= 727.263' should be true. You would need 10% here.

miczyg1 commented 4 months ago

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.

pkubaj commented 3 months ago

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.

pkubaj commented 3 months ago

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.

mkopec commented 3 months ago

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.

macpijan commented 2 months ago

Related code @wiktormowinski : https://github.com/Dasharo/open-source-firmware-validation/blob/main/dasharo-performance/cpu-frequency.robot#L212