De Schoonheid van Beestachtige Performance


Als je een schaalbaar opslagsysteem wilt bouwen met extreme performance dan zijn er een paar architectuur regels die je in acht moet nemen. Van alle regels concentreer ik me op twee aspecten: de lineaire schaalbaarheid en rock bottom performance. We zullen zien dat deze twee aspecten in elkaars verlengde liggen.

Lineaire Schaalbaarheid
Er zijn globaal twee vormen van schaalbaarheid; 1) Scale-up, 2) Scale-out. De eerste vorm wordt beperkt door een absolute bovengrens, van de controller of het aantal aan te sturen devices. Bij de tweede vorm zien we vaak een bepaalde hoeveelheid overhead in verband met inter-cluster communicatie. Ik weet uit ervaring dat deze overhead in sommige gevallen de Scale-out beperkte tot slechts 4 of 5 nodes, omdat het toevoegen van een 6e node gepaard ging met zoveel overhead, dat de netto bijdrage van de extra resources nul of zelfs negatief was.

Extreme Performance
Ten aanzien van de extreme performance zien we het gebruik van Flash disks (SSD) als een absolute must. De mechanische traagheid van traditionele disks (HDD) kan de vraag van de snellere CPU’s niet meer bijhouden. Het mooie van SSD technologie is dat zij profiteert van dezelfde technologische ontwikkelingen die we ook zien voor de processors (de wet van Moore).

De architectuur van een modern high performance opslagsysteem moet dus maximaal gebruik maken van de eigenschappen van SSD technologie. De oude architecturen die we gebruikte voor meer traditionele opslagsystemen voldoet niet meer. We weten ondertussen dat de SDD technologie de beste prestatie levert voor leesopdrachten. Om data te schrijven is er nogal wat extra werk te doen, dat enerzijds de performance beïnvloedt en anderzijds een vorm van slijtage kent. Het is dus belangrijk dat de architectuur erin voorziet dat unieke data maar een keer wordt geschreven, zodat we de hoeveelheid schrijfacties minimaliseren en daardoor beter presteren.

In-Line All The Time
Door alle functies die men moet doen met de data direct uit te voeren als deze voor het eerst wordt weggeschreven, voorkom je dubbele of driedubbele schrijfacties. Denk hierbij aan data-de-duplicatie, compressie en encryptie. Met andere woorden de architectuur moet voorzien in in-line functies. “In-Line All The Time” moet een eigenschap van het systeem zijn en geen optionele functie. Daarnaast moet de architectuur de data evenredig verdelen over alle beschikbare resources zodat er geen hot spots ontstaan.

Dit is het punt waar lineaire schaalbaarheid en performance samen komen. Alle nodes in het systeem moeten weten of data al bestaat, om te voorkomen dat we data eerst moeten stagen (en dus een tweede keer moeten schrijven). Daarnaast moet ook duidelijk zijn waar die informatie staat, welke node is uiteindelijk verantwoordelijk voor de afhandeling van de IO. Tegelijkertijd moeten alle nodes in staat zijn om de data / workload evenredig te verdelen over alle beschikbare nodes. Alleen dan krijg je een schaalbare infrastructuur van enkele TB tot meer dan een PB en 2.000.000 read IOPS.

4e generatie architectuur
Beide architectuurkarakteristieken hebben betrekking op een optimale verdeling van het werk over alle beschikbare resources zonder centrale aansturing (overhead). Deze architectuur wordt in de markt nu gezien als een generatie 4 architectuur voor AFA. Het is essentieel in deze architectuur dat elke node autonoom beslissingen kan maken om overhead te voorkomen en schaalbaarheid te garanderen. De 4e generatie architectuur van EMC XtremIO voorziet in een proces dat elke node autonoom de geschreven data direct analyseert en aan de hand van de HASH bepaald of de data al bestaat en welke node deze transactie verder afhandelt. Indien meerdere nodes dezelfde data op hetzelfde moment ontvangen, zullen zij eenzelfde HASH berekenen en de vervolgactiviteiten overlaten aan de door de HASH bepaalde node. Op deze node komt de data samen zodat daar alsnog geconstateerd wordt dat we te maken hebben met dubbele data en deze uiteindelijk toch maar een keer wegschrijven.

Een laatste argument ter ondersteuning van lineaire schaalbaarheid van de performance is de vorm van inter-cluster communicatie. De nodes hebben middels Direct Memory Access direct toegang tot elkaars memory zodat de overhead van dit proces verwaarloosbaar is geworden. Dit efficiënte protocol wordt ook gebruikt tussen de twee directors binnen een node en wordt dus niet pas ervaren bij groei.

Het verbaast mij daarom niet dat een systeem, zoals XtremIO, dat al deze eigenschappen en top performance karakteristieken heeft, met kop en schouders uitsteekt boven andere AFA’s die nog gebaseerd zijn op oudere meer traditionele architecturen. Ik kan me ook voorstellen dat er single-node oplossingen zijn die met mooi weer een lagere latency hebben, maar daardoor een totaal gebrek aan schaalbaarheid met zich mee dragen.

De schoonheid van deze architectuur is de elementaire eenvoud van het concept. Het klinkt zo logisch dat je je afvraagt wanneer alle storagesystemen hier gebruik van gaan maken.

Voor meer informatie over XtremIO van EMC: http://netherlands.emc.com/storage/xtremio/overview.htm

 

 

Laat een reactie achter