Novice
arhiv
Članki
Testi
Forum
mali oglasi
teme zadnjih 24h
iskanje
Pravila
Povezave
Ostalo
Anketa
| Znam programirati: | | da | 43% |  (707) | | ne | 33% |  (542) | | morda | 21% |  (348) | | ne vem | 3% |  (56) | | Skupaj glasov: 1653 |
Predlagajte vprašanje za naslednjo anketo!
|
|
  Strežniki: Xeon vs. Opteron
Avtor: Jure Pečar Datum:15. 7. 2005 |
|
Danes so za vsakdanja opravila pisarniški računalniki že
tako zmogljivi, da se na njihove zmogljivosti oziramo veliko manj kot
na ceno in priloženo programsko opremo. Dobro vemo tudi, kaj
pričakujemo od igračarskih PCjev in kako to izmerimo: toliko
gigahercev, toliko FPSov v tej in tej igri, toliko in toliko megabajtov
rama na grafični kartici in to je to. Kako pa se tega lotimo pri
strežnikih? Pravzaprav se moramo vprašati, kaj sploh
pričakujemo od strežnika.
Medtem ko od igračarskega PCja pričakujemo čim hitrejše
izvajanje enega samega programa (glavna logika se izvaja kar iz
procesorjevega predpomnilnika, teksture se naložijo na grafično
kartico, ...), od strežnika ponavadi pričakujemo sposobnost poganjati
čim več programov hkrati, pri čemer morajo biti vsi vsaj toliko
odzivni, da jih uporabnik še lahko normalno uporablja. Ta
zahteva postavlja pred snovalce strežniških sistemov
popolnoma drugačne izzive kot nek igračarksi PC.
Glavni način, kako zagotoviti odzivnost več vzporedno izvajajočim se
programom je, da ponudimo vsakemu svoje procesorsko jedro, na katerem
se izvaja. Tako v svetu pc strežnikov najdemo dvo- in
štiriprocesorske sisteme, v svetu UNIX strežnikov pa gre ta
številka danes vse do 512 procesorjev v t.i. single-image
sistemu, kjer en operacijski sistem deluje hkrati z vsemi procesorji (SGI
Altix). Pa je tak sistem tudi
512-krat hitrejši od enoprocesorskega? Odgovor je sevda ne.
Pa si poglejmo, kaj je temu vzrok.
Če se na enem procesorju izvaja en sam program in če je ta program
relativno enostaven, se lahko v celoti izvaja iz procesorjevega
predpomnilnika. Težavi sta dve: na strežnikih ponavadi teče veliko več
programov kot ima strežnik procesorjev, poleg tega pa strežniki
ponavadi izvajajo relativno enostavne operacije nad ogromnimi
količinami podatkov, od katerih lahko le manjši del spravimo
v
sistemski pomnilnik, kaj šele v procesorjev predpomnilnik.
Zato operacijski sistem sproti prilagaja urnik izvajanja posameznega
programa na posameznem procesorju, vsakič pa, ko pride do zamenjave,
mora procesor znova naložiti nov program iz sistemskega pomnilnika v
svoj predpomnilnik, nato pa poiskati še vse aktulane kose
podatkov za obdelavo. Iz česar sledi, da mora strežniški
sistem imeti izredno dobro razvite t.i. I/O kanale, začenši
s povezavo diskov in sistemskega pomnilnika, zunanjih naprav (mreža,
...) in sistemskega pomnilnika ter seveda sistemskega pomnilnika in
procesorjev.
Deloma se ta problem v velikih sistemih rešuje s t.i. NUMA
arhitekturo (Non-Unified Memory Arhitecture). Njena značilnost je, da
je glavni pomnilnik ni več samo en in skupen vsem procesorjem, pač pa
ima vsak procesor svoj lokalni pomnilnik, hardver pa poskrbi za to, da
so vsi ti lokalni pomnilniki vidni kot en velik skupni pomnilnik.
Seveda se mora razvrščevalnik sistemskih sredstev operacijskega sistema zavedati te arhitekture in
posameznim procesorjem odrejati izvajanje le tistih programov, ki so
trenutno v njihovem lokalnem pomnilniku ("CPU affinity"). Ker pa to ni
vedno možno, mora
biti med procesorji oz. njihovimi lokalnimi pomnilniki zmogljivo
vodilo, ki zmore v čimkrajšem času prenesti velike
količine podatkov.
Vodila, ki jih poznamo kot navdušeni "šraufalci"
računalnikov, segajo od starejših ISA in EISA pa preko PCI
(ter širšega PCI-X) in AGP do danes aktualnega
PCI Express. Vendar so vsa ta vodila namenjena povezavi "zunanjih"
naprav, kako pa so povezani procesorji in pomnilnik, pa nas
proizvajalci kot končne uporabnike ne obremenjujejo, saj mora to
skrbeti "le" inžinerje, ki načrtujejo sisteme. Intelovo vodilo med
procesorji in north brgidgeom se recimo imenuje AGTL+ in o njem
skorajda ne slišimo.
| | Xeon | |
Pa si oglejmo, kako danes izgleda tipična dvoprocesorska x86
arhitektura:
Na tej shemi lahko takoj prepoznamo precej ozkih grl: procesorja si
delita vodilo do pomnilnika, relativno majhna je prepustnost vodila do
RAMa, north bridge in south bridge sta povezana ponavadi kar s PCI
vodilom, naprave, obešene na south bridge, si delijo isto
PCI vodilo. Tako je danes zasnovanih večina pentium II, III in 4 ter
athlon osnovnih plošč, na žalost pa take najdemo tudi med
cenejšimi xeon strežniki.
Xeon (oz. Pentium 4) arhitektura je znana po tem, da zaradi svojega
dolgega cevovoda potrebuje zelo hiter dostop do pomnilnika. Ta je
problematičen že z enim samim procesorjem, če pa na isto vodilo obesimo
dva (ali bog ne daj, štiri), je problem še toliko
bolj očiten. Zato FSB namesto "Front Side Bus" vedno pogosteje
predstavlja "Front Side Bottleneck".
Na današnjih ploščah vedno pogosteje srečamo tudi
gigabitni ethernet, ki je obešen kar na navaden 32bit 33MHz
PCI. Njegova največja teoretična prepustnost znaša 133MB/s,
tako da če nam uspe na mreži doseči prenos 1Gb/s (128MB/s), nam na PCI
vodilu ne
preostane prostora za ničesar drugega. Razen tega deljeno vodilo
pomeni, da v danem trenutku lahko s procesorjem komunicira natanko ena
naprava.
Strežniški PCji se od navadnih razlikujejo le malo:
Vidimo pomembne razlike, kot to, da je Intel north bridge poimenoval
Memory Controller Hub (MHC) in south bridge I/O Controller Hub (ICH)
ter nekaj hitrejše pomnilink in PCI vodila, ki jih je sedaj
lahko več. Gigabitni ethernet je prestavljen na
širše vodilo PCI-X, kamor spada, pravtako pa na
njem najdemo tudi SCSI kontroler, ki je podobno kot mreža na večini
strežniških plošč že integriran.
Taka arihtektura še vedno pomeni, da je dvoprocesorski
sistem le 60% hitrejši od enoprocesorskega,
štiriprocesorski pa le 10% od dvoprocesorskega! Zato rečemo,
da je skalabilnost PC arhitekture zelo slaba. Vendar še
vedno hočemo več, kar zahteva spremembo arhitekture:
Na shemi lepo vidimo, kaj točno pomeni kratica NUMA. Vsak procesor ima
svoj kos pomnilnika, s katerim komunicira s polno hitrostjo. Taka
arhitektura je veliko bolj skalabilna, saj poznamo strežnike s 16 in
celo 32 Xeon procesorji (Unisys
ES7000). Vendar še
vedno obstajajo težave: procesorji so povezani med seboj in z zunanjimi
napravami še vedno preko relativno počasnega FSBja, taka
arhitektura ni več standard(izira)na, kar pomeni precej večjo ceno tako
za razvoj kot vzdrževanje.
Zato strežniški svet potrebuje standardno, "off the shelf"
NUMA rešitev za relativno nizko ceno. Pa si poglejmo, kako
to rešuje Opteron s HyperTransportom.
| | Opteron | |
Korenine HyperTransporta segajo nazaj v devetdeseta leta v takrat eno
izmed najmočnejših podjetij, DEC, ki je razvilo procesorje
Alpha. Po tem, ko so pri svojih EV4 in EV5 dizajnih preizkusili
približno vse možne pristope k dizajnu chipseta, so z EV6 izdelkom
ustvarili nekaj, kar še danes uporabljamo na vseh Athlon
ploščah. Po seriji
napačnih poslovnih potez so DEC
razprodali, glavnina Alpha ekipe je ustanovila podjetje Alpha Processor
inc, ki se je kasneje preimenovalo v API Networks in ga je prevzel AMD.
Bogate izkušnje Alpha ljudi so koristno uporabili pri
snovanju univerzalnega vodila za povezovanje procesorjev in mostov, iz
katerega je nastal HyperTransport. Ta se je izkazal za tako
učinkovitega, da ga danes najdemo celo v nekaterih chipsetih Nvidie in
SiSa, namenjenih procesorju Xeon.
Vendar čudežno vodilo samo po sebi še ne reši
vseh problemov. Potrebuje vsaj še procesor, ki ga zna polno
izkoriščati. Seveda je AMD poskrbel tudi zanj. Tako imajo
danes vsi AMDjevi x86_64 (ali kakorkoli jih že hočete poimenovati)
procesorji najmanj dve HyperTransport povezavi, v
strežniških izdajah pa kar pet:
Značilnost Opteronov je tudi to, da pometejo s konceptom northbridgea
in ustrezno logiko vključijo kar na procesorsko rezino. Tako termin FSB
zgubi svoj pomen, če pa ga že najdemo uporabljenega, pa se
nanaša na
hitrost HyperTransporta. Ključ za skalabilnost Opteron 200/800
serije se skriva v dodatnih HyperTransport povezavah, s katerimi vsak
procesor dobi direktno povezavo do dveh sosednjih, svojega RAMa in
zunanjih I/O naprav. Primerjajmo to z mogoče bolj domačim sistemom,
mrežo: Intelov AGTL+ bi lahko primerjali z ethernet hubom, EV6 z
ethernet switchem, HyperTransport/NUMA pa izgleda kot direktne povezave
s kabli med elementi.
Kaj je razlog, da je vodilo do RAMa izvedeno mimo HyperTransporta?
Poleg lažje NUMA implementacije še dejstvo, da tako hitrost
pomnilnika ne vpliva na hitrost vodila, lahko deluje na različni
frekvenci in ne vpliva na hitrost delovanja procesorja. Pa
še ena cvetka: pri Xeon NUMA implementacijah, kjer
procesorji še vedno komunicirajo drug z drugim preko FSBja,
se v primeru, da mora en procesor dostopati do podatkov v pomnilniku
drugega, FSB zaklene, dokler se ta dostop ne konča in tako prepreči
izvajanje drugih medprocesorskih ali I/O komunikacij. Pri Opteronu s
HyperTransportom pa je vsak procesor oddaljen od kateregakoli drugega
največ en skok po ločeni povezavi, tako da do blokiranja celega sistema
pri izmenjavi podatkov med pomnilniki ne more priti. Tudi koherentnost
predpomnilnikov se izvaja po tej poti, pravtako pa je katerakoli
povezava med I/Ojem in posameznim procesorjem lokalna temu procesorju.
Tako se koncept CPU affinity razširi še na
izvajanje I/O operacij in najpomebnejše, na "memory mapped
I/O".
Na kaj moramo biti pozorni, ko se odločimo za nakup Opteron strežnika?
Ker je Intel v poslovnem svetu še vedno referenca ("nobody
got fired for buying Intel"), je AMD na žalost smatran kot
cenejša alternativa. Nekateri izdelovalci plošč
se za to še dodatno potrudijo in znižajo ceno svojim
izdelkom tako, da jim okrnijo funkcionalnost. Take plošče
prepoznamo po tem, da imajo kljub dvema procesorja le eno mesto za ram,
kar pomeni, da eden od procesorjev dostopa do pomnilnika preko drugega,
kar avtomatično pomeni slabše zmogljivosti. Ko torej
iščemo plošče za Opterone, izbirajmo med modeli,
ki ponujajo: vsak procesor ima svoj ram, plošča naj ponuja
več PCI-X vodil in vsako izmed njih naj bo preko bridgea
"obešeno" na svoj procesor. Kvalitetno ponudbo trenutno
najdemo recimo pri Sunu in HPju.
| | Viri |
Dissecting
PC server performance,
Great
microprocessors of the past and present,
Linux
Scalability Effort NUMA FAQ
|
|
Za vse na Slo-Techu objavljene prispevke odgovarjajo izključno njihovi avtorji Copyright by Slo-Tech Team Vse pravice pridržane! ISSN 1581-0186 Design (ampak res samo oblika) by Kodesign Alternativne barvne sheme by Exonium Production Do strani dostopate iz:
| Prijava | |
Zadnje novice
Napad na Border Gateway Protocol (27)
Izšel brezplačni VMware ESXi Hypervisor (17)
Izšel Django 1.0 (6)
Google izdal lasten brskalnik (305)
Začenja se nova sezona oddaje Resnična resničnost (28)

|