确定时钟速度

确定时钟速度

我的意思是确定时钟速度。我在下面发布了列出的各种命令的输出这里

对于最大频率,我看到 4 个不同的来源,有 2 个不同的值:

  1. CPU max MHz: 3300,0000lscpu
  2. capacity: 3300MHzlshw
  3. capacity: 3800MHzsudo lshw
  4. Max Speed: 3800 MHzdmidecode

对于当前频率,我看到 4 个不同的来源,大约有 3 个不同的值:

  1. CPU MHz: 2100.000lscpu
  2. cpu MHz : 1691(我取的平均值)来自cat /proc/cpuinfo
  3. Current Speed: 2600 MHzdmidecode
  4. Detected 2594.332 MHz processorcat /var/log/dmesg

我的观察:

  1. 对于最大频率和当前频率而言,获得的输出存在很大变化。如何理解这一点? 例如,lshw有或没有 会产生不同的结果sudo这是预料之中的吗?哪一个应该被认为更可靠?为什么?
  2. 这 4 个处理器的时钟速度甚至有所不同。预计会出现如此大的变化吗?

笔记:正如 @hobbs 所问,此 OP 的动机是需要了解“时钟速度”(无论对应的变量)、CPU 频率规格和内存速度规格之间的关系(这里也可能有多个值,例如dmidecode 显示内存模块电压:DDR3 RAM 为 3.3 V)。


输出

$ lscpu | grep "MHz"
CPU MHz:                         2100.000
CPU max MHz:                     3300,0000
CPU min MHz:                     1200,0000

$ cat /proc/cpuinfo | grep "MHz"
cpu MHz         : 1753.417
cpu MHz         : 1200.000
cpu MHz         : 2212.235
cpu MHz         : 1600.000

$ lshw -c cpu | grep capacity
WARNING: you should run this program as super-user.
       capacity: 3300MHz
$ sudo lshw -c cpu | grep capacity
       capacity: 3800MHz

$ sudo dmidecode -t processor | grep "Speed"
        Max Speed: 3800 MHz
        Current Speed: 2600 MHz

$ cat /var/log/dmesg | grep "MHz processor"
[    0.000000] kernel: tsc: Detected 2594.332 MHz processor

$ cat /var/log/kern.log | grep "MHz processor"

答案1

以下推论完全基于我自己的实验和推断。另外,推论的一部分是将这些数字与 CPU 制造商报告的官方时钟速度进行比较。

此命令显示每个处理器核心的当前时钟:(所有后续命令均在 Intel Atom C3558 CPU 上运行)

$ cat /proc/cpuinfo | grep "MHz"
cpu MHz         : 1260.714
cpu MHz         : 1070.646
cpu MHz         : 1124.995
cpu MHz         : 1234.689

此命令显示当前核心之间的“平均”时钟( )(我自己观察到的,纯粹基于试验)CPU MHz和最大正常时钟(CPU max MHZ)。

$ lscpu | grep "MHz"
CPU MHz:                         1181.650
CPU max MHz:                     2200.0000
CPU min MHz:                     800.0000

请注意,当前时钟速度(平均和每个核心的时钟速度)随时间变化很大(可能每秒变化很多次),因为系统通常会不断限制 CPU 时钟以节省电量(低至CPU min MHZ)。我相信这在 CPU 核心之间也存在差异,这是正常的。

此命令还显示最大正常时钟(capacity- 应该与CPU max MHz上面的相同)。

$ lshw -c cpu | grep capacity
WARNING: you should run this program as super-user.
       capacity: 2200MHz

然而,对于我来说英特尔凌动 CPU只有在没有 的情况下才会正确报告sudo(2200 MHz)。 有 时sudo,它会报告更高的数字(在这种情况下也是 3800 - 这可能是最大加速时钟,但我不确定 Atom CPU 的情况):

$ sudo lshw -c cpu | grep capacity
       capacity: 3800MHz

为一个博通 ARM CPU(在 Raspberry Pi 4 上),无论是否使用 sudo(1500 MHZ),该值都是相同的。我猜这是因为 Pi Arm CPU 没有 boost/turbo 模式。

答案2

更新了答案有什么方法可以检查我的处理器的时钟速度吗?

但总结一下:

上述所有命令还将为您提供当前的 CPU 赫兹,这意味着,如果您期望在 lscpu 上看到相同的值,并且在执行 cat /proc/cpuinfo 时,这几乎是不可能的。您可以比较最大值,因为对于您可以分析 CPU 的任何方式,这应该显示相同的值,但是当前值始终是您执行它时的“当前 CPU 赫兹”。

最后请注意,dmidecode 从 ACPI 表中读取的信息并不总是与其他工具实时读取的信息相同。

因此,您有几种方法来获取真实的当前 CPU,然后您还可以获取 ACPI 表寄存器的内容(在我看来,这是非常错误的)。

这就是为什么如果你多次运行 lscpu,当前速度总是会改变,/proc/cpuinfo 也是如此。但对于 dmidecode,它将(在许多情况下)保持相同的值,即使该值是误报。

相关内容