Shery és RePa

2008. február 26.

zfs performance

dyuri @ 13:29:44

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 :)

Címkék:, ,

Comments are closed.

Ez egy blog. A velemenyunk a mienk, ezert szubjektiv, es meglehet, hogy neha csak picit fedi az egyetemes igazsagot. Mellesleg akinek nem tetszik, az nezze helyette a tvt.

Egyebkent nyugodtan lehet idezni, kepeket toltogetni, szabadok vagyunk.

Ha esetleg valami szemelyes kozolnivalod van, amit nem szeretnel kommentbe leirni, akkor tobbek kozott elerhetsz minket a [akiacikketirta] kukac horak pont hu emailcimen.