Door Wouter Tinus

Databaseserver en -software vergelijking

19-04-2006 • 17:31

46

Multipage-opmaak

Introductie

De markt voor (relatief) goedkope servers met twee sockets is de laatste paar jaar erg spannend geworden. Intel heeft lange tijd gedomineerd door met zijn Xeons alle andere architecturen zo goed als weg te jagen uit dit segment. Het bedrijf begon pas in 1995 serieus mee te doen met de Pentium Pro, maar het bleek al snel dat het enorme schaalvoordeel van x86 in het algemeen en Intel specifiek een beslissende factor zou gaan worden in de concurrentiestrijd. Intels Xeon profiteert direct van de enorme hoeveelheid capaciteit en onderzoek die sowieso al aanwezig is voor de Pentium. Andere bedrijven hebben niet zo'n geldkoe in huis, en moeten de gehele ontwikkeling van hun serverchips dus financieren met veel kleinere aantallen.

Naar mate de transistors kleiner worden stijgen de kosten voor de ontwikkeling en productie van processors sterk. Er winst mee maken is zeker niet onmogelijk, maar wie slechts kleine aantallen kan afzetten krijgt het steeds zwaarder. Toch zijn er nog drie van de top vijf serverbouwers die toekomst zien in het ontwikkelen van hun eigen processors, namelijk IBM, Sun en Fujitsu. Om dat te betalen verkopen ze servers als totaalpakket, inclusief software, consultancy, ondersteuning en alle hardware tot de behuizing en tapestreamers aan toe. Hierop wordt genoeg winst gemaakt om door de sluizen naar de processorafdeling, maar het gevolg is wel dat de verkoop van 'kale' hardware nauwelijks aantrekkelijk is. Intel daarentegen verkoopt juist alleen maar de losse onderdelen: processors, chipsets en hier en daar wat moederborden. Tientallen andere bedrijven gaan hier vervolgens mee aan de slag om servers te bouwen. Het gevolg daarvan is automatisch concurrentie en dus ook weer betere deals voor de klant.

De Xeon was dus een groot succes voor Intel, en het bedrijf was druk bezig met zijn plannen om dezelfde truc uit gaan halen in het high-end segment met de Itanium-familie. Dit deed het in samenwerking van HP, dat had ingezien dat de ontwikkeling van zijn eigen PA-RISC-chips in de toekomst niet meer rendabel zou zijn. Ondertussen leek men de bedreiging van AMD aan de onderkant echter te onderschatten. De eerste poging van AMD om het succes van Xeon na te bootsen (de Athlon MP) was an sich zeker niet slecht, maar het bedrijf miste het imago en de geloofwaardigheid die Intel had opgebouwd, en werd dus niet als een serieuze bedreiging gezien.

Appro 1124i dual Athlon MP 1U rackmount

Met de introductie van de Opteron - bijna precies drie jaar geleden - veranderde alles. De K8 was met zijn geïntegreerde geheugencontroller, 64-bit extensies en een zuinig ontwerp niet zomaar een tweederangs alternatief voor Xeon meer, maar een volwaardige concurrent die een aantal overduidelijke voordelen te bieden had. Het conservatieve bedrijfsleven stelde zich zoals gebruikelijk afwachtend op, maar toen bleek dat er écht geen addertje onder het gras zat begon het in relatief snel tempo de Opteron te verwelkomen, waardoor de concurrentie was teruggekeerd. AMD had echter nog meer in petto: na 64-bit x86 in 2003 was in 2005 dualcore aan de beurt, en wederom werd Intel gedwongen om overhaast te reageren.

Nu beide bedrijven voor relatief lage prijzen single- en dualcore 64-bitters in de aanbieding hebben is er voor kopers van x86-servers een hoop keuze ontstaan. Tweakers.net is met zijn park van veertien servers één van de bedrijven die deze afweging regelmatig moet maken, en het leek ons een goed idee om met de evaluatie van nieuwe hardware voor onze databases twee vliegen in één klap te slaan: enerzijds door goed te testen welk platform voor ons het meest geschikt is, en anderzijds een interessant stuk content voor de lezers genereren. In dit artikel worden de volgende processor meegenomen:

  • AMD Opteron 280 (dualcore 2,4GHz, 2x 1MB cache)
  • AMD Opteron 254 (singlecore 2,8GHz, 1MB cache)
  • Intel Xeon 'Paxville' (dualcore 2,8GHz, 2x 2MB cache)
  • Intel Xeon 'Irwindale' (singlecore 3,8GHz, 2MB cache)

Naast de hardwarekant zullen we in dit artikel ook naar de software kijken: de site draait op dit moment op MySQL 4.x, maar dat zal natuurlijk niet altijd zo blijven. We besloten daarom ook MySQL 5.0 uit te proberen.

Testverantwoording

Om de webdatabase-prestaties van database-software en serverplatformen te testen, heeft Tweakers.net een simulatie ontwikkeld op basis van de eigen Tweakers.net-code en -database. De omgeving van Tweakers.net kenmerkt zich door zijn goed geoptimaliseerde queries, die over het algemeen een 'licht' karakter hebben en binnen enkele milliseconden verwerkt kunnen worden. De queries zijn vaak joins van twee of meerdere tabellen, waarvan de indices en datatypes goed zijn geoptimaliseerd. Veel queries laten zich bovendien goed versnellen door de query cache van MySQL, die resultaten van zoekopdrachten tijdelijk in het geheugen vasthoudt zolang de gegevens in de betrokken tabellen ongewijzigd blijven. Omdat er veel gelijktijdige queries door de Tweakers.net-database worden verwerkt, ontstaat er toch een hoge belasting van de database-server.

De queries in de simulatie zijn gebaseerd op degene die worden gebruikt om de belangrijkste pagina's op Tweakers.net op te bouwen. De pagina's voeren acties uit zoals het opvragen van een nieuwsbericht met de bijbehorende productkoppelingen en reacties, of het opvragen van een prijslijst in de Pricewatch. Om de simulatie zo realistisch mogelijk te maken is de verdeling van deze acties gebaseerd op de werkelijke verhoudingen tussen pageviews van de verschillende onderdelen van Tweakers.net (exclusief het forum). Deze verdeling is als volgt:

Verdeling pageviews
Frontpage 35%
Nieuws 25%
RSS-feeds 14%
Pricewatch 13%
Meuktracker 6%
Productsurvey 2%
Vraag & Aanbod 2%
Reviews 2%
Shopsurvey 1%

De simulatie wordt uitgevoerd in een 2-tier-opstelling met een database-server aan de ene kant en één of meerdere webservers aan de andere kant. Op de webservers draait een load generator die queries op de database afvuurt.

*Werking van de load generator

De load generator is feitelijk een combinatie van "ab" (Apache Bench) en een php-script. Het php-script stelt een lijst van honderd "acties" op (zoals het ophalen van de frontpage, een nieuwspagina, een Pricewatch-prijslijstpagina of een meukpost) volgens de eerder genoemde distributie. Om het min of meer willekeurige klikgedrag van enkele honderden gelijktijdig ingelogde tweakers te kunnen simuleren, wordt de lijst van acties "geshuffeld" voordat de acties daadwerkelijk worden uitgevoerd. De acties bestaan uit het verwerken van de queries zoals deze ook in werkelijkheid worden uitgevoerd bij het parsen van pagina's op Tweakers.net. Het "shuffelen" voorkomt dat er eerst 35 keer de frontpage wordt aangeroepen, vervolgens 25 nieuwspagina's, enzovoorts. De database-server zou dan op veel momenten enkel gelijksoortige queries uitvoeren, wat niet realistisch is.

Apache logoMet behulp van Apache Bench kan de load generator met een bepaalde concurrency, dat wil zeggen een bepaald aantal tegelijk draaiende generators, aangeroepen worden. Zo kan de simulatie in lichtere en zwaardere scenario's getest worden. We hebben ervoor gekozen om de testruns uit te voeren met een concurrency van 1, 2, 3, 4, 5, 7, 10, 13, 15, 20, 25, 30, 35, 40, 45 en 50 gelijktijdige load generators. Normaliter nemen de prestaties (gemeten in queries per seconde) toe tot een bepaalde concurrency waarna de performance ongeveer gelijk blijft of juist weer afneemt. Onze ervaring is dat concurrencies hoger dan 50 nauwelijks verschillen laten zien en bovendien in de praktijk nauwelijks voorkomen.

De virtuele pagina's die door de acties in de load generator worden gesimuleerd, worden aangevraagd door middel van willekeurig berekende ID's binnen een realistisch bereik. Voor nieuwspagina's zijn dit de ID's tussen 0 en ongeveer 40.000 met de nadruk op het nieuws van de afgelopen dag. De random ID-generators zorgen ervoor dat een breed gedeelte van de database wordt aangesproken, zodat de dataset niet eenvoudig gecached kan worden. Voor alle virtuele pageviews worden net als in de werkelijkheid statistieken gelogd. Op willekeurige basis worden er met een bepaalde waarschijnlijkheid inserts in de reactie- en prijstabellen gedaan. Daarbij wordt ook de tabel met gegevens van de users, die veel wordt benaderd voor het ophalen van gebruikers- en sessiegegevens, geupdate. Dit alles zorgt ervoor dat er geen sprake is van een statische database. Wijzigingen in de database hebben invloed op de effectiviteit van de MySQL query cache, want een wijziging in een tabel zorgt ervoor dat alle gecachede resultaten die betrekking hebben op de tabel uit de cache verwijderd moeten worden.

Om de database de tijd te geven om zijn buffers te vullen, worden de testruns vooraf gegaan door een ramp-up run. Daarna volgen de testruns met een oplopende concurrency van 1 tot 50 simultane load generators. Tijdens het draaien van de benchmark worden er statistieken verzameld over het aantal queries per seconde en de processorbelasting van de database-server.

*Testplatformen

De resultaten van de singlecore Xeon-processors werden verkregen op een Melrow QX312S-systeem met een Intel SE7520BD2-moederbord voorzien van 4GB DDR2-400-geheugen. Dit moederbord is gebaseerd op de Intel E7520-chipset en biedt helaas geen ondersteuning voor dualcore Xeon-processors. De dualcore Xeon werd daarom getest in een Dell PowerEdge 1850 met 4GB DDR2-geheugen. De Opteron-processors werden getest op een Iwill DK8ES nForce Pro 2200-moederbord met 4GB DDR400-geheugen.

Het singlecore Xeon-systeem was uitgerust met een Areca ARC-1130 SATA RAID-adapter met 256MB cache. Omdat deze full-height PCI-X-adapter niet ondergebracht kon worden in de low-profile slots van de Dell PowerEdge 1850 moest er voor dit systeem noodgedwongen uitgeweken worden naar een low-profile Areca ARC-1120 met 128MB cache. Vanwege de kleinere hoeveelheid cache presteert deze kaart in sommige situaties net iets minder dan de Areca ARC-1130. Het is niet aannemelijk dat dit heeft geresulteerd in significante verschillen in de prestaties van de database-server. De I/O belasting in de databasebenchmarks was namelijk gering met een gemiddelde CPU iowait van minder dan een procent en een lees transfer rate van zo'n 600KB/s. De Opteron-processors werden eveneens getest met de Areca ARC-1120.

De Areca-adapters waren aangesloten op acht Western Digital Raptor WD740GD-harde schijven. Daarvan waren twee stuks geconfigureerd in RAID 1 als bootarray en vijf stuks in RAID 5 als data-array. Het achtste exemplaar diende als hotspare. Als client werd een Linux-systeem met een Pentium 4 2,8GHz en 1GB RAM ingezet. Voor de multi-clienttests werd er een Windows-systeem met een P4 3,2GHz en 2,5GB geheugen als tweede client gebruikt.

Database testopstelling
Dell PowerEdge 1850 met acht Raptor-harde schijven

* Softwareconfiguratie

MySQL
Versies4.1.14 en 5.0.18
key_buffer1024M
table_cache512
sort_buffer_size2M
read_buffer_size2M
myisam_sort_buffer_size64M
thread_cache8
query_cache_size32M
max_connections1000
innodb_buffer_pool_size1200M
innodb_additional_mem_pool_size128M
innodb_file_io_threads8
innodb_lock_wait_timeout50
innodb_log_files_in_group3
innodb_log_file_size800M
innodb_log_buffer_size35M

MySQL 4.1 versus 5.0

Het eerste punt waar we naar hebben gekeken zijn de prestaties van MySQL. Tweakers.net heeft (bijna) zijn hele geschiedenis op deze opensourcedatabase. Helemaal terug in 1998 is het wel even mSQL (MiniSQL) geweest, maar dat kwam eigenlijk alleen maar omdat ons aller Femme een verkeerde checkbox had aangevinkt bij de toenmalige hostingprovider. In april van 1999 werd die fout rechtgezet en rolden we hoogstwaarschijnlijk ergens bij versie 3.22 van MySQL binnen. Sinds die tijd is er natuurlijk een hoop verbeterd aan het pakket en inmiddels draait Tweakers.net dan ook op versie 4.x. Omdat de database uiteindelijk zo'n beetje het hart van de site vormt zijn we nooit ál te vooruitstrevend geweest als het gaat om het installeren van grote nieuwe versies, maar we zouden ook geen tweakers zijn als we niet op zijn minst nieuwsgierig waren naar de dingen die de nieuwste telg van de MySQL-familie - versie 5.0 - voor ons zou kunnen betekenen. Het eerste dat we gaan bekijken is dan ook het verschil tussen MySQL 4.1 en 5.0:

Serverplatformvergelijking Q1 06: MySQL 4.1 selection
Serverplatformvergelijking Q1 06: MySQL 5.0 selection

Wanneer we naar de snelste machine kijken - de dual Opteron 280 - zien we dat het verschil in prestaties tussen versie 4.1 en 5.0 enorm is. De oudere release piekt bij 2610 queries per seconde met een concurrency van 10. Gemiddeld genomen over het bereik van één tot vijftig gelijktijdige gebruikers komen we uit op 2164 queries per seconde. Dit klinkt allemaal niet slecht - tot de resultaten van 5.0 binnenkwamen: met een piek van 3576 en een gemiddelde van 2989 queries per seconde is de nieuwe release bijna 40% sneller geworden voor het soort belasting dat een site als deze veroorzaakt. Het kan echter nog beter: verbaasd over het feit dat de Opteron-machine rond de 3500 queries per seconde bleef steken terwijl de processorbelasting onder de 60% bleef, hebben we geprobeerd om een tweede cliënt toe te voegen om eventuele bottlenecks aan die kant weg te nemen. Zoals in de grafiek te zien is kan het op die manier inderdaad nóg sneller, waarover later meer op de volgende pagina.

Voor Tweakers.net zelf over kan stappen op MySQL 5.0 moet er overigens nog wel meer worden getest. Onze ontwikkelaars besteden veel tijd aan het optimaliseren van queries en MySQL 5.0 gedraagt zich soms toch net even iets anders dan de 4.x-versies. Tevens lijken er hier en daar functionele wijzigingen te zijn: in het (beperkte) testscript kwamen we al één query tegen die niet zonder aanpassingen op versie 5.0 bleek te kunnen draaien. Voor we kunnen overstappen zal dus eerst alle code zorgvuldig nagekeken en getest moeten worden, maar als alles meezit kunnen we later dit jaar wel overstappen.

MySQL query cache en multi-client

MySQL 5.0 bleek verrassend goede resultaten op te leveren, maar de snelste machine die we beschikbaar hadden kwam niet aan zijn top met maar één cliënt die om pagina's aan het vragen was. De server kon kennelijk dus sneller antwoorden geven dan de cliënt ze kon verwerken. Om die reden hebben we een tweede testmachine geconfigureerd, zodat er iets meer druk op de servers gelegd kon worden. Het resultaat is hieronder zichtbaar gemaakt:

Serverplatformvergelijking Q1 06: MySQL 5.0 - Single-client vs. multi-client - Query rate
Serverplatformvergelijking Q1 06: MySQL 5.0 - Single-client vs. multi-client - CPU Idle

Het vermoeden dat er nog meer uit MySQL 5.0 te halen was met meerdere cliënts bleek te kloppen: de piek kwam voor de dual Opteron 280 (2,4GHz dualcore) op 4131 queries per seconde te liggen, tegenover 3576 queries met één cliënt. Ook de gemiddelde query rate steeg met 11%. De Opteron 254 (2,8GHz singlecore) weet ook nog een aardig voordeel uit de tweede cliënt te halen, wat doet vermoeden dat het sowieso beter is voor de prestaties van een database om meerdere cliënts in te zetten. Het leeuwendeel van de benchmarks in dit artikel is nog uitgevoerd met één cliënt, maar dat is dus een les die is geleerd. Zoals te zien is aan de belastingsgrafiek zitten de processors zelfs met twee cliënten nog steeds niet aan hun absolute maximum. Er zitten ergens anders dus nog bottlenecks in het systeem, maar het is niet duidelijk waar precies. De harde schijven leken in ieder geval niet echt een beperkende factor te zijn: de leessnelheid bedroeg gemiddeld slechts 600KB/s.

* Query cache

Een van de redenen waarom MySQL zo goed werkt voor websites is het query cache. Het resultaat van een zoekopdracht wordt door deze functie tijdelijk vastgehouden, zodat er de volgende keer dat dezelfde opdracht gegeven wordt niet opnieuw gezocht hoeft te worden. Het cache staat standaard aan en is dus ook overal in de benchmarks gebruikt.

Een query cache is echter lang niet altijd evenveel nuttig: het komt natuurlijk het best tot zijn recht in een read-only omgeving, maar als er ongeveer even veel geschreven als gelezen wordt heeft het nauwelijks effect. Tweakers.net valt net als de meeste andere websites in een categorie applicaties die in databasetermen 'read-mostly' genoemd wordt: het grijze gebied tussen read-only en read-write in. De database spendeert het grootste deel van zijn tijd aan het lezen van data, maar moet af en toe ook dingen bijwerken (afhankelijk van welke tabel tientallen tot duizenden keren per dag). In verhouding tot ruim een miljoen pageviews die stuk voor stuk meerdere lees-queries nodig hebben is het aantal schrijfacties dus klein, maar toch kan het cache hierdoor niet optimaal werken. Iedere keer als er is iets veranderd moeten de queries namelijk wél opnieuw uitgevoerd worden.

Dat de feature toch nog flinke winsten oplevert blijkt uit onderstaande test van een dual Xeon 3,8GHz waarbij het cache als experiment is uitgeschakeld: bij een concurrency van 1 tot en met 3 halveert het aantal queries per seconde zowat, een vrij dramatische val ten opzichte van dezelfde configuratie met cache. Omdat we query cache verder overal aan hebben staan hebben we niet verder doorgetest tot en met een concurrency van 50, maar het is in ieder geval iets om in het achterhoofd te houden.

Serverplatformvergelijking Q1 06: MySQL 5.0 - Invloed Query Cache

Invloed HyperThreading

Intels Xeon-processors hebben sinds een paar jaar HyperThreading aan boord: een feature die ervoor zorgt dat één core aan twee threads tegelijk kan werken. Vanaf de kant van de software ziet een core met HyperThreading ingeschakeld er (bijna) precies hetzelfde uit als twee losse cores, en in gunstige gevallen kan de feature dan ook redelijke prestatiewinsten opleveren, oplopend tot enkele tientallen procenten. Het werkt natuurlijk lang niet zo goed als twee echte cores, maar ieder beetje is natuurlijk mooi meegenomen. Het gevaar is echter dat het niet altijd winst oplevert, maar in sommige gevallen de prestaties ook negatief kan beïnvloeden. Oorzaken hiervoor moeten onder andere gezocht worden in het cache van de processor: wanneer twee threads met elkaar 'vechten' om ruimte in het cache lijden ze daar allebei onder. Uit onze test bleek dat de normale single-core Xeons geen problemen hadden met HyperThreading: de virtuele extra cores leveren een prestatievoordeel op van gemiddeld 8%.

De machine met dualcore Xeons (2,8GHz Paxvilles) vertoonde echter vreemde kuren: acht virtuele cores was kennelijk iets te veel van het goede en bij een concurrency van 7 of hoger stortte de snelheid volledig in. Zonder HyperThreading bleek dezelfde machine het wel goed vol te kunnen houden, dus de oorzaak moest in die hoek gezocht worden. We hebben deze bevindingen voorgelegd aan Dell en Intel, die beide hebben gezocht naar een verklaring. Uiteindelijk werd de schuld aan de software gegeven: de manier waarop MySQL 4.1 omgaat met meerdere threads zou ver van optimaal zijn, waardoor het pakket onder zware belasting in de problemen komt.

Serverplatformvergelijking Q1 06: MySQL 4.1 - Invloed HyperThreading

In MySQL 5.0 hebben de ontwikkelaars de schaalbaarheid verbeterd: het is duidelijk te zien dat het voordeel van HyperThreading voor de singlecore Xeon in stand is gehouden, maar ook dat de dualcore Xeon het met de nieuwe versie van de software een stuk beter volhoudt. Bij een concurrency van 40 of hoger is het echter wederom foute boel: met HyperThreading aan zakken de prestaties tot ver onder het niveau van dezelfde configuratie zónder virtuele cores.

Serverplatformvergelijking Q1 06: MySQL 5.0 - Invloed HyperThreading

Processors: Intel, AMD, single- en dualcore

Nu we de softwarekant hebben besproken is het de hoogste tijd om het over de hardware te gaan hebben. Oplettende lezers is het waarschijnlijk al opgevallen dat de dualcore Opteron 280 de beste prestaties neerzet. Het feit dat de processor 400MHz lager geklokt is dan de singlecore Opteron 254 wordt in onze test ruimschoots gecompenseerd door de verdubbeling van het aantal cores. Gemiddeld genomen is het dualcoresysteem ruim 10 procent sneller met één cliënt en bijna 14 procent sneller met meerdere cliënten. Wanneer we alleen naar de zwaardere belastingen (concurrency >5) kijken doet de dualcore AMD het zelfs nog beter: 13 procent verbetering met één client en 19 procent met meerdere clients. De dualcore Opteron 280 staat op dit moment voor 851 dollar op de prijslijst, niet veel duurder dan de singlecore Opteron 254 van 690 dollar. De singlecoreversie levert in deze test nét iets betere prestaties per dollar, maar op een volledige databaseserver is het prijsverschil zo klein dat het waarschijnlijk verstandiger is om die extra kosten even te slikken en later te profiteren van betere groeimogelijkheden.

Aan de kant van Intel is het verhaal echter anders: de verschillen tussen de singlecore Xeon 3,8GHz (Irwindale) en de dualcore Xeon 2,8GHz (Paxville) zijn slechts marginaal. Sterker nog: de singlecore doet het met HyperThreading ingeschakeld in veel gevallen beter dan dezelfde configuratie met dualcoreprocessors. HyperThreading inschakelen op de Paxville-machine is een optie om het verschil kleiner te maken maar leidt er onder zware belasting toe dat de prestaties juist inzakken. Gegeven het prijsverschil (1043 dollar voor een 2,8GHz dualcore en 851 dollar voor een 3,8GHz singlecore) zouden we op dit moment niemand aanraden om een dualcore Xeon voor dit soort databasewerk aan te schaffen.

Serverplatformvergelijking Q1 06: MySQL 5.0 queryrate
Serverplatformvergelijking Q1 06: MySQL 5.0 cpu idle

Gezien de resultaten met MySQL 5.0 zouden we eigenlijk helemaal geen Intel-processor kunnen adviseren, aangezien de Opteron duidelijk meer waar voor zijn geld biedt in deze toepassing. Natuurlijk spelen er bij het kopen van een server veel meer factoren mee dan alleen de processor, maar als we konden kiezen tussen identieke configuraties met dezelfde kwaliteit, ondersteuning en prijs, dan zou AMD een streepje voor krijgen.

Conclusie

Hoewel dit artikel zeker niet bedoeld is om het laatste en volledige antwoord te geven op de vraag wat nou de beste databasesoftware en -hardware is, willen we met deze test wel een fundering leggen voor een serie van toekomstige artikelen die over hetzelfde onderwerp gaan. Er staat een aantal interessante nieuwe ontwikkelingen te gebeuren dit jaar, waaronder de introductie van Intels Xeon 'Dempsey', de Socket F Opteron van AMD met DDR2-geheugen en natuurlijk ook Intels Woodcrest.

Hoewel we van AMD dit jaar geen grote verbeteringen meer verwachten, ligt de lat voor Intel hoger - het bedrijf heeft dan ook aardig wat achterstand om in te halen. De roadmaps geven aan dat de situatie zoals die er nu ligt aan het einde van het jaar drastisch anders zal zijn: een van de redenen waarom de dualcore Xeon in deze test niet harder wilde gaan dan zijn singlecore broertje is zijn beperkte bandbreedte: met vier cores op één 6,4GB/s bus werken is duidelijk geen pretje. Binnenkort verschijnt er echter een nieuwe chipset met een dubbele FSB en vier kanalen FB-DIMM, waardoor de beschikbare bandbreedte meer dan verdubbelt naar 17GB/s. De 65nm Xeon-processors die daarbij horen laten zich bovendien een heel stuk hoger klokken: we hebben hier een 2,8GHz Paxville onder de loep genomen, maar Dempsey zal beschikbaar zijn tot en met 3,73GHz.

Dual core Xeon DP Dempsey

Binnen een half jaar na Dempsey verschijnt Woodcrest, die de bandbreedte nog eens extra opvoert naar 21,3GB/s. Bovendien is deze chip gebaseerd op de volledig nieuwe architectuur die ook in Conroe en Merom terug te vinden zal zijn. Eén van de belangrijkste dingen die hiermee wordt aangepakt is het stroomverbruik van de Xeons: Dempsey krijgt nog een TDP van 150 watt mee, wat vergeleken met de 95 watt Opterons erg veel is. Woodcrest zal het verbruik naar verluidt bijna halveren (naar 80 watt), terwijl het tegelijkertijd betere prestaties belooft. Dat Intel ons aan het einde van het jaar een veel beter product zal kunnen bieden dat we nu getest hebben lijkt zo ongeveer vast te staan, maar de grote vraag is natuurlijk hoeveel beter, en of het ook genoeg is om de Opteron van de troon te stoten. Merom en Conroe mogen in vroege tests dan wel indrukwekkende resultaten neerzetten tegenover de Athlon 64 X2, maar een serverconfiguratie waarin twee processors moeten samenwerken is toch andere koek dan de een chip die op zichzelf goed werkt.

Omdat we hier feitelijk maar één soort toepassing hebben getest kunnen we in dit artikel geen definitieve conclusies trekken over welke processor of databasepakket nou 'het beste' is, maar we zijn duidelijk onder de indruk van de prestaties van de dualcore Opteron, en ook MySQL 5.0 was voor ons een positieve verrassing. Intels Xeons zouden het in andere taken misschien beter kunnen doen, maar in ons geval stellen ze teleur: vooral de dualcore-versie lijkt zijn geld niet waard te zijn. Hoewel dat later in het jaar weer helemaal kan veranderen, moeten we op dit moment concluderen dat we nog steeds liever voor AMD gaan.

* Dankwoord

Tweakers.net wil Robin Kuepers (Dell), Alex Vellinga (Melrow), Matty Bakkeren (Intel) en Winnie Silvertand (Whizpr / AMD) bedanken voor hun medewerking aan dit artikel. Verder dank aan onze eigen Femme, Kees, ACM en moto-moi voor het opzetten en uitvoeren van de tests en hun waardevolle inzichten voor het schrijven van dit artikel.

Reacties (46)

46
44
19
6
0
23
Wijzig sortering
vraag me hier dus wel heel erg af, wat de geintergreerde geheugen controler voor de nieuwe Amd64 x2 chipjes zal opleveren, zou in ieder gevaal zeer benieuwd zijn naar een zelfde soort onderzoek tegen die tijd.

eigenlijk dan nog het liefste met ook andere db-oplossingen dan mysql postgreSQL Oracle en MSsql zouden naar mijn mening een zeer waardevolle toevoeging kunne bieden.

wat mij trouwens wel opvalt is die term mostly read... (of iets van die strekking)
is het dan niet zo dat de nodige tabelen waarin veelvuldig data wordt geinjecteerd (zoals reacties, en modpunten), op niet-gecashte database servers draaiden... (ik had dat namelijk eigenlijk wel verwacht).
vraag me hier dus wel heel erg af, wat de geintergreerde geheugen controler voor de nieuwe Amd64 x2 chipjes zal opleveren, zou in ieder gevaal zeer benieuwd zijn naar een zelfde soort onderzoek tegen die tijd.
Het is zeker de bedoeling om dit vaker te gaan doen, dus wie weet :).
eigenlijk dan nog het liefste met ook andere db-oplossingen dan mysql postgreSQL Oracle en MSsql zouden naar mijn mening een zeer waardevolle toevoeging kunne bieden.
Het probleem daarbij is dat de code van Tweakers.net zwaar geoptimaliseerd is voor MySQL en zich dus niet zo makkelijk laat overzetten naar een andere database. Zelfs als het in een keer zou werken zou je weer hele andere trucs moeten gaan toepassen om de optimale prestaties te krijgen, en dat kost veel tijd. Nu dat gezegd is kan ik verklappen dat we hebben geprobeerd om Tweakers.net op PostgreSQL te testen, maar dat is om verschillende redenen fout gelopen en het resultaat daarvan hebben we dus achterwege gelaten. Wellicht komt dat echter nog terug in een toekomstig artikel.
wat mij trouwens wel opvalt is die term mostly read... (of iets van die strekking) is het dan niet zo dat de nodige tabelen waarin veelvuldig data wordt geinjecteerd (zoals reacties, en modpunten), op niet-gecashte database servers draaiden... (ik had dat namelijk eigenlijk wel verwacht).
Heel de frontpage van de site draait op één database. Query cache staat automatisch aan voor alle tabellen, maar degene waarin veel geschreven wordt profiteren er minder van.
Het probleem daarbij is dat de code van Tweakers.net zwaar geoptimaliseerd is voor MySQL en zich dus niet zo makkelijk laat overzetten naar een andere database.
Puur uit interesse, wat valt er aan MySQL zo specifiek zwaar te optimaliseren waardoor het dan ook nog eens voor SQL code zorgt die niet meer portabel is naar andere engines ?

Op die manier vervalt heel het voordeel van SQL als 'structured query language' IMHO...
ACM Software Architect @Verwijderd21 april 2006 07:24
Pas sinds 4.1 en nog meer 5.0 doet MySQL moeite om ook daadwerkelijk compatible met SQL te zijn. Daarvoor was het vrij gebruikelijk dat er zaken in zaten die niet in andere databases werken. Er zijn diverse voorbeelden, maar het lijkt me voor deze discussie niet heel handig ze allemaal te noemen.
Om je toch niet met een kluitje in het riet te sturen:
MySQL kan pas subqueries sinds 4.1, dus daarvoor moest je truckjes uithalen om hetzelfde effect te bereiken door de queries niet erg optimaal te herschrijven of door ze op te splitsen en de resultaten van "sub"queries eerst apart te verwerken in je applicatie.
MySQL gebruikte tot voor 4.1 de functie "concat" om iets vergelijkbaars als || te doen, maar niet het helemaal hetzelfde. Evenzo voor diverse andere functies, ze zijn/waren vaak net anders genoemd en/of werkten net even anders dan de standaardfunctionaliteit.
MySQL laat het toe dat je een langere select list hebt dan je group by list en dan heb ik het niet over de aggregations in de SL.

En zo zijn er nog heel wat meer. Veel van de queries konden overigens met redelijk beperkte aanpassingen toch werken in PostgreSQL. Maar aangezien PostgreSQL relatief tov MySQL slecht presteert met hele lichte queries was het nuttig en bijna noodzakelijk om met name die opsplitsingen van queries terug te draaien.
Ondanks die "terugdraaiingen" zijn er nog zat andere stukken code die kunnen profiteren van het opnieuw doordenken van de structuur en/of de queries.
ACM Software Architect @i-chat19 april 2006 20:26
eigenlijk dan nog het liefste met ook andere db-oplossingen dan mysql postgreSQL Oracle en MSsql zouden naar mijn mening een zeer waardevolle toevoeging kunne bieden.
Op zich heb je gelijk dat dat interessant is. Zoals Wouter al zegt, we hebben wel PostgreSQL in eerste instantie ook gebenchmarked. In de optimalisatie van de queries ging echter behoorlijk wat tijd zitten en juist daardoor gingen we enerzijds meer fouten introduceren en werden anderzijds de resultaten minder goed vergelijkbaar. Een redelijk belangrijke conclusie die ik je er nog wel over kan geven is dat ondanks de niet vergelijkbare resultaten (met mysql), gaven de cijfers ook bij PostgreSQL hetzelfde beeld als MySQL doet. Zowel voor HT als de dual-coreoplossingen
wat mij trouwens wel opvalt is die term mostly read... (of iets van die strekking)
is het dan niet zo dat de nodige tabelen waarin veelvuldig data wordt geinjecteerd (zoals reacties, en modpunten), op niet-gecashte database servers draaiden... (ik had dat namelijk eigenlijk wel verwacht).
Nee, dat gaat niet zo maar. Veel van de queries combineren diverse tabellen weer met elkaar (bijvoorbeeld de username bij de reacties). Sterker nog, in de praktijk zijn er maar een paar waar relatief veel in geschreven wordt en een vrij groot aantal waar relatief weinig in geschreven wordt. Maar zelfs voor de reactietabel moet je niet vergeten dat er hooguit een paar nieuwe reacties per minuut bijkomen, terwijl er in dezelfde tijd misschien wel 10x zoveel views op reacties zijn geweest.
Het is daarom ook "minder effectief" niet gelijk totaal zinloos bij de meeste van onze queries :)
eigenlijk dan nog het liefste met ook andere db-oplossingen dan mysql postgreSQL Oracle en MSsql zouden naar mijn mening een zeer waardevolle toevoeging kunne bieden.
Dit artikel heeft een beperkte strekking, namelijk die van een webdatabase-server. MySQL wordt vanwege de lage kosten, afdoende mogelijkheden en goede prestaties veel gebruikt voor webdatabases. Oracle wordt gebruikt voor hele andere toepassingen waarvoor wij geen simulatie voorhanden hebben die is gebaseerd op omgeving uit de echte wereld.

MS SQL zou wel een mooie toevoeging zijn omdat het veel wordt gebruikt voor websites die op Windows-systemen draaien.
wat mij trouwens wel opvalt is die term mostly read... (of iets van die strekking)
is het dan niet zo dat de nodige tabelen waarin veelvuldig data wordt geinjecteerd (zoals reacties, en modpunten), op niet-gecashte database servers draaiden... (ik had dat namelijk eigenlijk wel verwacht).
Over het algemeen geldt dat alle tabellen in de Tweakers.net-database een hoge verhouding reads hebben ten opzichte van writes, behalve de tabellen waar vrijwel uitsluitend in geschreven wordt (met name statistieken). Dit zal voor veel webdatabases het geval zijn. Ik denk dat wij zelfs aan de hoge kant wat betreft writes zitten ivm de veelvuldig voorkomende mutaties in de Pricewatch, de reactietabellen en user/sessietabellen door het toevoegen of wijzigen van prijzen en user moderaties. Desondanks worden er toch veel meer views gedaan dan mutaties.

Op de statstabellen heeft de query cache weinig overhead omdat er nauwelijks SELECT's op die tabellen gedaan worden en er dus ook weinig in de cache getrashed kan worden.
Ik ben benieuwd hoe de getallen zijn als je meer gaat schrijven in de DB
Mooie test!! hier hou ik wel van!!

In deze test worden de pagina dus 'niet echt' gegenereerd?!
Ik zat namelijk vandaag te knoeien om de resultaten van een querie netjes op het scherm te drukken maar de opbouw van de pagina heeft ook nog eens veel impact op de totale load
De pagina's werden wel echt gegenereerd maar dat gebeurde op een apart systeem. De databasemachines hielden zich dus puur en alleen bezig met het verwerken van de queries, niet met de verdere opbouw van de pagina.
Ze worden niet 'echt' gegenereerd. Als je ze zou zien zou je een hoop getallen zien, niet alsof je naar de frontpage zou kijken.

Het genereren van de pagaina, de opbouw e.d. kost inderdaad veel rekenkracht ook, en de webservers hebben het daar ook wel zwaar mee, maar dat is niet aan de database gerelateerde load, dus die konden we voor deze test weglaten. Als we webserversoftware zouden testen dan was het inderdaad een kwestie van de pagina compleet genereren en 'laten zien', maar nu het puur om de queries gaat is dat niet gebeurd.
De opmaak van je site zou niet uit mogen maken. Wat jij denk ik bedoeld is dat er bij sommige opmaken meer html en dus webserver load bij komt kijken.

De database server maakt het niet veel uit hoe en wanneer hij queries ontvangt!
Waarom niet de 1120 op alle hardwareplatformen getest?
ACM Software Architect @PcDealer19 april 2006 20:30
In eerste instantie wilden we het juist allemaal met die 1130 doen, maar die bleek bij de 2e server (die 1U Dell op de foto) al niet te passen, waardoor we uiteindelijk maar de 1120 zijn blijven gebruiken.
De dual 3.8 Ghz hing tegen die tijd echter al in ons rack en konden we niet meer opnieuw testen. Voor de performance maakte het verder geloof ik niks uit en anders een heel klein beetje. De oplettende bezoeker zal misschien herkend hebben dat de 3.8Ghz configuratie precies overeenkomt met die van de forum-searchserver Aphrodite en de 3.4Ghz met de fileserver Atlas ;)
Ik denk (maar misschien kan iemand anders die zich daadwerkelijk met het testen bezig heeft gehouden me corrigeren ;)) dat de singlecore Xeon simpelweg als eerste is getest en dat het niet de moeite waard was om die later nog een keer opnieuw te doen (gezien de lage I/O-activiteit).
Als jullie dit nog eens doen is het misschien een idee om de kleuren van de verschillende data-sets wat contrasterender te maken. Vooral op de zesde pagina vond ik het af en toe wat slecht uit elkaar te houden.
Ik heb gekozen voor gelijke kleuren met verschillen lijnstijlen voor dezelfde cpu's zodat snel is te zien hoe de resultaten van dezelfde cpu (met/zonder HyperThreading, single- of multi-client) zich tot elkaar verhouden).
Wat op zich opvalt is dat de idletime niet echt zwaar onderuit gaat. dat wijst op een andere bottlenek. Kan het daardoor niet zo zijn dat het gewoon aan het moederbord c.q. chipset i.p.v. de processoren ?
Er blijft inderdaad maar weinig over als de Cpu's idle zijn en de i/o lang niet vol zit. Maar of het dat dan ook geweest is?

Ik hou het op een combinatie van factoren, want ook bij de relatief snelle bus (tov aantal cpu's en snelheid ervan) bij de Dual Opteron 254 zaten de cpu's niet vol.
Zeer interessant artikel. Kan iemand nog wat meer vertellen over de "ramp-up run"? Is dit gedaan om de caches en buffers te vullen voordat de "echte" test begon?
ACM Software Architect @Hein20 april 2006 22:18
Precies om die reden ja. Het was overigens gewoon een testrun, zonder naar de resultaten te kijken. ;)
Mooie timing voor dit artikel :) Vlak voor de start van de verwachtte inhaalrace van Intel, om daar op de eerste rij verslag van te doen (ook al is het vanuit een beperkt perspectief). Hopen natuurlijk wel, dat bij elke 'major' platform/cpu release van een van de beide fabrikanten deze traditie voortgezet wordt.

Het zou interessant zijn wat meer uitgebreide artikelen op tweakers te zien.

Bijvoorbeeld de invloed van caches op integer en fp prestaties. M.b.v. van de SPEC suite. Ook al is er op www.spec.org (SPECmine) veel data te vinden, vaak worden daar verschillende compilers e.d. gebruikt wat toch zorgt voor beperkte vergelijkings mogelijkheden.

Voorbeeld:
Een identieke (compiler) set up voor elke geteste CPU. Te denken is dan bijvoorbeeld aan de volgende CPU's (met gelijk getrokken FSB's en kloksnelheden etc. voor gelijke CPU's):

K7 - 64 KB L2 Cache ('Applebred')
K7 - 256 KB L2 Cache ('Thoroughbred')
K7 - 512 KB L2 Cache (' Barton')

Northwood Celeron - 128 KB L2 Cache
Northwood - 512 KB L2 Cache
Northwood Xeon - 512 KB L2 + 1 MB L3 Cache
Northwood Xeon ('EE') - 512 KB L2 + 2 MB L3 Cache
Northwood Xeon - 512 KB L2 + 4 MB L3 Cache

K8 - 128 KB L2 Cache
K8 - 256 KB L2 Cache
K8 - 512 KB L2 Cache
K8 - 1 MB L2 Cache

Prescott 'Celeron D' - 256 KB L2 Cache
Prescott - 1 MB L2 Cache
Prescott - 2 MB L2 Cache
Prescott 'Xeon' - 1 MB L2 + 4 MB L3 Cache
Prescott 'Xeon' - 1 MB L2 + 8 MB L3 Cache

Dothan 'Celeron M' ULV - 512KB L2 Cache
Dothan 'Celeron M' - 1 MB L2 Cache
Dothan - 2 MB L2 Cache

Eventueel aangevuld met een test welke de invloed van een paar generatie compilers (ICC 7 t/m 9 o.i.d.) op Integer en FP prestaties laat zien.

En hoe vertaald zich een eventueel aangetoonde prestatiewinst, in pure int of fp, naar 'real world' applicaties?

Je ziet op allerlei plaatsen (talloze messageboards etc.) altijd weer de 'cache size' discussie opduiken in relatie tot prestaties. Een uitgebreid artikel daarover zou mooi als referentiepunt kunnen dienen.
In het verlengde van de spec-rate zou ik zeer geinteresseerd zijn in LAPACK en FFT prestaties op verschillende systemen. De meeste benchmarks die op het internet te vinden zijn gaan over 'supercomputers': data over de schootcomputer zijn meestal sterk verouderd.

Zo kun je denken aan:
gcc + MKL (Intel)
gcc + ACML + FFTW (AMD)
gcc + ATLAS + FFTW (Intel en AMD)
ifc/icc + MKL (Intel)
ifc/icc + ATLAS + FFTW (Intel)

en kijken hoe schaalbaar dit is bij het gebruik van 1, 2, 4, ... cores.

Mijn ervaring is dat geheugenintensieve berekeningen (zoals BLAS-3) op een Athlon sneller gaan dan op een Xeon, maar rekenintensieve zijn weer veel sneller op de Xeon. Opterons heb ik nooit kunnen testen...
Verwijderd @EaS25 april 2006 01:03
@EAS:

Ik denk niet dat je op de juiste manier bezig bent als je de FSB en clockspeeds gelijk trekt, gezien de IPC van de CPUs niet gelijk is is dat geen eerlijke vergelijking. (Daarnaast heeft de K8 gelukkig geen FSB)

Daarnaast ga je iets te kort door de bocht wanneer je het hebt over K8, er zit behoorlijk meer verschil tussen de verschillende K8 cores als alleen de cache grootte. We hebben het ook over het aantal Hypertransport links, de snelheid en breedte daarvan, het aantal ondersteunde instructies (denk aan SSE3), verbeteringen in de cache van de verschillende cores (betere prefetch en dat soort zaken).

Uiteindelijk is het zo goed als onmogelijk om precies te weten hoe snel een CPU is en om dat te vergelijken. Je kunt het beste zelf een praktijk test uitvoeren zoals hier gedaan is om te kijken wat in jouw unieke situatie het beste is. Ook kun je op basis van andere tests een voorspelling doen, maar hou altijd in gedachte dat een voorspelling geen waarheid hoeft te zijn.
Ik denk niet dat je op de juiste manier bezig bent als je de FSB en clockspeeds gelijk trekt, gezien de IPC van de CPUs niet gelijk is is dat geen eerlijke vergelijking. (Daarnaast heeft de K8 gelukkig geen FSB)
Thorchar, daarom schreef ik ook "voor gelijke CPU's". Ik wil niet zien of een Prescott sneller is dan een K7 met identieke kloksnelheid e.d., maar ik bedoel dat als je een K7 pakt, dat je dan elke K7 test met een identiek geklokte FSB, met daarop identiek getimed geheugen en een identieke kloksnelheid. Een K7 'Applebred' Duron komt natuurlijk fabriek-af met andere FSB eisen dan een K7 'Thoroughbred' XP. Of dit dan onder- of overklokken inhoud van een van de beide K7 varianten, is aan de reviewers. Idem voor Celeron varianten (en ook Xeon). Vaak lagere FSB snelheden t.o.v. de desktop versies, geen mogelijkheden tot het (omhoog) veranderen van de multiplier, dus dan maar "naar elkaar toe klokken".
Opgesomd:
Voor elke K7: een gelijke klok/fsb/geheugen snelheid -> alleen de verschillen in cache blijven over.
Voor elke Northwood: een gelijke klok/fsb/geheugen snelheid -> alleen de verschillen in cache blijven over.
Voor elke K8: een gelijke klok/HT/geheugen snelheid -> alleen de verschillen in cache blijven over.
Voor elke Prescott: een gelijke klok/fsb/geheugen snelheid -> alleen de verschillen in cache blijven over.
Voor elke Dothan: een gelijke klok/fsb/geheugen snelheid -> alleen de verschillen in cache blijven over.
En niet: klok/fsb/geheugen snelheid K7 setup == klok/fsb/geheugen snelheid Prescott setup == klok/fsb/geheugen snelheid Northwood setup etc. etc. Mocht het laatste toch onverhoopt het geval zijn: leuk, maar niet relevant voor deze test.
Daarnaast ga je iets te kort door de bocht wanneer je het hebt over K8, er zit behoorlijk meer verschil tussen de verschillende K8 cores als alleen de cache grootte. We hebben het ook over het aantal Hypertransport links, de snelheid en breedte daarvan, het aantal ondersteunde instructies (denk aan SSE3), verbeteringen in de cache van de verschillende cores (betere prefetch en dat soort zaken.
Zoals ook vermeld achter K7 -> identieke steppings. Voor elke familie van processoren dus een identieke stepping (voor zover de Xeon hierbij niet in de weg staat). Elimineert gelijk zaken als extra instructies, betere prefetching, grotere TLB's etc.
Wat betreft K8; de niet aanwezige FSB en het aantal HT-links: Het is een test bedoeld voor uniprocessor systemen. De 2 extra aanwezige cHT links in de K8 Opteron variant worden hierbij dus niet belast. Maar dat komt zowiezo al niet tersprake, omdat alle cache configuraties voor de K8 in een socket 939 jasje beschikbaar zijn -> hebben we maar met één HT link van doen, welke we dan gelijk houden/klokken voor alle cache varianten (800 of 1000 MHz of ???? MHz al naar gelang wat beter uitkomt). Voor de geheugen configuratie bij de 'weg met alle communicatie over een FSB' K8: Beetje letten op geheugen multipliers. Moet lijkt me dan prima te doen zijn :).
Je kunt het beste zelf een praktijk test uitvoeren zoals hier gedaan is om te kijken wat in jouw unieke situatie het beste is.
Absoluut mee eens. Maar de test die ik voor ogen heb, moet antwoord geven op de vraag: Wat is de invloed van cache's op integer en fp prestaties. Meer een algemene (aantonende?) test dus.
Dat dit dan eventueel kan verschillen tussen de verschillende processor families (microarchitectuur, cache configuraties etc.), kan bijv. ook een observatie zijn. Maar er zal in ieder geval een antwoord uitrollen :)
Verwijderd @EaS27 april 2006 00:39
Jup ik ben het met je eens het is echt een bijna onmogelijke test. Er zijn zoveel parameters die je test kunnen beinvloeden dat het testen van enkel de cache invloed eigenlijk zo goed als onmogelijk is.

Daarnaast denk ik altijd zo:

Als je kunt kiezen tussen een iets lager clocksnelheid met meer cache of een iets hogere clocksnelheid met minder cache kies dan altijd voor meer cache. De kloksnelheid kun je zelf wel bijwerken. :Y)

Het hangt echt enorm veel van de software en omstandigheden in de software af hoeveel een bepaalde hoeveelheid cache aan invloed heeft. Zit je bijvoorbeeld net in een ongunstige situatie waarbij de branch predictor veel fouten maakt dan ga je dat met minder cache veel zwaarder merken als met meer cache. Die omstandigheden zijn alleen bijna niet te testen. Ook kan het radicaal anders zijn per revisie en core type.

En als je dan al die tijd geld en moeite in de perfecte test hebt gestopt en je eindelijk het antwoord hebt dan komt de fabrikant met een nieuwe core of de software fabrikant met een nieuwe versie... |:(

Je moet het dus altijd een beetje gokken ben ik bang.
Op zich wel een voorspelbare uitkomst van deze test. AMD maakt gebruik van een soort NUMA architektuur. Die dingen kunnen dus veel sneller met hun geheugen communiceren. Bij DB servers levert dat veel voordelen op.
Mooie test alleen ik vind het grafiek type niet handig gekozen. Doordat de afstand tussen de stappen tussen de Concurrency overal even groot zijn krijg je een rare lijnen en stijgingspercentages.
Een "rare" lijn (parabolische vorm) krijg je ook wel als de schaal op de x-as lineair is. Het detail in het gebied waar het 't meest om doet (concurrency van 10 of lager) is dan alleen wat kleiner. Voor de vergelijking maakt het weinig uit, ook omdat het belangrijkste gebied optisch het meeste overwicht heeft. Extreem hoge concurrencies komen in de praktijk doorgaans minder vaak voor dat gematigde concurrencies.
Kun je na het hele verhaal over de raidcontrollers constateren hd performance niet belangrijk is voor een databaseserver? Zou een gewone SATA schijf ook voldoen?
Disk performance is zeker niet onbelangrijk voor database-servers. Dit artikel is gericht op de prestaties van serverplatformen, dwz de combinatie processor/chipset/geheugen. Om te voorkomen dat de storage een grote invloed heeft op de prestaties is de dataset kleiner gehouden dan het geheugen van de servers. De data kan daardoor goed gecached worden. In de echte wereld zal er vaak gewerkt worden met datasets die (soms velen malen) groter zijn dan het RAM in de server. Als er ook nog eens een groot gedeelte van de dataset frequent wordt gebruikt ontstaat er vanzelf meer disk I/O.
dus als de dataset kleiner blijft dan je werkgeheugen zit je goed met een wat mindere disk(array).
is misschien goed om te weten voor degenen met een relatief kleine dataset dat zou de keuze voor een grote array of meer ram makkelijker kunnen maken(als er een compromis gemaakt moet worden, en we blijven natuurlijk nederlanders he).
ACM Software Architect @Verwijderd20 april 2006 09:50
Dat is een te simpele conclusie. Je zit dan altijd nog met writes die altijd naar disk doorgestuurd moeten worden, etc.

In deze test wordt daarnaast minder in de database geschreven dan in onze productieomgeving. Dat zorgt er dus voor dat de data in de caches van de database en de diskcache van het OS minder snel verouderen en er dus ook om die reden minder diskactiviteit nodig is.

Maar ik denk dat je doorgaans met meer ram meer bereikt dan een versnelde I/O. Met name omdat ram tot op zekere hoogte relatief goedkoop is, terwijl I/O al vrij snel behoorlijk prijzig kan worden.
Desalniettemin moet je natuurlijk ook weer uitkijken met een onderbemeten I/O-systeem, want dan kan het zijn dat het wachten op writes zo lang duurt dat je alsnog daar problemen door ondervindt. :)
In veel gevallen kun je beter je geld in meer geheugen en snellere disks steken, dan snellere cpu's overigens. Tenzij je een kleine actieve dataset hebt (die dus volledig in het geheugen past) en je daar veel rekenintensieve queries op los wilt laten, uiteraard.
Er stond 600 kb/s dus het ligt dus duidelijk niet aan de harde schijven dan zou zelfs een eeuwenoude harddisk uit 1995 genoeg zijn die haalde ook al makelijk 4MB/s.

Maar een buffer is natuurlijk wel handig om wat sneller te zijn. En met een Raidset heb je meerdere schijfbuffers die veel sneller werken als het echte schijfoppervlak.

edit: - En wat hierboven al staat er zit ook nog RAM geheugen voor dus is de RAID-set niet echt nodig.
Er stond 600 kb/s dus het ligt dus duidelijk niet aan de harde schijven dan zou zelfs een eeuwenoude harddisk uit 1995 genoeg zijn die haalde ook al makelijk 4MB/s.
Transfer rate is (zeker in dit geval) niet de juiste manier om te meten hoe druk een HDD het heeft. Helaas geven alle/veel niet aan welk gedeelte van de tijd een HDD bezig of idle is.

Op dit item kan niet meer gereageerd worden.