超线程CPU的/proc/cpuinfo中的“cpu MHz”字段是什么意思?

超线程CPU的/proc/cpuinfo中的“cpu MHz”字段是什么意思?

CPU 是一个[电子邮件受保护]。它有4个核心,每个核心有2个线程。这是dmidecode输出:

# dmidecode -t 4
# dmidecode 2.9
SMBIOS 2.7 present.

Handle 0x0042, DMI type 4, 42 bytes
Processor Information
    Socket Designation: SOCKET 0
    Type: Central Processor
    Family: <OUT OF SPEC>
    Manufacturer: Intel(R) Corporation
    ID: A9 06 03 00 FF FB EB BF
    Version: Intel(R) Core(TM) i7-3770 CPU @ 3.40GHz
    Voltage: 1.1 V
    External Clock: 100 MHz
    Max Speed: 3800 MHz
    Current Speed: 3400 MHz
    Status: Populated, Enabled
    Upgrade: <OUT OF SPEC>
    L1 Cache Handle: 0x003F
    L2 Cache Handle: 0x003E
    L3 Cache Handle: 0x0040
    Serial Number: Not Specified
    Asset Tag: Fill By OEM
    Part Number: Fill By OEM
    Core Count: 4
    Core Enabled: 4
    Thread Count: 8
    Characteristics:
        64-bit capable

系统中将有 8 个逻辑核心,如图所示/proc/cpuinfo。但谁能说出为什么cpu MHz核心频率是1600MHz呢?我猜一个核心中有 2 个线程,所以硬件线程频率可能约为核心的一半?这个数字是如何计算的?

processor   : 7
vendor_id   : GenuineIntel
cpu family  : 6
model       : 58
model name  : Intel(R) Core(TM) i7-3770 CPU @ 3.40GHz
stepping    : 9
cpu MHz     : 1600.000
cache size  : 8192 KB
physical id : 0
siblings    : 8
core id     : 3
cpu cores   : 4
apicid      : 7
initial apicid  : 7
fpu     : yes
fpu_exception   : yes
cpuid level : 13
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 syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts rep_good xtopology nonstop_tsc aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm sse4_1 sse4_2 x2apic popcnt aes xsave avx lahf_lm ida arat tpr_shadow vnmi flexpriority ept vpid
bogomips    : 7013.49
clflush size    : 64
cache_alignment : 64
address sizes   : 36 bits physical, 48 bits virtual
power management:

lshw另外,这是andlscpu命令的输出。还有提到1600MHz。

lshw信息:

#lshw -class processor
  *-cpu                   
       description: CPU
       product: Intel(R) Core(TM) i7-3770 CPU @ 3.40GHz
       vendor: Intel Corp.
       physical id: 42
       bus info: cpu@0
       version: Intel(R) Core(TM) i7-3770 CPU @ 3.40GHz
       slot: SOCKET 0
       size: 1600MHz
       capacity: 3800MHz
       width: 64 bits
       clock: 100MHz
       capabilities: fpu fpu_exception wp 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 syscall nx rdtscp x86-64 constant_tsc arch_perfmon pebs bts rep_good xtopology nonstop_tsc aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm sse4_1 sse4_2 x2apic popcnt aes xsave avx lahf_lm ida arat tpr_shadow vnmi flexpriority ept vpid cpufreq

lscpu信息:

#lscpu
Architecture:          x86_64
CPU op-mode(s):        32-bit, 64-bit
CPU(s):                8
Thread(s) per core:    2
Core(s) per socket:    4
CPU socket(s):         1
NUMA node(s):          1
Vendor ID:             GenuineIntel
CPU family:            6
Model:                 58
Stepping:              9
CPU MHz:               1600.000
Virtualization:        VT-x
L1d cache:             32K
L1i cache:             32K
L2 cache:              256K
L3 cache:              8192K

答案1

现代 cpu 可以在几种不同的频率下运行,这些频率根据负载要求动态变化(参见维基百科)。英特尔称之为速度步。当CPU无事可做时,它会以较低的频率运行以降低功耗(从而降低热量和风扇噪音)。

所以你看到的 1600Mhz 可能是因为所有的 cpu 都没有做太多事情,但它可以上升到一些最大值,比如 3400 Mhz,由 cpu 和主板架构以及温度决定。

我不确定/proc/cpuinfo从哪里获取它的单个值,但您可以在 files 中看到各个 cpu 信息/sys/devices/system/cpu/cpu*/cpufreq/,例如当前频率:

cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_cur_freq

并阅读有关 Linux cpu 频率缩放软件的更多信息架构Linux

相关内容