在我的系统上Ubuntu 16.04.1使用内核4.13.0-36检测到以下 TSC 频率:
dmesg | grep MHz:
[ 0.004000] tsc: Detected 1800.000 MHz processor
我有一个英特尔 i5-8250U KabyLake基本频率为 1.6 GHz 的 CPU:
https://ark.intel.com/products/124967
命令lscpu
显示:
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
如果我将 CPU 频率固定为 1.6 GHz 并运行
watch -n1 cat /sys/devices/system/cpu/cpufreq/policy*/scaling_cur_freq
我得到的频率接近 1.6GHz:
1600789
1600084
1599992
1600058
而另一个工具cpufreq-aperf
同时显示:
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
实际上,我甚至不在乎,但我正在测量一些算法的性能,这会导致错误的值:
算法的 C/B 值总是比已知参考值高 11-13%
Intel vTune 告诉我我的 CPU 频率比是 0.886
产量
cpufreq-aperf
与含量之间的百分比差异scaling_cur_frequency
也约为 88.6%
所以我猜测这是由于错误的 TSC 值造成的。
有没有办法在 Ubuntu 中手动设置检测到的 TSC / CPU MHz 值?
顺便说一句,我猜这是一个由硬件或英特尔引起的错误/错误,因为 Windows 也在任务管理器中报告了错误的基本频率。