从/ proc / cpuinfo获取TSC频率

时间:2014-06-24 17:03:00

标签: linux cpu

我想知道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是否可靠?

3 个答案:

答案 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事件,也可以由用户空间程序手动调整。

希望这会有所帮助。