从/proc/cpuinfo获取TSC频率



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

希望这能有所帮助。

最新更新