了解cat / proc / cpuinfo的处理器频率部分


4

我正在查看我的Ubuntu Linux 11.10系统上的处理器SPECS。

这是命令cat / proc / cpuinfo的输出的结尾:

processor   : 3
vendor_id   : GenuineIntel
cpu family  : 6
model       : 37
model name  : Intel(R) Core(TM) i3 CPU       M 330  @ 2.13GHz
stepping    : 2
cpu MHz     : 933.000
cache size  : 3072 KB
physical id : 0
siblings    : 4
core id     : 2
cpu cores   : 2
apicid      : 5
initial apicid  : 5
fdiv_bug    : no
hlt_bug     : no
f00f_bug    : no
coma_bug    : no
fpu     : yes
fpu_exception   : yes
cpuid level : 11
wp      : yes
flags       : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe nx rdtscp lm constant_tsc arch_perfmon pebs bts xtopology nonstop_tsc aperfmperf pni dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm sse4_1 sse4_2 popcnt lahf_lm arat dts tpr_shadow vnmi flexpriority ept vpid
bogomips    : 4256.47
clflush size    : 64
cache_alignment : 64
address sizes   : 36 bits physical, 48 bits virtual
power management:

我没有得到标记的行:

model name  : Intel(R) Core(TM) i3 CPU       M 330  @ 2.13GHz
cpu MHz     : 933.000

这里的处理器频率在第一行是2.13 GHz,第二行是933 Mhz。哪个是正确的?2.13 GHz是指核心频率的总和吗?

最后,这些频率中的哪一个可以告诉我系统时钟的每秒周期数/每秒时钟滴答数?

编辑:在对布鲁诺·佩雷拉(Bruno Pereira)的一个很好的回答的一个小扩展中,我发现使处理器实时运行在不同频率上也是动态频率缩放或cpu节流。这是两个有趣的网页:

http://en.wikipedia.org/wiki/Dynamic_frequency_scaling

http://en.wikipedia.org/wiki/SpeedStep


求和频率是没有意义的。频率就像速度,将它们相加会给您带来无意义的结果。您能否将两辆汽车每小时行驶50英里并得出每小时100英里的总和?
大卫·史瓦兹

注意:从内核4.13开始,cat /proc/cpuinfo | grep MHz不再返回当前时钟速度。据说这在内核Bugzilla中是故意的。请参阅bugzilla.kernel.org/show_bug.cgi?id=197009。它还这里提到:phoronix.com/...
Marc.2377

Answers:


7

Linux使用控制器来设置您的CPU将运行哪个步进(如果您的CPU支持步进设置)。

通常,默认情况下,这些设置为On Demmand,这意味着当不大量使用CPU时,CPU的频率将降低。

cpufreq-info是一个实用程序,用于检查CPU可用的步骤,CPU每个内核当前正在使用哪个内核调控器以及有关CPU功能的更多信息。
它返回类似

cpufrequtils 007: cpufreq-info (C) Dominik Brodowski 2004-2009
Report errors and bugs to cpufreq@vger.kernel.org, please.
analyzing CPU 0:
  driver: powernow-k8
  CPUs which run at the same hardware frequency: 0
  CPUs which need to have their frequency coordinated by software: 0
  maximum transition latency: 8.0 us.
  hardware limits: 800 MHz - 3.00 GHz
  available frequency steps: 3.00 GHz, 2.30 GHz, 1.80 GHz, 800 MHz
  available cpufreq governors: conservative, ondemand, userspace, powersave, performance
  current policy: frequency should be within 800 MHz and 3.00 GHz.
                  The governor "ondemand" may decide which speed to use
                  within this range.
  current CPU frequency is 800 MHz.
  cpufreq stats: 3.00 GHz:10.45%, 2.30 GHz:0.29%, 1.80 GHz:1.72%, 800 MHz:87.55%  (28605)

有关如何从命令行检查和设置CPU步进的更多信息,我已经创建了另一个问题的答案,该问题解释了如何执行此操作here,请看一下。

您的CPU的最大频率为2.13Ghz,但除非将内核调速器设置为“ 性能”,否则系统将在大多数空闲时间内降低该频率。

933Mhz是您的CPU可用的最低步进,这意味着您的系统当前可能没有太大的压力,或者正在使用节电调速器。

您可以测试当系统处于负载状态时是否获得相同的结果,如果频率没有变化,则说明您正在使用节电控制器,并且始终将CPU的频率保持在933Mhz。


感谢您的精彩回答。我对30亿个整数运行了一个简单的排序例程,并在运行期间检查了CPU频率。我发现它确实跳到了2.13 GHz。
smilebuddha 2012年

一个问题:当人们谈论将处理器超频用于游戏时,这意味着他们试图将处理器频率提高到超过最大保证频率(我的情况是2.13 MHz),对吗?
smilebuddha 2012年

@smilingbuddha是正确的,通常涉及增加CPU的倍频器或系统的FSB,使其超出其出厂建议的额定值。产生额外的热量,需要更好的冷却。
布鲁诺·佩雷拉

5

933 MHz是该CPU内核的当前频率(由于系统空闲,它可能以较低的速度运行),而最大频率为2.13 GHZ。频率。另请参阅程序的输出cpufreq-info


@ 2.13 GHz是型号名称的一部分。这是CPU制造商选择输入型号名称的频率。在许多现代CPU上,这实际上不是最大频率,而是最大保证频率。
大卫·史瓦兹

@DavidSchwartz对于任何对在高于保证频率上运行其CPU感兴趣的读者,2.13Ghz 该CPU的最大频率。那里没事。
布鲁诺·佩雷拉

@BrunoPereira:这对于特定的CPU是正确的,但是由于turbo boost之类的功能,通常情况并非如此。
大卫·史瓦兹

2

Turbo和c状态会使CPU频率更加复杂。

当处理器处于空闲状态且处于c状态时,它将报告该处理器的最小频率,通常在available_scaling_frequency中可以看到。

因此,即使您选择性能调节器,您也会看到两种速度,即最小速度和最大速度-但最小频率实际上是没有意义的,因为CPU处于c状态,因此并未执行任何操作。

这些值实际上与一组寄存器msr 0x199、0x198、0x1a0和0x1ad直接相关,如果您感到好奇,可以通过rdmsr实用程序直接读取这些值。

更令人困惑的是,调速器要求提供最大可用频率,并且有足够的散热空间,内核可以超频,并且不会在msr 0x199和cpuinfo中报告该错误。必须使用aperf / mperf的实用程序才能确定您的CPU是否以保证的速度运行。

型号信息值是此保证的速度。这意味着在适当的冷却条件下,芯片应始终能够以该频率运行。在此示例中为2.13GHz。

寄存器0x1ad向您显示可用的Turbo频率。您的寄存器在8核EE芯片上可能看起来像这样:1b1b1c1c1d1d1e1e

每个字节表示当时可以激活以获取频率的CPU + 1的数量。

在这种情况下,如果有7个或8个内核处于活动状态,则最大乘数为0x1b或27。该乘数通常为100MHz,尽管另一个MSR对此进行了指定。因此,该EE部件能够在2.7GHz上运行,而保证频率为2.2GHz。随着越来越多的CPU处于c状态/空闲状态,如果只有1个或2个内核处于活动状态,turbo比率可以提高到最大30或3.0GHz。

由于这些CPU是超标量的,并且可以执行乱序操作,并且由于CISC中的宏指令可能占用一个以上的周期,因此时钟速率并不是有意义的周期指示。

Bogomips基本上是基于一个周期中无操作的次数来表示的,但是有太多变量无法根据CPU频率简单地执行性能。

看起来更有趣的是实际的指令性能本身。您可以使用性能工具进行监视,并在工作负载之间以更有意义的方式对指令和其他操作进行计数。

通常,如果您是热安全的,并且知道自己受CPU限制但爆裂了CPU,并且您并不关心电源,则可以使用性能调节器并使c状态保持启用状态。C状态节电明显高于p状态节电。无论如何,许多工作还得益于竞速以等待c状态。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.