Quickbench: Linux és Solaris a Sun T2000-es gépén

Címkék

Egyesek szerint a Sun új csodaprocesszorán, az UltraSPARC T1-esen jobban teljesít az éppen csak portolt Linux, mint a natív Solaris. Ennek próbálok utánajárni quickbench sorozatunk első epizódjában.

You can also read this article in english.

Miért quickbench? Azért, mert nyomatékosítani szeretném, hogy ezeknek a teszteknek semmi közük a valósághoz, csupán gyors (szintetikus) benchmarkok, mindenféle előzetes tuningolás, és az eredmények részletes értékelése, azok tesztekbe való visszacsatolása nélkül.

Na de nézzük, mink is van: a nálunk járt Sun T2000-es 8 GB memóriát, két 72 GB-os 2,5"-es SAS diszket és egy darab 8 magos, 1 GHz-es UltraSPARC T1-es processzort tartalmazott.

Ez processzor a Sun új csúcsfegyvere, amely egy tokban nyolc CPU-t tartalmaz, amelyek összesen 32 thread futására tudnak hardverből "odafigyelni". A cég szerint az egyes magok órajelét nyugodtan felszorozhatjuk azok darabszámával, így szerintük ez a gép egy 8 GHz-esnek felel meg.

Aki mindezen felbuzdulva bevásárol ebből a gépből, jó ha tudja, hogy a fenti állítás nem igaz. Vagy legalábbis nem úgy. A lényeg, hogy a gép ereje a felépítésénél fogva csak azoknál az alkalmazásoknál jön elő, amelyek több szálon képesek futni és ezeknek a szálaknak (és így processzormagoknak) munkát is tudnak adni.
Sajnos rengeteg olyan alkalmazás van, amely erre képtelen, így senki ne csodálkozzon, mikor a csillogó, 9,6 GHz-es (esetünkben 8) gép elé leülve úgy érzi magát, mint a jó öreg PIII 450-esen.

Nézzük a szoftverkörnyezetet: a gépen mérkőző operációs rendszerek közül az egyik a világ legfejlettebb Unixa, a Solaris 10-es. Sajnos a Nevadát (leendő 11-es) nem volt időm kipróbálni, pedig rengeteg teljesítményjavító intézkedés történt benne.
A másik operációs rendszer a mostanában SPARC-on némileg hanyagolt bugware, név szerint a Linux.
Ez utóbbi csak nemrég képes futni ezen a platformon, de szerencsére az ubuntus csapat és Dave Miller kemény munkájának köszönhetően a Dapper Drake már hiba nélkül telepíthető és használható rajta. Köszönet nekik (és a Sunnak) ezért.
Az Ubuntu alapból egy erősen patchelt 2.6.15-ös kernellel érkezik, amelyből a stock verzió még futásképtelen a gépen. A leendő 2.6.17-es viszont már a kernel.org-os verzióban is használható.

Egy érdekesség adódott a Linuxszal, mégpedig az, hogy a 32 (virtuális) processzor helyett csak 24-et "látott". Tekintettel arra, hogy csak egy délutánom volt a tesztre, efölött erősen elítélhető módon elsiklottam.

A gépen ki szerettem volna próbálni a FreeBSD-t is, amely szintén gőzerővel készül erre a multicore-os szörnyetegre, de sajnos a fejlesztő szerint még alapvető problémák vannak a használhatósággal (nem lehet 16 MB-nál több memóriát igénylő programokat futtatni), így azt legnagyobb bánatomra mellőznöm kellett.

Csapjunk bele a lecsóba.

Az első teszt a sysbench nevű mindentudó benchmark program memóriatesztje volt. Ebben a tesztben eltérő blokkméretekkel végeztem tesztet.
Az első mérés a gyári 2.6.15-ös Linux kernellel történt:

Látható, hogy annak ellenére, hogy csak 24 processzort látott a kernel, a memóriasávszélesség 32 threadig nőtt, elérve a maximumot.

A következő teszt a 2.6.17-es (kernel.org-os) kernellel készült:

Nagy különbség nem látszik. Ezt követően megnéztem, hogy mit tud a gép Solarisszal:

Látható, hogy itt az 1kB-os blokkméretnél elfogyott valahol a szufla, így a két operációs rendszer összehasonlításához a 2k-s blokkméretet vettem alapul, mivel az a Linuxnál és a Solarisnál is párhuzamos a többivel és jobban szemügyre vehető a görbe eleje:

A görbe több szempontból is érdekes. Egyrészt az látszik, hogy a 2.6.17-es kernel néhol elég jelentősen eltér a 2.6.15-östől. Nem véletlen tehát, hogy többen is sportot űznek abból, hogy az egyes kernelverziók közötti sebességkülönbségeket figyeljék.
Másrészt elég egyértelműen látható, hogy aki sysbench-csel méri az e-pénisze méretét, az jobban jár, ha Solarison futtatja. A görbe csúcspontján, 32 szálnál kétszeres különbség jelentkezik, ami jelenthetné azt is, hogy a Solarist már rendesen optimalizálták erre a platformra, a Linuxot pedig még nem, azonban ugyanez az eltérés fennáll az operációs rendszer x86-os változatánál is. Aki kíváncsi a részletes magyarázatra, olvassa el a forráskódot.

A következő teszt ugyancsak a sysbench igénybevételével a MySQL adatbázisszerverrel történt. Elkerülendő, hogy a sysbench teljesítményét mérjem a MySQL-é helyett, ebben az esetben egy második gépet is igénybe vettem, amely egy közvetlen gigabites kanóccal volt a T2000-es fenekébe dugva. A tesztek így hálózaton keresztül történtek, a sysbenchet futtató gép minden esetben egy 32 bites Linux (Ubuntu) volt. A kliens gép két darab 2,6 GHz-es Opteronnal rendelkező szerver volt, amely így nem okozott szűk keresztmetszetet a sysbenchnél.

Első tesztünk azt hivatott eldönteni, hogy a MySQL 4.1-es verziója 32, vagy 64 bitesen gyorsabb-e Solaris 10-esen:

Azt hiszem a kérdés eldőlt. Sajnos az idő rövidsége és az Ubuntu kreténsége (vagy inkább az én hülyeségem) miatt Linuxon nem volt módom kipróbálni ugyanezt, így ott minden esetben 32 bites módban futott a MySQL.

Következő tesztünk kicsit összetettebb, SELECT teljesítményt mér egy 1 milliós HEAP táblán, azaz a tesztben nem szerepel semmiféle diszk IO.
Íme az ábra:

A teszt több kérdésre is megpróbál választ adni. Egyrészt szerepel benne Linux esetén egy MySQL 4.1 és 5.0 összehasonlítás, Solarisnál pedig ez kiegészül a beta verziós 5.1-gyel. Ezenfelül kíváncsi voltam a két kernel teljesítményére is.
A konfiguráció mindkét esetben megegyezett.

A görbéken túl sok mindent nem kell magyarázni. A Solaris vitte a pálmát ebben a tesztben a Linuxszal szemben, amely talán nem is olyan meglepő, figyelembe véve, hogy a Linux valószínűleg még kevésbé optimalizált a T1-esen, mint a Solaris. Utóbbi 512 kliens threadnél kb. négyszeresen rávert a Linuxra a MySQL 4.1-et futtatva.
Érdekes még megfigyelni, hogy a 4.1-5.0-5.1 vonalon a MySQL milyen szépen lassul, amely különösen feltűnő akkor, mikor sok kliens kérdez a szervertől.

Konklúzió: a Sun T1-es processzora haldoklik (szakáll kinő, haj kihull), mikor nem megfelelően párhuzamosítható munkát adunk neki és szárnyal, mikor legalább 32 szálon használjuk. A Sun a processzort elsődlegesen olyan helyekre ajánlja, ahol ez a párhuzamosság előállítható (webszerverek, adatbázisszerverek), amely ajánlást valóban érdemes megfogadni.
Hátránya az architektúrának (sok, lassú core), hogy az ellenfelekkel szemben (pld. két magos Opteron és Xeon) itt nem tudunk nagy teljesítményt kivenni a gépből, ha csak kevés szálon terheljük. Egy két magos Opteronnál néha már akár két, vagy négy szálon (de 8-nál már nagy biztonsággal) elérhető a maximális teljesítmény és a legrövidebb válaszidő, azonban ugyanehhez a T1-nél 32 aktív szál szükséges, amely nem biztos, hogy mindenhol megfelelő. Egy gyengén, vagy közepesen terhelt szervernél hiába fut 4-8 szálon a kiszolgálás, a gép csak a teljesítménye felét képes leadni, a válaszidők ezáltal lassabbak lesznek mint egy ennek megfelelő teljesítményű Opteron, vagy Xeon processzoron.

Példaként említhetném a HUP adatbázisát, ahol nagyon ritka, hogy kettőnél több query fusson egy időben. Ahhoz tehát, hogy ez a gép jó befektetés legyen, ennél jóval nagyobb terhelést kell neki biztosítani.

Hozzászólások

"A Solaris vitte a pálmát ebben a tesztben a Linuxszal szemben, amely talán nem is olyan meglepő, figyelembe véve, hogy a Linux valószínűleg még kevésbé optimalizált a T1-esen, mint a Solaris."

Valószínűleg, mivel szerintem onnantól kezdve, hogy szilíciumba öntötték a T1-et, a Solaris-t reszelték hozzá. Miller meg jó esetben 2 hónapja reszeli a Linuxot hozzá :-)

--
trey @ gépház

Biztosan rosszul csináltad, mint ahogy Robert a poundot. :)
lehet, megjegyzem ott is default volt minden, ami lehetett.
(FreeBSD-nél kellett új kernel, de az SMP-s HINT-el forgattam,
(tudom, h nem ez a neve, de így mindenki érti), illetve
az OpenSSL-t kellett thread-del forgatni. Linuxon minden
Debian volt, még az SMP-s kernel is).

Elég sokat elmond, hogy sokaknak van/volt vele teljesítményproblémájuk
De nekem akkor épp ez kellett :)

a.

Javítsatok ki légyszi ha rosszul értelmeztem valamit de: ez egy olyan gép, amelyik kb. 3 millkába kerül (lehet persze adni kétszer ennyit is az 1.2 -ért) és ha nem húzzák ki csontra, akkor nem hogy csak felesleges pénzkidobás volt, de sokkal szarabbul is teljesít mint egy másmilyen vas? Ez számomra egy kicsit furcsa (és még nagyon finoman fogalmaztam).
Marketingnek persze jo, de egyebkent...
Másrészt ki a fene akarna egy ilyenre Linuxot feltenni - hacsak nem perverzióból - ha egyszer megvette Solaris 10-zel? Ez kb. olyan mint a szintetikus benchmark, elméletben lehet róla beszélni, de hogy van-e valami valós értelme az kérdéses...

A Sun egy másik megközelítést választott a T1-gyel, mint a többiek. Ebből következik, hogy a T1 valóban elég gyengén teljesít, ha nem tudsz megfelelő párhuzamosítást elérni.
Egy kollegám Oracle tesztet csinált a gépen és először nem is értette, hogy miért mászik befelé olyan lassan az adat (ami egy modern Opteronon 30 perc, itt több, mint három óráig futott).

Érdemes ezt is megnézni a témában:
http://people.fsn.hu/~bra/papers/Sun/architecture/finance_2006_03.pdf

Szóval ésszel kell vásárolni, aki ilyet vesz, ne a Sun marketingeseire, hanem a hozzáértőkre támaszkodjon, nézze meg, hogy nála kihasználható-e a gép, van-e értelme megvenni.

Arról a T1000-es szerverről beszélünk, amelyben összesen egy darab - ismétlem 1 darab - 80 GB-os SATA merevlemez van, és nem is tehető bele több? :-DDDD

Jó kis biznisz. A HP DL 380/385-be 6 darab merevlemez és 2 processzor tehető ennyiért (na jó egy egész picivel többért, diszkek nélkül, 1 CPU-val).

Bocs, de ez egy elég elfuserált valami. Ha az 1 unit szerverek témában maradunk... a HP DL145-be (Opterongy processzor) is két diszk tehető minimum... A HUP jelenlegi 100 éves 1 unit magas szerverébe 3 darab...

Egyszerűen nem tudom, hogy mire tudnám használni egy lemezzel.

--
trey @ gépház

A T2000-be pedig 4 darab 73 GB-s SAS diszk, és az sem sokkal drágább.

Egyébként web és alkalmazás szervernek van kiajánlva, annak meg még ez a hely is sok. Adatbázist pakold máshova, ha teljesítmény kell akkor valami SAN-os dobozba. :)

Egyébként azzal nem akarok, és nem is tudok vitatkozni, hogy drága. A Sun szerverek általában drágábbak, mint a hasonló teljesítményű társai a piacon.

Hat jah, egy max. load balancer mögé tudnám elképzelni webszervernek, úgy h csak a webszerver fut rajta. Minimum 2-t (vagy többet), mert ha az egyik megdöglik, addig a másik (vagy a többi) át tudja venni a feladatot, és addig a rosszban lehet diszket cserélni, telepíteni. Erre viszont véleményem szerint drága, és ahogy a benchmark is mutatja, nem biztos, hogy a legjobb választás.

--
trey @ gépház

Pontosan így van.
Viszont léteznek olyan szolgáltatók, akiknél több száz ügyfél lóg online, a webszerveren, vagy appszerveren, és jelenleg több tucat load balance clusterbe kötött gép szolgálja ki őket.
Itt esetleg érdekes alternatíva lehet, mert pl. 16 load balanceolt Opteron/Xeon helyett elég lenne 5-6 T2000.

Nyilván a HUP-os MySQL szervert nem fogod egy IBM P590-esre rakni, de azért van olyan cég, ahol két ilyen is ketyeg clusterbe kötve....

Köszi bra!

Nem akarja vki /.-ra kitenni? Had dolgozzon meg utolsó napjain a hup vas. :-D

Ez igen jó kis teszt, köszi érte...
Egy kis komment:

"Első tesztünk azt hivatott eldönteni, hogy a MySQL 4.1-es verziója 32, vagy 64 bitesen gyorsabb-e "

Azt hiszem az hogy 64, vagy 32bit, nem igazán játszik sebesség tekintetében.... Szimplán csak nagyobb memóriát képes címezni a 64 bites oprendszer.... vagy én vagyok aki téved?

"Compared to 32-bit MySQL, 64-bit MySQL can address more memory for the data cache, code cache, and metadata caches inside MySQL to reduce disk I/O."

Azaz, pont úgy gyorsít, hogy több memóriát képes használni.
Szóval 4Gb ram alatt tökmindegy, hogy 64, vagy 32 bites a cucc.

Egyébként ami még ennek a processzornak az előnye, az a baromi alacsony fogyasztás. Ezt a tényt sokan hajlandóak egy vállrándítással elintézni, viszont rengeteget számít.

Ismét csak a nemsokára következő Opteron/Xeon összehasonlításra tudok utalni. És a válaszom itt is: nem nyert.

A T2000 nem gyorsabb és nem fogyaszt kevesebbet egy azonos kategóriájú Opteronnál/Xeonnál (LV), cserébe nehezebben tudod kihasználni, mivel kevés szálon lassú. Legalábbis ezt tudom mondani a MySQL tesztek alapján.

Mielőtt bölcs szakértő módjára leírnánk ezt a vasat, azért érdemes 1-2 dolgot szem előtt tartani.
1. Ez a teszt csak egy alkalmazást (MySql) vizsgált.
2. Alap install volt, semmi tuning sehol. Ez azért normál üzemben nem így van.

Érdemes néhány más tesztet is megnézni. Nem olyanokat amiket a Sun csinált, hanem amiket b(r)arátunkhoz hasonló emberkék.
pl.:
http://www.stdlib.net/~colmmacc/2006/03/23/niagara-vs-ftpheanetie-showd…

Így van. Illetve annyira mégsem, mert a Sun által ajánlott (fenti linken) dolgokat elolvastam és felhasználtam, tehát valami minimális tuning volt benne.

Én egy következtetést vontam le, ami már azelőtt is nyilvánvaló volt: dolgoztatni kell a gépet, hogy teljesíteni tudjon. És ez nem mindenhol egyszerű és van ahol lehetetlen.

Nem is veled vitatkozom, csak azokkal a dilettánsokkal, akiknek egy darab, minimális teszt (nem a munkádat akarom leszólni, számomra igen tanulságos volt így is, köszi érte) hatására az a véleménye "hogy ennek a gépnek (procinak, gépcsaládnak) nem sok (majdnem semmi) értelme".

Az az alap, hogy egy gépet jól meg kell dolgoztatni.
Mi a fenének venne valaki olyan vasat, amit max 40%-ra terhel ki? Akkor vegyen egy fele akkorát, jóval olcsóbban.
Azzal a legtöbb független tesztelő egyetért, hogy a T2000-et web és alkalmazás szerverként érdemes használni, és akkor is, ha rendesen ki tudod terhelni. Még ilyen esetben is az a szitu, hogy egy kapcsolatnak viszonylag nagy a látenciája (vagyis tovább tart), viszont jóval több párhuzamos kérést tud kiszolgálni, mint bármi más ebben a kategóriában.
De mint Te is írtad, ezek teljesen nyilvánvaló dolgok.

Azok a dilettansok en vagyok :) Az igaz, hogy egyetlen teszt alapjan nem szabad messzemeno kovetkezteteseket levonni, en pedig beleestem ebbe a hibaba. Akkor inkabb ugy fogalmaznek, hogy egy ilyen viselkedes eseten szvsz eleg nehez "beloni", hogy a kiszolgalo mindig a megfelelo terheles alatt legyen.
Az x86 vicc volt es nem kivanom, hogy igaz legyen. Igy is kezd kisse egyoldaluva valni a vilag.