05
05/2010
0

Leteszteltük: Scalien Keyspace

ScalienA magyarok eddig főleg a hátrafelé nyilazásról, a gulyásról és a csinos tenyeres-talpas menyecskékről voltak messzeföldön híresek. Azonban a már nevében is ízig-vérig magyar Scalien ki akarja bővíteni a tradíciókat, saját fejlesztésű, igazi hiánypótló termékükkel - az egyébként ingyenes és opensource keyspace-szel.

Mivel a sokévnyi konzultációban eltöltött év során gyakorlatilag immunis lettem a weboldalakon és customer success story-kban olvasható, bűzös, marketingszagú túlzásokra, ezért fehér inget feltűrve telepítettem fel és teszteltem le, hogy vajon árt-e vagy használ a termék a magyar renoménak.

Azonban még mielőtt elvesznénk a táblázatok és grafikonok megnyugtatóan hűvös árnyékában, nézzük, mi is lehetett az oka a termék kifejlesztésének.

Mint azt már többször mondtuk, nehéz dolog egyszerre konzisztensnek, hibatűrőnek, perzisztensnek, elosztottnak és még gyorsnak is lenni. A keyspace viszont megpróbálja mindezt egyszerre és egyidőben biztosítani, amihez az elosztott adatbázisfejlesztő berkekben méltán népszerű Paxos algoritmust használja. Emellett rendelkezik perzisztenciával: felvitt adatainkat Berkeley adatbázisban tárolja (ami egyébként Oracle termék). Ezzel gyakorlatilag megvalósít mindent, ami a memcached-ből hiányzott, valószínűsíthető, hogy a jövőben annak fő konkurense, kompetítora lesz.

Hogy miért jó a memcached helyére kerülni? A szoftvert jelenleg olyan helyeken használják, mint Youtube, Twitter, Wikipedia vagy a Flikr. S ha valaki ilyen nagy webóriások hátszelében tudja kiteríteni a vitorláit, annak valószínűleg sosem lesz gondja az előrejutással.

Ezért is döntöttem úgy, hogy összehasonlítom a keyspace és a memcached teljesítményét, lássuk, melyik a jobb ár-értékben, váltanék-e, ha én lennék döntési pozicíóban.

Néhány tényt azért szögezzünk le a teszt elején, ami hatással lehet az eredményekre:

  • A memcached nem hibatűrő. A memcached sharding alapú, gyakorlatilag semmilyen kommunikáció nincs a szerverek között. A keyspace-nek ezzel szemben folyamatosan szinkronizálni kell a node-jait, replikálni az adatokat, és konzisztenciát biztosítani.
  • A memcached nem perzisztens. Szintén lassítja a keyspace-t, hogy az eltárolt adatok a szerver újraindulását követően is megmaradnak, adatbázisban eltárolódnak. 

Ennek fényében azért sejthető, hogy a memcached gyorsabb lesz, azonban a kérdés az, hogy mennyire fáj nekünk a háttér adatbázis és a HA overheadje?

A tesztkörnyezet

Nincsenek nagy meglepetések, a tesztkörnyezet két 64bites, két processzoros linux önálló, raid1 diszkalrendszerrel. Memcached esetén két különálló, keyspace esetén két replicate módban futó node lesz beállítva. A gépekben karcsúnak mondható, 2Gb-os memória modulok muzsikáltak, amelyek azért szintén torzíthatják az eredményeket (bár swappeleséig sosem fajult a helyzet). 

A Keyspace konfigurálciója itt található (memcached-nél maradt minden default - konfigfájl nélkül).

 mode = replicated
paxos.nodeID = 0
paxos.endpoints = clust-01:2000, clust-02:2000

io.maxfd = 4096

database.dir = /var/keyspace

http.port = 8888
keyspace.port = 7080

log.trace = false
log.targets = stdout, file
log.file = keyspace.log
log.timestamping = false

A tesztek

Három testesetet írtam, mindkét versenyzőre. Ezek az esetek:

  1. Folyamatos írás. Csak key set történik, 8k-s value-kal. A kulcsok egyediek, felülírás nincs, bulk műveket nincs
  2. Olvasás. Az előző fázisban beírt kulcsok olvasása ciklikusan
  3. Bulk írás és olvasás. 10 fix kulcsot írunk, amelyeket 10-szer kiolvasunk a következő felülírás előtt (10 írás, 100 olvasás / egy ciklus)

Mindhárom testeset tetszőleges számú párhuzamos szálban indítható. Az eredményeket 1,2,4,6 és 8 szálon indítottam el, amelyek minden esetben 15-20 másodperc / teszteset ideig futottak. Minden teszteset legalább 5-ször lett lefuttatva, amely futások átlagértéke adta a végső eredményt.

A tesztprogramok itt találhatóak.

Az eredmény

Az írási teszt egyből meglepeteséket hozott. Attól függetlenül, hogy a keyspace-nek sokkal több feladata adódik az írási műveletek során (adatbázisba írás, replikáció), már egy szálon futtatva is jól kihasználta a hardware lehetőségeit, megelőzve a memcached-t. Azonban míg a memcached közel lineárisan skálázódik több szál esetén is, a keyspace-d már egy szálon eléri a maximumot, így később a több szál bevezetésével nem nyerünk - és nem is vesztük - teljesítményt.

 

Az olvasási teszt is okozott meglepetést. Itt is gyorsabb mérési eredményeket kaptam a keyspace esetén, mint memcached esetén. A CPU-k számával megegyező szálak esetén gyakorlatilag a memcached teljesítményének közel háromszorosával dolgozott a keyspaced.

A bulk read/write viszont nem volt ilyen fényes, ott gyakorlatilag labdába se rúgott a keyspace. Nem tudom, a teszt eset volt-e hibás, vagy tényleg ennyire gyér az ilyen jellegű funkcionalitása a keyspacenek, azonban az eredmények itt elkeserítőek.

Összességében azonban kimondható, hogy várakozásomon felül teljesített a keyspaced. Mindezt merem mondani annak tükrében, hogy a nyolc szálon futó teszt esetében közel egy gigabájt memóriát evett, míg ugyanennyi - illetve több - adat tárolásához a memcached csupán ennek ötödét fogyasztotta.

Hogy merném-e használni éles helyzetben, nem tudom. A jó teljesítmény ellenére extrém terheléskor többször futottam read/write hibába, ami azért még arra utal, hogy lesz mit csiszolniuk honfitársainknak.

 

A bejegyzés trackback címe:

https://dwbi.blog.hu/api/trackback/id/tr651970373

Kommentek:

A hozzászólások a vonatkozó jogszabályok  értelmében felhasználói tartalomnak minősülnek, értük a szolgáltatás technikai  üzemeltetője semmilyen felelősséget nem vállal, azokat nem ellenőrzi. Kifogás esetén forduljon a blog szerkesztőjéhez. Részletek a  Felhasználási feltételekben és az adatvédelmi tájékoztatóban.

Nincsenek hozzászólások.