[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: hdparm -t yields incorrect timings when Intel hyperthreading is enabled



I've attached the contents of /proc/cpuinfo below, two copies, one with hyperthreading disabled and one enabled.

I've also investigated things a bit further and now I'm thinking that the hyperthreading state affects the system as a whole, not just hdparm.

First, I've attached hdparm output from the same machine booting to Windows 7. The reported disk speed is not affected by the hyperthreading state. I've also attached boot speed measurements for the two states. Windows 7 boot time with hyperthreading enabled is 2/3 that when disabled. This would be expected if hyperthreading is actually worth anything.

Second, it turns out that the boot speed of linux is either unaffected by the state of hyperthreading, 3.2 kernel, or adversely affected by enabling hyperthreading, 3.12 kernel. I've attached lines from dmesg below showing the times at which the eth0 link becomes ready under various scenarios. Boot times with hyperthreading enabled also seem more variable. I've seen even longer reported boot times on the 3.12 kernel and with a 3.12.9 kernel I've built myself; in the 20 - 30 second range.

I'm thinking that the hdparm scenario is a good canary for a more fundamental problem with hyperthreading, at least on my dn2800mt machine. Perhaps the backports 3.12 kernel hasn't been fully vetted yet, but the stable 3.2 kernel should be showing some improvement in boot speeds with hyperthreading enabled over that with hyperthreading disabled, but isn't. Lastly, hdparm is adversely affected by hyperthreading no matter what kernel version is loaded.

C:\>hdparm -t /dev/hda # Windows 7

/dev/hda: # Hyperthreading disabled
 Timing buffered disk reads:  446 MB in  3.01 seconds = 148.13 MB/sec
Boot Duration        :    31248ms

/dev/hda: # Hyperthreading enabled
 Timing buffered disk reads:  448 MB in  3.01 seconds = 148.80 MB/sec
 Boot Duration        :    21692ms

# Boot times, hyperthreading enabled

Linux version 3.2.0-4-686-pae (debian-kernel@lists.debian.org) (gcc version 4.6.3 (Debian 4.6.3-14) ) #1 SMP Debian 3.2.54-2
[   14.240113] ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready

Linux version 3.12-0.bpo.1-686-pae (debian-kernel@lists.debian.org) (gcc version 4.6.3 (Debian 4.6.3-14) ) #1 SMP Debian 3.12.9-1~bpo70+1 (2014-02-07)
[   15.825840] IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready

# Boot times, hyperthreading disabled

Linux version 3.2.0-4-686-pae (debian-kernel@lists.debian.org) (gcc version 4.6.3 (Debian 4.6.3-14) ) #1 SMP Debian 3.2.54-2
[   14.049342] ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready

Linux version 3.12-0.bpo.1-686-pae (debian-kernel@lists.debian.org) (gcc version 4.6.3 (Debian 4.6.3-14) ) #1 SMP Debian 3.12.9-1~bpo70+1 (2014-02-07)
[   12.556885] IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready

cat /proc/cpuinfo # hyperthreading disabled

processor    : 0
vendor_id    : GenuineIntel
cpu family    : 6
model        : 54
model name    : Intel(R) Atom(TM) CPU N2800   @ 1.86GHz
stepping    : 1
microcode    : 0x10d
cpu MHz        : 798.000
cache size    : 512 KB
physical id    : 0
siblings    : 2
core id        : 0
cpu cores    : 2
apicid        : 0
initial apicid    : 0
fdiv_bug    : no
f00f_bug    : no
coma_bug    : no
fpu        : yes
fpu_exception    : yes
cpuid level    : 10
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 lm constant_tsc arch_perfmon pebs bts nonstop_tsc aperfmperf pni dtes64 monitor ds_cpl est tm2 ssse3 cx16 xtpr pdcm movbe lahf_lm arat dtherm
bogomips    : 3733.46
clflush size    : 64
cache_alignment    : 64
address sizes    : 36 bits physical, 48 bits virtual
power management:

processor    : 1
vendor_id    : GenuineIntel
cpu family    : 6
model        : 54
model name    : Intel(R) Atom(TM) CPU N2800   @ 1.86GHz
stepping    : 1
microcode    : 0x10d
cpu MHz        : 798.000
cache size    : 512 KB
physical id    : 0
siblings    : 2
core id        : 1
cpu cores    : 2
apicid        : 2
initial apicid    : 2
fdiv_bug    : no
f00f_bug    : no
coma_bug    : no
fpu        : yes
fpu_exception    : yes
cpuid level    : 10
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 lm constant_tsc arch_perfmon pebs bts nonstop_tsc aperfmperf pni dtes64 monitor ds_cpl est tm2 ssse3 cx16 xtpr pdcm movbe lahf_lm arat dtherm
bogomips    : 3733.46
clflush size    : 64
cache_alignment    : 64
address sizes    : 36 bits physical, 48 bits virtual
power management:

cat /proc/cpuinfo # hyperthreading enabled

processor    : 0
vendor_id    : GenuineIntel
cpu family    : 6
model        : 54
model name    : Intel(R) Atom(TM) CPU N2800   @ 1.86GHz
stepping    : 1
microcode    : 0x10d
cpu MHz        : 798.000
cache size    : 512 KB
physical id    : 0
siblings    : 4
core id        : 0
cpu cores    : 2
apicid        : 0
initial apicid    : 0
fdiv_bug    : no
f00f_bug    : no
coma_bug    : no
fpu        : yes
fpu_exception    : yes
cpuid level    : 10
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 lm constant_tsc arch_perfmon pebs bts nonstop_tsc aperfmperf pni dtes64 monitor ds_cpl est tm2 ssse3 cx16 xtpr pdcm movbe lahf_lm arat dtherm
bogomips    : 3733.42
clflush size    : 64
cache_alignment    : 64
address sizes    : 36 bits physical, 48 bits virtual
power management:

processor    : 1
vendor_id    : GenuineIntel
cpu family    : 6
model        : 54
model name    : Intel(R) Atom(TM) CPU N2800   @ 1.86GHz
stepping    : 1
microcode    : 0x10d
cpu MHz        : 1064.000
cache size    : 512 KB
physical id    : 0
siblings    : 4
core id        : 0
cpu cores    : 2
apicid        : 1
initial apicid    : 1
fdiv_bug    : no
f00f_bug    : no
coma_bug    : no
fpu        : yes
fpu_exception    : yes
cpuid level    : 10
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 lm constant_tsc arch_perfmon pebs bts nonstop_tsc aperfmperf pni dtes64 monitor ds_cpl est tm2 ssse3 cx16 xtpr pdcm movbe lahf_lm arat dtherm
bogomips    : 3733.42
clflush size    : 64
cache_alignment    : 64
address sizes    : 36 bits physical, 48 bits virtual
power management:

processor    : 2
vendor_id    : GenuineIntel
cpu family    : 6
model        : 54
model name    : Intel(R) Atom(TM) CPU N2800   @ 1.86GHz
stepping    : 1
microcode    : 0x10d
cpu MHz        : 798.000
cache size    : 512 KB
physical id    : 0
siblings    : 4
core id        : 1
cpu cores    : 2
apicid        : 2
initial apicid    : 2
fdiv_bug    : no
f00f_bug    : no
coma_bug    : no
fpu        : yes
fpu_exception    : yes
cpuid level    : 10
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 lm constant_tsc arch_perfmon pebs bts nonstop_tsc aperfmperf pni dtes64 monitor ds_cpl est tm2 ssse3 cx16 xtpr pdcm movbe lahf_lm arat dtherm
bogomips    : 3733.42
clflush size    : 64
cache_alignment    : 64
address sizes    : 36 bits physical, 48 bits virtual
power management:

processor    : 3
vendor_id    : GenuineIntel
cpu family    : 6
model        : 54
model name    : Intel(R) Atom(TM) CPU N2800   @ 1.86GHz
stepping    : 1
microcode    : 0x10d
cpu MHz        : 798.000
cache size    : 512 KB
physical id    : 0
siblings    : 4
core id        : 1
cpu cores    : 2
apicid        : 3
initial apicid    : 3
fdiv_bug    : no
f00f_bug    : no
coma_bug    : no
fpu        : yes
fpu_exception    : yes
cpuid level    : 10
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 lm constant_tsc arch_perfmon pebs bts nonstop_tsc aperfmperf pni dtes64 monitor ds_cpl est tm2 ssse3 cx16 xtpr pdcm movbe lahf_lm arat dtherm
bogomips    : 3733.42
clflush size    : 64
cache_alignment    : 64
address sizes    : 36 bits physical, 48 bits virtual
power management:


On 5/4/2014 5:12 PM, Henrique de Moraes Holschuh wrote:
On Sun, 04 May 2014, Paul Ausbeck wrote:
when I build a new system. Recently I built a system based upon the
Intel Atom dn2800mt motherboard. When I went to vet disk bandwidth,
Please, can you give us the output of "cat /proc/cpuinfo" ?

I obtained unexpectedly slow readings from hdparm. I found that if I
disable hyperthreading in the bios, bandwidth readings are as
expected. I believe the numbers reported by hdparm are incorrect
Did you update to the latest available BIOS for your motherboard ?



Reply to: