Hyper-Threading technológia a Linuxban

Címkék

Mint tudjuk az Intel szerverekbe szánt új processzora - az Intel Xeon MP - több technológiai újítást is hoz(ott). Ezek közül az egyik Intel NetBurst mikroarchitektúra, a másik pedig a Hyper-Threading technológia. Az LKML-en (Linux Kernel Mailing List) többen is kérdezték, hogy mit jelent ez, hogy lehet ezt használni, mire jó, és hogy lehet megnézni, hogy egy processzor támogatja-e a Hyper-Threading technológiát? Hát lássuk.

Az első megjelenő Intel P4 processzorok nem támogatták az SMP-t, azaz a multi-processzorozhatóságot, vagyis nem tudtott két P4 processzor egymással együtt dolgozni egy alaplapban. Az új P4 (Xeon) processzorok már támogatják ezt a lehetőséget, így egyre több szerver-gyártó épít ezekre a processzorokra szervert. A Hyper-Threading technológia egy alapvetően új elgondolás az Intel részéről.

A Hyper-Threading technológia jelenleg már az Intel teljes Intel Xeon processzorcsaládjába beépítésre került. Ez a műszaki újdonság lehetővé teszi, hogy az operációs rendszer egyetlen fizikai processzort két logikai processzorként lásson, amelynek eredményeképpen lényegesen megnövelhető a szerver reakciókészsége, a tranzakciók sebessége és a hasznos munka teljesítménye.



Hogyan lehet ezt munkába fogni egy Linux rendszeren?Hogyan lehet ellenőrizni, hogy egy processzor rendelkezik-e a HT tulajdonságokkal?

Linux alatt kérjünk egy processzor információt:

#cat /proc/cpuinfo

processor : 0

vendor_id : GenuineIntel

cpu family : 15

model : 1

model name : Intel(R) Pentium(R) 4 CPU 1.70GHz

stepping : 2

cpu MHz : 1694.907

cache size : 256 KB

fdiv_bug : no

hlt_bug : no

f00f_bug : no

coma_bug : no

fpu : yes

fpu_exception : yes

cpuid level : 2

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

bogomips : 3381.65

Ha látjuk a flagek között a ht jelzést, akkor biztos, hogy a processzor HT technológiával rendelkezik.

Mit is kaphatunk a HT-től? Az operációs rendszer egy processzor helyett kettőt lát. Azaz, egy processzorra tudunk SMP kernelt fordítani. A HT technológia lehetővé teszi, hogy a többszálú alkalmazások a szálakat párhuzamosan hajthassák végre, azaz párhuzamosan futhassanak minden egyes processzoron. A HT-vel ellátott processzorok tartalmaznak egy ún. thread-level-parallelism (TLP) funkciót, és ez teszi lehetővé a párhuzamos végrehajtást. A mérések szerint a HT-képes processzorokon futó, ezt kihasználni tudó alkalmazások akát 40%-kal gyorsabbak is lehetnek így.

Hogyan is tudjuk ezt kihasználni a Linux rendszerünkben?

Egyszerűen. Tegyük fel, hogy van egy P4 Xeon processzorunk HT technológiával. Hogy a szimulációt bekapcsolhassuk, egy sima SMP támogatással rendelkező kernelt kell fordítanunk:

cd /usr/src/linux

make menuconfig

Processor type and features --->

[*] Symmetric multi-processing support

Ezen kívül kapcsoljuk még be az ACPI rendszer támogatást:

General setup --->

[*] ACPI support

Azt tudnunk kell, hogy a technológia kihasználásához a BIOS-nak támogatnia kell ezt a funkciót.

Mentsük el a kernel konfigurációt, majd szokásos módon fordítsük le a kernelt.

Rebootoljunk.

Ha a reboot után a rendszerünk két processzort mutat, akkor a processzorunk Hyper-Threading-képes.

Jelenleg tesztelés alatt van nálam egy szerver, amely 2 darab 1.8GHz-es Xeon processzorral rendelkezik (ez ugye 4 processzornak látszik majd). A processzorok HT-képesek, tervezek egy összehasonlító tesztet. Mondjuk sima kernellel, és mondjuk SMP kernellel. Kíváncsi vagyok, az eredményre.

Hozzászólások

Arpi! En ugy tudom csak Xeonnal mukodik, de megkerdezem az Intel embereit. A koncepcio az volt hogy a sima P4, amit a munkaallomasokba szannak ne tudjon multiproct. Addig probalj meg esetleg egy bios upgradet.

sunshine:/usr/src/linux# cat /proc/cpuinfo

processor : 0

vendor_id : GenuineIntel

cpu family : 15

model : 2

model name : Intel(R) Pentium(R) 4 CPU 2.53GHz

stepping : 4

cpu MHz : 2533.325

cache size : 512 KB

fdiv_bug : no

hlt_bug : no

f00f_bug : no

coma_bug : no

fpu : yes

fpu_exception : yes

cpuid level : 2

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

bogomips : 5059.37


Nekem ez van, ez nem xeon, megprobalom en is...

"két logikai processzorként lásson, amelynek eredményeképpen lényegesen megnövelhető a szerver válaszideje"

Micsoda klassz dolog :))

A teljesitmeny tesztek azert erdekelnenek, ha van valami kozzeteheto, kerlek osszd meg!

Koszi

Laci

Senki nem hiszi azt hogy egy négy processzoros rendszert kap két processzorból. Ha a cikket végigolvasod maximum 40% teljesítménynövekedést lehet vele elérni. És azt is csak akkor ha egy threadelt alkalmazásról van szó. Nyilván az egy szálon futó MPlayer nem lesz ettől gyorsabb. De egy erősen threadelt alkalmazás, mint mondjuk egy Oracle szerver _mérten_ gyorsabb lesz tőle. Itt szerver processzorról van szó.

Bár egyre több otthoni képben is felbukkanhat a több processzor, hiszen John Carmack elmondása szerint a DOOMIII támogatni fogja a több processzor funkciót. Ott is mérhető lesz szerintem ezzel javulás. Nyilván kisebb mintha a HT helyett betennénk egy másik processzort...