zfs performance
Nemreg eszembe jutott - es masok is kerdezgettek -, hogy meg kene merni milyen gyors a zfs.
Hat tul nagy gyakorlatom nincs a temaban, de azert lassuk, hatha le lehet vonni valami kovetkeztetest.
Elso korben nezzuk mit tesztelek (illetve mi van keznel):
- TS1: sima disc, egyedul, UFS filerendszerrel
- TS2: sima disc, egyedul, ZFS filerendszerrel
- TS3: sol10 software raid0+1, 12 disc, UFS filerendszerrel (utalom, raid0+1-et sehova!, de 1+0-t meg nem tud ez a szerencsetlen)
- TS4: hw raid5, UFS filerendszerrel
- TS5: hw raid5, ZFS filerendszerrel
- TS6: zfs mirror, 2 disc
- TS7: zfs raidz1, 12 disc
TS3, TS5 es TS7 aktivan hasznalatban vannak a teszt alatta is, de eleg pici a terhelesuk, TS4-nek kicsit nagyobb, de ot probalom a legnyugalmasabb pillanatokban tesztelni.
Hardware:
TS1, TS2, TS6: Sun-Fire-V440, 2x1600Mhz US-IIIi, 8Gb RAM
TS3, TS7: Sun-Fire-480R, 4x1200Mhz US-III+, 8Gb RAM
TS4: Sun-Fire-880, 8x900Mhz US-III+, 16Gb RAM
TS5: Sun-Fire-V240, 2x1300Mhz US-IIIi, 8Gb RAM
Kicsit sem igazsagos, dehat az van.
OS: Solaris 10 update 4, kulonbozo mertekben felpatchelve.
A gepek processzorai nemigen vannak leterhelve, 0.1-es load korul/alatt vannak.
Azt is vegyunk figyelembe, hogy a hardware-es raid eszkozokben talalhato tetemes mennyisegu cache miatt igencsak csalos eredmenyt mutathatnak. Sot, a zfs is csal ilyen szempontbol.
A lenti eredmenyket az atlathatosag - es a lustak - kedveert osszefoglaltam itt egy tablazatban:
| teszt / gep | TS1 | TS2 | TS3 | TS4 | TS5 | TS6 | TS7 |
|---|---|---|---|---|---|---|---|
| mkfile | 20.1 | 10.517 | 17.521 | 18.532 | 5.724 | 10.794 | 9.897 |
| nagyfile /tmp-bol | 18.18 | 1.916 | 21.529 | 20.601 | 10.257 | 5.625 | 2.86 |
| nagyfile /tmp-be | 5.062 | 6.002 | 3.115 | 7.505 | 7.198 | 4.141 | 7.179 |
| nagyfile copy | 18.916 | 7.421 | 16.715 | 22.248 | 4.090 | 5.39 | 5.585 |
| kisfile-ok /tmp-bol | 34.166 | 14.845 | 33.46 | 35.447 | 7.27 | 13.444 | 8.606 |
| kisfile-ok /tmp-be | 21.607 | 8.571 | 29.703 | 15.367 | 9.486 | 12.329 | 11.848 |
| kisfile-ok copy | 104.702 | 12.788 | 92.261 | 66.717 | 15.021 | 11.418 | 12.35 |
| kisfile-ok del | 30.1 | 0.943 | 29.660 | 5.247 | 1.094 | 1.156 | 1.447 |
A szamok masodpercben ertendoek, a kisebb ertek a jobb.
Hogy melyik teszt mit takar, az lentebb olvashato.
A tesztek
A teszteket (ha nem nagyon idoigenyesek) haromszor hajtottam vegre, es a kozepso ertekeket irom ki ide.
Teszt 1. - mkfile
Elso lepesben lassuk, mennyi ido alatt tudnak a gepek megcsinalni egy nagy, ures filet:
# time mkfile 1g cica.bin
TS1:
real 0m20.100s user 0m0.109s sys 0m3.935s
TS2:
real 0m10.517s user 0m0.114s sys 0m7.437s
TS3:
real 0m17.521s user 0m0.212s sys 0m12.951s
TS4:
real 0m18.532s user 0m0.199s sys 0m7.289s
TS5:
real 0m5.724s user 0m0.128s sys 0m5.232s
TS6:
real 0m10.794s user 0m0.116s sys 0m7.441s
TS7:
real 0m9.897s user 0m0.148s sys 0m6.519s
Ez egy nagyon nem eletszeru feladat, ezert kar tulelemezni. Ami latszik, hogy a zfs kb. mindenhol jobban tejlesitett, mint az ufs. A zfs + hw raid combo nagyon kemeny. A raidz pedig meglepoen jol teljesit, picit gyorsabb is, mint a zfs mirror, pedig tokugyanolyan gepen futottak a tesztek, es meg egy rackben is vannak, nem lehet rafogni a foldsugarzasra
Test 2. - nagy file irasa / olvasasa / masolasa particion belul
A kovetkezo teszt mar egy picit eletszerubb, egy relative nagy filet masolgatok ide-oda. A file cirka 1 GByte meretu, a /usr konyvtar betarolasaval generaltam. Ezt a filet elso korben a /tmp alol szeretnem a celparticiora masolni. A /tmp a memoriaban levo filerendszer, ezert onnan az olvasas eleg gyors - viszont vigyazni kell vele, mert ha megtoltjuk, akkor a memoriat toltjuk meg
A parancs:
# time cp /tmp/proba.bin .
TS1:
real 0m18.180s user 0m0.003s sys 0m4.198s
TS2:
real 0m1.916s user 0m0.003s sys 0m1.910s
TS3:
real 0m21.529s user 0m0.002s sys 0m4.723s
TS4:
real 0m20.601s user 0m0.005s sys 0m7.260s
TS5:
real 0m10.257s user 0m0.003s sys 0m3.365s
TS6:
real 0m5.626s user 0m0.003s sys 0m4.928s
TS7:
real 0m2.860s user 0m0.004s sys 0m2.769s
Es most jojjon ugyanennek a filenak a visszamasolasa:
# time cp proba.bin /tmp
TS1:
real 0m5.062s user 0m0.003s sys 0m5.047s
TS2:
real 0m6.002s user 0m0.003s sys 0m5.809s
TS3:
real 0m3.115s user 0m0.002s sys 0m3.101s
TS4:
real 0m7.505s user 0m0.005s sys 0m7.499s
TS5:
real 0m7.198s user 0m0.003s sys 0m7.164s
TS6:
real 0m4.141s user 0m0.003s sys 0m4.129s
TS7:
real 0m7.179s user 0m0.004s sys 0m7.146s
Kovetkezo, es egyben utolso nagy file-os teszt:
# time cp proba.bin cica.bin
TS1:
real 0m18.916s user 0m0.003s sys 0m5.035s
TS2:
real 0m7.421s user 0m0.003s sys 0m5.842s
TS3:
real 0m16.715s user 0m0.005s sys 0m12.110s
TS4:
real 0m22.248s user 0m0.004s sys 0m6.175s
TS5:
real 0m4.090s user 0m0.003s sys 0m4.027s
TS6:
real 0m5.390s user 0m0.003s sys 0m5.288s
TS7:
real 0m5.585s user 0m0.004s sys 0m5.555s
Ketsegtelen, hogy a zfs valahol csal, tobbszor is kijottek hihetetlenul alacsony ertekek eseteben, ilyenkor a tesztet inkabb megismeteltem tobbszor, biztos ami biztos ![]()
A hardware raid ilyen nagy file eseten (ahol a file joval nagyobb, mint a raid vezerlobe szerelt cache) viszont nem tunik nagy segitsegnek, iraskor legalabbis semmikepp.
Test 3. - sok kis file irasa / olvasasa / masolasa particion belul
Sokkal eletszerubb, ha sok kis file-lal csinaljuk a muveleteket, ugyhogy ez a legutolso tesztsorozatbol lehet majd leginkabb levonni kovetkezteteseket. Na lassuk.
Ezen teszt soran elobb keszitett 1Gb koruli tar file tartalmaval fogom megcsinalni ugyanazt, mint amit az elobb az osszetarolt nagy file-lal.
Azaz elso korben:
# cd /tmp # tar xfv //proba.tar # time cp -R proba/ / /
TS1:
real 0m34.166s user 0m0.269s sys 0m7.780s
TS2:
real 0m14.845s user 0m0.247s sys 0m4.839s
TS3:
real 0m33.460s user 0m0.234s sys 0m7.121s
TS4:
real 0m35.447s user 0m0.454s sys 0m8.744s
TS5:
real 0m7.270s user 0m0.311s sys 0m6.700s
TS6:
real 0m13.444s user 0m0.251s sys 0m5.892s
TS7:
real 0m8.606s user 0m0.383s sys 0m7.363s
Hat, engem meglepett. Mostmar tuti, hogy csal
Jojjon a visszafele irany:
# time cp -R //cica /tmp
TS1:
real 0m21.607s user 0m0.247s sys 0m6.584s
TS2:
real 0m8.571s user 0m0.252s sys 0m8.233s
TS3:
real 0m29.703s user 0m0.197s sys 0m6.589s
TS4:
real 0m15.367s user 0m0.463s sys 0m11.094s
TS5:
real 0m9.486s user 0m0.314s sys 0m9.107s
TS6:
real 0m12.329s user 0m0.377s sys 0m11.915s
TS7:
real 0m11.848s user 0m0.374s sys 0m11.424s
Es vegul a particion beluli masolas:
# time cp -R cica kutya
TS1:
real 1m44.702s user 0m0.298s sys 0m9.120s
TS2:
real 0m12.788s user 0m0.296s sys 0m11.800s
TS3:
real 1m32.261s user 0m0.224s sys 0m9.113s
TS4:
real 1m6.717s user 0m0.501s sys 0m14.234s
TS5:
real 0m15.021s user 0m0.314s sys 0m6.970s
TS6:
real 0m11.418s user 0m0.269s sys 0m8.844s
TS7:
real 0m12.350s user 0m0.396s sys 0m10.782s
Kulon kiemelnem, hogy a TS1 es a TS6 ugyanaz a gep, csak mas particiokon vegzem a merest (persze nem egyszerre). Durvan nem mindegy, hogy 104 vagy 11 masodperc ugyanaz a muvelet, ugyanazon a gepen...
Raadaskent pedig nezzuk mar meg mennyi ido alatt torlodik le az adott konyvtar, tele egy giganyi apro szemettel - mert ufs-en ez is marha lassunak tunt a tesztek alatt: (ezt a tesztet csak egyszer hajtottam vegre)
# time rm -rf cica
TS1:
real 0m30.100s user 0m0.088s sys 0m1.084s
TS2:
real 0m0.943s user 0m0.065s sys 0m0.863s
TS3:
real 0m29.660s user 0m0.072s sys 0m1.265s
TS4:
real 0m5.247s user 0m0.127s sys 0m1.366s
TS5:
real 0m1.094s user 0m0.079s sys 0m0.999s
TS6:
real 0m1.156s user 0m0.063s sys 0m1.035s
TS7:
real 0m1.447s user 0m0.111s sys 0m1.070s
No comment.
Konkluzio
Ahogy irtam, a tesztek azert nem laboratoriumi korulmenyek kozott keszultek, de igy a vegere nekem az jott at, hogy a zfs teljesitmenye eleg jo (az ufshez kepest), meg hardware raid megoldas nelkul is.
Ha az egy diszkes konfiguraciokat nem nezzuk, akkor a kulonbozo zfs megoldasok kozott csak apro kulonbsegeket figyelhetunk meg, es kb. mindenhol verik sebessegben az ufs megoldasokat. A Sun regebben ugy is reklamozta a zfs-t, hogy ezutan nincs szukseg hardware raidre - es ez teljesitmeny szempontbol akar igaz is lehet. Aztan a masik kerdes a biztonsag, kivancsian varom, amikor kihullik az elso vinyo a zfs raidz alol, mennyivel jobban viseli majd el, mint a regi software raid.
Azt hogy a Sunt dicseret illeti-e a zfs kifejleszteseert, vagy a hires f*szkorbacs, hogy hosszu evekig nem csinaltak semmi ertelmeset az ufs helyett, hat az mas tema