In een jaarlijks rapport zet Cockroach Labs voor het eerst AWS, GCP en Azure tegenover elkaar in een uitgebreid prestatie-onderzoek aan de hand van benchmarks. De tests demonstreren hoezeer de drie grote providers in een nek-aan-nek-race verwikkeld blijven, al zijn er in de meeste gevallen duidelijke winnaars en verliezers.
Cockroach Labs brengt al enkele jaren een rapport op basis van vergelijkende tests bij verschillende cloudproviders uit. Dit jaar draaide het bedrijf meer dan 1.000 benchmarks bij de drie grote cloudproviders: Google met het Google Cloud Platform, Amazon met AWS en voor het eerst ook Microsoft met Azure. De tests focusten op respectievelijk compute, netwerk en opslag. Uit het rapport blijkt dat er geen eenduidige winnaar is, maar dat iedere provider in een categorie een beker kan wegkapen.
Cockroach Labs maakte zijn werk van het onderzoek. Onderzoekers draaiden objectieve benchmarktests op een verzameling aan vergelijkbare instances over alle cloudomgevingen heen. Wie wil kan de resultaten zelf reproduceren aan de hand van de scripts in het Github-repo. In het rapport bespreken de onderzoekers uitvoerig de resultaten, voordat ze voor iedere provider een aggregaat maken. In dit stuk focussen we op de analyse per provider en niet per instance.
Compute
In compute blijkt Azure dit jaar de absolute kampioen. Gekeken naar prestaties in instances met 16 vCPU’s steekt Microsofts cloud er met kop en schouders bovenuit. Reden hiervoor lijkt hoe de vCPU’s geprovisioneerd worden. GCP en AWS kiezen voor 16 threads afkomstig van 8 cpu’s met multithreading, terwijl je in Azure 16 threads op 16 single threaded-cpu’s krijgt. 16 kernen is altijd beter dan 16 threads op 8 kernen, en dat laat zich merken in de resultaten.
De testers waarschuwen ervoor dat de impact van hyperthreading kan verschillen al naargelang de workloads die je in het echte leven gebruikt. Cockroach Labs merkt verder op dat de kloksnelheid vrij evenredig correleert met de prestaties van een instance. De klokfrequentie is dus zoals verwacht een goede indicator voor de te verwachten prestaties.
Netwerk
In netwerkland krijgt Google dan weer de kroon. Daarvoor kijkt Cockroach Labs naar zowel throughput als latency. Het verschil tussen de drie cloudproviders is verrassend groot. Google leidt in zowel throughput als latency, terwijl Azure in beide gevallen het kneusje is. Gaat het over de sequentiële transfer van grote hoeveelheden data, dan doet GCP het bijna dubbel zo goed als AWS. Dat is opvallend aangezien AWS vorig jaar nog de beste presteerder was.
Het verschil is minder groot wanneer Cockroach Labs naar de latency kijkt. Opnieuw is Google kampioen, maar het verschil met AWS is niet zo groot. Azure doet het verrassend vijf keer slechter dan de andere twee. Voor de leken: latency kan je kort door de bocht zien als de responstijd wanneer je een pakketje stuurt, lager is in dit geval met andere woorden beter.
Cockroach onderzoekt de netwerkprestaties in de publieke cloudomgeving zelf, van instance naar instance. De netwerkconnectiviteit tussen cloud en eindgebruiker is afhankelijk van andere zaken. Daar presteert AWS volgens onderzoek slechter.
Opslag
Voor opslag kijkt Cockroach Labs naar zowel sequentiële snelheden als I/O-operaties per seconde (IOPS). Lezen en schrijven worden afzonderlijk geanalyseerd. Opslag geeft de minst eenduidige resultaten. De tests wijzen op een groot verschil tussen type lees- of schrijfopdracht, provider en instance. Over het algemeen kan je stellen dat AWS het best presteert op vlak van opslag.
Kijken we naar schrijfprestaties, dan is AWS beter dan GCP, dat op zijn beurt beter presteert dan Azure, tot en met vier schrijfthreads. Zodra je meer simultaan wil wegschrijven, plafonneren de eerste twee providers. Azure laat je toe om te schalen tot 16 threads, waardoor het de andere providers op een bepaald punt ver achter zich laat. Het type workload is hier dus erg belangrijk. Wanneer je veel simultane schrijfthreads hebt, wint Azure, maar prestatie per thread is AWS de beste.
Leesprestaties zorgen voor een duidelijker beeld. AWS is veruit de beste. Tot en met vier threads is het verschil tussen de providers niet zo groot, maar vanaf dan laat AWS de concurrenten ver achter zich. Azure en GCP lijken niet verder dan 8 leesthreads te kunnen schakelen, AWS bolt vrolijk door tot 64.
We betrekken ook latency bij het verhaal, en zien dat AWS in alle gevallen de laagste biedt, zowel voor lezen als schrijven. Azure doet het zekere bij zwaardere workloads het slechtst.
Gecombineerde prestaties
Cockroach Labs sluit het rapport af met een test die de totale prestatie van een gegeven provider voor een realistische workload moet schetsen. Het bedrijf kiest hier voor TPC-C: een benchmarktool voor e-commerceworkloads met een focus op simultane transacties. De keuze is niet verwonderlijk, aangezien het bedrijf zelf vooral in die sector actief is.
Zoals vaak bij tests, zijn de verschillen in de realistische test minder uitgesproken dan bij de individuele benchmarks. De beste prestaties vind je bij AWS, maar het verschil met Azure en GCP is erg klein. De vraag is dan waar je het meeste waar voor je geld krijgt. Die metric is voor veel gebruikers vermoedelijk belangrijker dan rauwe prestaties. Cockroach Labs waarschuwt zelf dat de analyse hier slechts een ruw beeld geeft, aangezien pricing bij de drie cloudproviders erg dynamisch is en van bedrijf tot bedrijf kan afhangen.
Toch vinden we de analyse leuk en geven we de resultaten mee. Opnieuw is er weinig verschil, al lijkt Google de goedkoopste optie te geven. Specifiek geeft GCP’s n2-highcpu-16-instance je het meeste pk’s per dollar.