4

The CPU is a i7-3770@3.40GHz. It has 4 cores and each core has 2 threads. Here is the dmidecode output:

# 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

It will be 8 logic core in a system, like what shows in /proc/cpuinfo. But can any one tell why the cpu MHz of a core is 1600MHz? I guess there is 2 threads in a core, so a hw thread freq may be about the half of the core's? How this number is calculated?

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:

Also, here is the output of lshw and lscpu command. There are also 1600MHz mentioned.

lshw info:

#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 info:

#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
    The speed is obtained directly from the CPU and does apparently represent the thread processing speed, indicating that there is a small gap between that speed * 2 and the actual running speed of the core which is most likely used for managing the threads. I'm only posting this as a comment as I'm no CPU engineer but I checked a few machines I have and everything matches up to your case when there's more than a thread per core. – Julie Pelletier Jul 12 '16 at 2:53
  • @JuliePelletier: nope, it's just a coincidence that the lowest clock speed happens to be just under half of the max sustained (non-turbo) clock speed that the CPU advertizes itself as. Non-hyperthreading Intel CPUs clock down to a minimum of 1600MHz, too. – Peter Cordes Jul 13 '16 at 20:45
  • See also stackoverflow.com/questions/38299023/… for some further reading about power management. That Intel Skylake talk has some interesting stuff which should be comprehensible without a lot of background knowledge. (e.g. what determines the most efficient clock speed in terms of energy per computation, and why reducing speed further stops gaining efficiency.) – Peter Cordes Jul 13 '16 at 20:50
8

Modern cpu's can operate at several different frequencies changing dynamically under the load requirements (see wikipedia). Intel call this SpeedStep. When a cpu has little to do it will run at a lower frequency to reduce power (and therefore heat and fan noise).

So the 1600Mhz you see is probably because all the cpus are not doing much, but it can rise to some maximum like 3400 Mhz determined by cpu and motherboard architecture, and temperature.

I'm not sure where /proc/cpuinfo gets its single value from, but you can see individual cpu info in files /sys/devices/system/cpu/cpu*/cpufreq/, eg for the current frequency:

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

and read more about Linux cpu frequency scaling software in archlinux.

  • you are right! the freq in cpuinfo changed when i increase the load. – Chris Tsui Jul 13 '16 at 0:43
  • /proc/cpuinfo has a separate MHz entry for every logical core. grep MHz /proc/cpuinfo is one way to monitor the clock speeds of your cores. There is no "single value". – Peter Cordes Jul 13 '16 at 20:46
  • @PeterCordes thanks, I was confusing it with lscpu which seems to produce an average single value. lscpu -e doesnt give the current MHz per cpu either. – meuh Jul 13 '16 at 21:05
  • @PeterCordes thanks! Yes, different logic core has different dynamic frequency. – Chris Tsui Jul 15 '16 at 8:10

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.