我想知道Linux系统上的TSC频率。从/ proc / cpuinfo读取我在“模型名称”和“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 freq不是问题。
“cpu MHz”是处理器的当前频率吗?我的意思是,这个值可以根据CPU负载而变化吗?
编辑:我制作了一个计算TSC频率的简单程序(使用长时间测量时间()),并且在3.4 GHz机器中得到3502 MHz(近似)。因此,Linux time()函数不是很精确,或者TSC比声称的3.4 GHz更快。
那么,有人知道/ proc / cpuinfo是否可靠?
答案 0 :(得分:1)
以下链接下的问题完全相同:测量tsc 3502 cpu频率3400Mhz
https://software.intel.com/en-us/forums/topic/284137
通过关闭BIOS中的自动超频来解决此问题
答案 1 :(得分:0)
在我的服务器中:
$ 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_MHz ,CPU空闲时(即处于“ c0”状态)的平均时钟速率。
TSC_MHz ,TSC在整个时间间隔内运行的平均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
答案 2 :(得分:-1)
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事件,也可以由用户空间程序手动调整。
希望这会有所帮助。