我想知道Linux系统上的TSC频率。从/proc/cpuinfo读取,我在"型号名称"one_answers"cpu MHz"行中得到不同的频率。例如,在一个有4个HT核心的核心i7中,我得到了:
model name : Intel(R) Core(TM) i7-2600K CPU @ 3.40GHz
cpu MHz : 1600.000
哪个是正确的TSC频率?3.4 GHz还是1.6 GHz?
我假设只有新的处理器,所以可变的TSC频率不是问题。
"cpu MHz"是处理器的当前频率吗?我的意思是,这个值能根据CPU负载而改变吗?
编辑:我做了一个简单的程序来计算TSC频率(使用用时间((测量的长时间(,在3.4 GHz的机器中我得到了3502 MHz(大约(。因此,要么Linux的time((函数不是很精确,要么TSC比声称的3.4 GHz更快。
那么,有人知道/proc/cpuinfo是否可靠吗?
在我的服务器中:
$ cat /proc/cpuinfo | grep "model name|cpu MHz"
model name : Intel(R) Xeon(R) Platinum 8163 CPU @ 2.50GHz
cpu MHz : 2699.804
2.50GHz为TSC频率,2699.804为当前频率。
您也可以使用turbostat
来获取TSC频率和当前频率。
Bzy_MHzCPU不空闲时(即处于"c0"状态(的平均时钟速率。
TSC_MHzTSC在整个间隔期间运行的平均MHz。
https://manpages.debian.org/testing/linux-cpupower/turbostat.8.en.html
$ sudo turbostat --interval 1
CPU Avg_MHz %Busy Bzy_MHz TSC_MHz CoreTmp PkgTmp
- 2 0.07 2671 2501 48 48
0 4 0.15 2703 2502 44 46
48 0 0.00 2644 2502
1 3 0.13 2703 2502 44
49 0 0.00 2569 2502
2 1 0.05 2700 2502 45
50 0 0.01 2670 2502
3 1 0.05 2707 2502 44
以下链接下的问题完全相同:测量tsc 3502 cpu频率3400Mhz
https://software.intel.com/en-us/forums/topic/284137
通过关闭BIOS 中的自动过时钟解决
Is "cpu MHz" the current frequency of the processor? I mean, Can this value change according to the CPU load?
是的,cpu MHz
是该核心的当前频率。3.40GHz是制造商指定的最大频率(通过超频可以实现更高的频率(。
工作频率的变化称为CPU频率缩放。它使操作系统能够放大或缩小CPU频率以节省电源。CPU频率可以根据系统负载自动调整,以响应ACPI事件,也可以由用户空间程序手动调整。
希望这能有所帮助。