No meu sistema Ubuntu 16.04.1 com o Kernel 4.13.0-36 a seguinte frequência TSC é detectada:
dmesg | grep MHz:
[ 0.004000] tsc: Detected 1800.000 MHz processor
Tenho uma CPU Intel i5-8250U KabyLake com uma frequência base de 1,6 GHz:
O comando lscpu
mostra:
Model name: Intel(R) Core(TM) i5-8250U CPU @ 1.60GHz
Stepping: 10
CPU MHz: 1800.000
CPU max MHz: 1600,0000
CPU min MHz: 400,0000
BogoMIPS: 3600.00
Se eu corrigir a frequência da CPU para 1,6 GHz e executar
watch -n1 cat /sys/devices/system/cpu/cpufreq/policy*/scaling_cur_freq
Eu obtenho freqüências próximas a 1,6 GHz:
1600789
1600084
1599992
1600058
enquanto outra ferramenta cpufreq-aperf
ao mesmo tempo mostra:
000 1408000 00 sec 006 ms 00 sec 993 ms 00
001 1408000 00 sec 003 ms 00 sec 996 ms 00
002 1408000 00 sec 005 ms 00 sec 994 ms 00
003 1408000 00 sec 005 ms 00 sec 994 ms 00
Na verdade, eu nem me importo, mas estou medindo o desempenho de alguns algoritmos e isso leva a valores errados:
o valor C / B dos algoritmos é sempre maior em 11-13% para os valores de referência conhecidos
O Intel vTune informa que minha taxa de frequência da CPU é de 0,886
a diferença percentual entre a saída de cpufreq-aperf
e o conteúdo de scaling_cur_frequency
também é ~ 88,6%
Então, acho que é devido ao valor errado do TSC.
Existe uma maneira de definir manualmente o valor detectado de TSC / CPU no Ubuntu?
BTW, eu acho que é um bug / erro causado pelo hardware ou pela Intel, já que o Windows também reporta a freqüência de base errada no TaskManager.