/proc/cpuinfo 中显示的频率是多少?

Acc*_*orm 5 linux cpu proc cpu-frequency

我有一个带超线程的四核 CPU(酷睿 i7 7700)。

cat /proc/cpuinfo | grep MHz
Run Code Online (Sandbox Code Playgroud)

返回 8 个不同的频率,其中一些频率不重复(例如我可以获得 3914.208 MHz 的单个值)。所以看起来显示的值确实是每个线程的频率,并且这些频率不需要成对相等。这可能吗?换句话说,单个核心的 2 个线程是否有可能具有不同的频率(在 IRC 上我被告知不会,他们说这种行为非常奇怪,因此我在这里提出问题)。如果不是,那么显示的频率是多少?

这是上述命令的实际输出:

cpu MHz     : 799.804
cpu MHz     : 861.987
cpu MHz     : 1178.613
cpu MHz     : 867.260
cpu MHz     : 3418.066
cpu MHz     : 800.024
cpu MHz     : 1302.539
cpu MHz     : 799.804
Run Code Online (Sandbox Code Playgroud)

编辑:与

cat /proc/cpuinfo 
Run Code Online (Sandbox Code Playgroud)

我可以看到 MHz 按顺序对应于核心 0、1、2、3、0、1、2 和 3。因此,就像 Hamza Jabbour 所说,它是每个线程(也称为逻辑核心)的频率。

我想知道每个线程是否有可能有自己的频率,以及 /proc/cpuinfo 是否在超过 1 个 cpu 周期内收集有关频率的数据(我认为这可能会使虚拟核心的频率不成对匹配)。 )

Ham*_*our 5

这是核心的频率,您有以最低频率运行的核心,以及以更高频率运行的其他压力较大的核心。

您可以通过该lscpu实用程序获得更多信息和解释。

  • 此外,在“lscpu”的输出中,您会发现 2 行:“每个套接字的核心”和“每个核心的线程”,每个线程都是一个逻辑核心,在您的情况下,我认为您有:4 个物理核心核心和每个核心 2 个线程 <=> 2x4=8 逻辑核心 ^^。 (2认同)
  • @no_choice99 每个线程没有自己的频率,整个物理核心根据负载、线程数、关联性、优先级、所需的延迟来调节。频率不是收集或“测量”的,而是由内核电源管理命令/控制的,它不会随周期变化,但会随着线程死亡或创建而变化。 (2认同)