Tenzij je een gezamenlijke inspanning hebt geleverd om het te negeren, heb je misschien gehoord dat Microsoft echt graag dat u een groot deel van uw SQL Server-database-infrastructuur naar een Microsoft-datacenter verplaatst, of u nu naar een Azure SQL-database gaat (die ik hier onlangs heb besproken), of dat u deze host op een Windows Azure Virtual Machine. Microsoft noemt deze persistente virtuele machines computing instances , en ze hebben twee hoofdlagen om uit te kiezen, waaronder de Basic Compute Tier en de Standard Compute Tier. Ze beschrijven deze twee niveaus als:
Basic Compute-tier :deze nieuwe laag met rekeninstanties is qua configuratie vergelijkbaar met de standaardlaag met lagere prijzen. Deze instanties bevatten geen load balancer en automatisch schalen. Ze zijn zeer geschikt voor productietoepassingen met één instantie, ontwikkelingsworkloads, testservers en batchverwerkingstoepassingen waarvoor deze functies mogelijk niet nodig zijn. De basis compute-laag is momenteel alleen beschikbaar voor de General Purpose Instances. Deze instanties variëren van Basic A0 tot Basic A4.
Standaard Compute-laag :Deze laag van rekeninstanties biedt een optimale set reken-, geheugen- en I/O-resources voor het uitvoeren van een breed scala aan toepassingen. Deze instances bevatten zowel automatische schaling als load balancing-mogelijkheden zonder extra kosten. De standaard compute-laag is beschikbaar voor General Purpose, Memory Intensive en Compute Intensive-instanties. Deze instanties variëren van Standaard A0 tot Standaard A7.
Er zijn verschillende belangrijke voordelen verbonden aan het hosten van uw SQL Server-infrastructuur op een Windows Azure Virtual Machine. Ten eerste heb je geen kapitaalkosten voor opslag of hardware, en ook geen doorlopend onderhoud van de opslag of hardware. Ten tweede heb je geen OS- of SQL Server-licentiekosten (wanneer je een SQL-image uit de standaard Azure VM-galerij gebruikt). Ten derde kunt u binnen een paar minuten een nieuwe Azure-VM maken waarop SQL Server al is geïnstalleerd (ook al kan het wat langer duren om het besturingssysteem en de SQL Server-instantie volledig naar uw exacte vereisten te configureren). In de toekomst is het nog steeds aan jou om Windows- en SQL Server-updates te installeren, maar je hoeft je geen zorgen te maken over zaken als firmware, BIOS of driverupdates.
Als u Windows Azure Virtual Machines wilt gebruiken om uw SQL Server-infrastructuur of een deel ervan te hosten, moet u op de hoogte zijn van de huidige prijsgegevens die beschikbaar zijn voor het specifieke Azure-datacenter waarop u uw virtuele machines wilt hosten, aangezien de prijzen kunnen verschillen tussen verschillende Microsoft-datacenters. Microsoft heeft momenteel 13 verschillende virtuele Windows Azure-machinegroottes, zoals beschreven in hun Virtual Machine and Cloud Service Sizes for Azure-pagina. Microsoft verlaagde op 1 mei 2014 de prijs per uur voor de geheugenintensieve instanties (Standaard A5, Standard A6 en Standard A7) met 18% in de meeste van hun datacenters, en de prijzen in tabel 1 weerspiegelen die nieuwe, lagere prijzen.
De Single-Core Score en de Multi-Core Score in de twee rechterkolommen van Tabel 1 zijn de gemiddelde scores die ik heb waargenomen met de 32-bits versie van de Geekbench 3.05 processor en geheugenbenchmark op een voorbeeld van een Windows Server 2012 R2 Datacenter VM in het datacenter in het oosten van de VS. Deze scores kunnen al dan niet representatief zijn voor wat u zult zien.
VM-grootte | CPU-kernen | Geheugen (GB) | Uurkosten | Maandelijkse kosten | Single-Core Score | Multi-Core-score |
---|---|---|---|---|---|---|
Basis A0 | 1 (gedeeld) | 0,75 | $ 0,018 | ~$14 | 507 | 498 |
Basis A1 | 1 | 1,75 | $ 0,074 | ~$56 | 679 | 670 |
Basis A2 | 2 | 3,50 | $ 0,148 | ~$111 | 709 | 1.358 |
Basis A3 | 4 | 7.00 | $0,296 | ~$221 | 717 | 2.472 |
Basis A4 | 8 | 14.00 | $ 0,592 | ~$441 | 724 | 4042 |
Standaard A0 | 1 (gedeeld) | 0,75 | $ 0,020 | ~$15 | 492 | 502 |
Standaard A1 | 1 | 1,75 | $0,090 | ~$67 | 1068 | 1083 |
Standaard A2 | 2 | 3,50 | $ 0,180 | ~$134 | 1069 | 2.002 |
Standaard A3 | 4 | 7.00 | $ 0,360 | ~$268 | 1070 | 3.593 |
Standaard A4 | 8 | 14.00 | $ 0,720 | ~$536 | 1094 | 6.446 |
Standaard A5 | 2 | 14.00 | $ 0,330 | ~$246 | 1.080 | 2.026 |
Standaard A6 | 4 | 28,00 | $ 0,660 | ~$492 | 1.080 | 3.686 |
Standaard A7 | 8 | 56,00 | $1.320 | ~$983 | 1056 | 6.185 |
Tabel 1:Geselecteerde specificaties van virtuele machines voor Windows Azure in het datacenter in het oosten van de VS
Momenteel heeft Microsoft negen datacenters die nieuwe persistente virtuele machines kunnen hosten, waaronder VS-Oost, VS-West, Brazilië-Zuid (preview), Noord-Europa, West-Europa, Oost-Azië, Zuidoost-Azië, Japan West en Japan Oost. Volgens Microsoft is "A1 de kleinste grootte die wordt aanbevolen voor productieworkloads", en moet u "een virtuele machine met 4 of 8 CPU-kernen selecteren bij gebruik van SQL Server Enterprise Edition." Een nuttige, zij het wat gedateerde referentie voor het uitvoeren van SQL Server op een Windows Azure Virtual Machine is de Performance Guidance for SQL Server in Windows Azure Virtual Machines die in juni 2013 werd gepubliceerd.
Kenmerken van Windows Azure Virtual Machine
Als u naar de CPU-eigenschappen kijkt op het tabblad Prestaties in Taakbeheer van Windows Server 2012 R2 (in Afbeelding 1 en Afbeelding 2), zult u merken dat het rapporteert dat het een relatief oude, 45nm AMD Opteron 4171 HE-processor gebruikt, die draait op een snelheid van 2,1 GHz. Deze specifieke processor met zes kernen werd in juni 2010 geïntroduceerd als onderdeel van de Lissabon-familie met twee sockets. Het HE-achtervoegsel betekent dat het een "low-powered" energie-efficiënt model is dat geen goede keuze is voor SQL Server-gebruik, omdat het een aanzienlijke hoeveelheid prestaties inlevert voor een relatief kleine hoeveelheid verminderd energieverbruik. Na wat speurwerk is mij verteld dat deze processor een speciale OEM-processor is voor Microsoft-datacenters.
Figuur 1:Basic A0 virtuele machine in gegevens uit Oost-V.S. Midden
Figuur 2:Standaard A7 virtuele machine in gegevens uit Oost-V.S. Midden
Het andere grote probleem met deze processor, naast zijn leeftijd en relatief slechte single-threaded prestaties, is het feit dat hij slechts zes fysieke kernen heeft. Dit is een probleem met de VM-grootten Basic A4, Standard A4 en Standard A7, die twee NUMA-knooppunten en acht totale fysieke kernen hebben. Dit zou betekenen dat een VM van die grootte een NUMA-knooppunt op de onderliggende fysieke host zou passeren, wat geen goed idee is voor de geheugenprestaties. Ik kan moeilijk geloven dat Microsoft dit expres zou doen. Ik kan ook moeilijk geloven dat elke afzonderlijke Azure-VM in elk afzonderlijk datacenter dat ik tot nu toe heb geprobeerd, exact dezelfde oudere AMD-processor gebruikt. Het is vrij algemeen bekend dat Microsoft ten minste drie verschillende generaties hardware heeft (Gen 1, Gen 2 en Gen 3) die ze tot nu toe hebben gebruikt in hun Azure-datacenters, met verschillende VM-prestaties. Na wat meer navraag heb ik ontdekt dat deze AMD Opteron 4171 HE-processor een Azure Gen 2-processor is.
U kunt hier door de Geekbench 3 online database met geüploade benchmarkresultaten bladeren, op zoek naar systemen die de AMD Opteron 4171 HE-processor gebruiken. Je zult misschien merken dat elk resultaat voor deze processor lijkt te zijn voor een Microsoft Virtual Machine, wat ook best merkwaardig is. Windows Server 2012 R2 Task Manager rapporteert de L1-cache als "N/A" en vermeldt zelfs niet de L2- en L3-cachegroottes op deze Azure-VM's. Een ander merkwaardig bewijs is het feit dat de Standard Instances ongeveer 50% hogere Geekbench 3-scores hebben dan de equivalente Basic Instances wanneer ze exact dezelfde totale processorcore-tellingen en geheugengroottes hebben, voor zowel de Single-Core-score als Multi-Core scoren. Dit grote verschil heeft geen enkele zin als de onderliggende hostmachine daadwerkelijk dezelfde processor gebruikt.
Samenvatting
Al dit bewijs leidde me aanvankelijk tot de conclusie dat Microsoft waarschijnlijk de eigenlijke processor in de hostmachine verduisterde. Ik dacht dat ze dit misschien deden om te voorkomen dat mensen met opzet meerdere VM's inrichten totdat ze toevallig een VM op nieuwere, snellere hosthardware krijgen. Het blijkt dat Microsoft niet zo slim is. Ik ben er zeker van dat Microsoft de identiteit van de CPU in een Azure-VM niet verandert. Er zijn nieuwere Azure Gen 3-processors die u in een Azure-VM kunt krijgen, aangezien u in de toekomst nieuwe VM's inricht. Een andere mogelijke reden voor mijn resultaten was dat ze waarschijnlijk een soort van governance gebruiken om de VM-prestaties te beperken tot een betrouwbaar, uniform niveau, ongeacht de onderliggende hosthardware, zodat ze in de loop van de tijd meer VM's kunnen hosten op minder hardware. Dit zou een slimme manier van handelen zijn voor een IaaS-hoster.
De relatief lage Geekbench 3.05-scores (zie afbeelding 3) voor zelfs de grootste Azure-VM's betekent dat u een aanzienlijke hoeveelheid processor- en geheugenprestaties opgeeft in vergelijking met een gelijkwaardige fysieke server met twee sockets met hetzelfde aantal processorcores en geheugen.
Figuur 3:32-bits Geekbench 3.05-resultaten voor Standard A4 virtuele machine in datacenter in het oosten van de VS
Veel SQL Server-workloads zullen perfect werken met dit niveau van VM-prestaties, zij het iets langzamer dan u misschien gewend bent. Als u rekening houdt met de besparingen op SQL Server 2014 Enterprise Edition-licenties van een acht-core machine, plus de capex voor een bescheiden server met twee sockets en de bijbehorende opslag, kunt u het zich veroorloven om een virtuele Standard A7-machine 24×7 te draaien voor ongeveer vijf tot zes jaar. Gezien dat soort ROI zie ik veel organisaties de economische beslissing nemen om ten minste een deel van hun SQL Server-infrastructuur naar Azure Virtual Machines te verplaatsen. Zolang uw werklast op een VM van 56 GB of kleiner kan worden uitgevoerd, en zolang minder CPU- en geheugenprestaties dan een typische recente vintage laptop ook acceptabel zijn, is dit een rationele manier van handelen. Microsoft heeft onlangs de beschikbaarheid aangekondigd van grotere, veel snellere A8- en A9 VM Compute Intensive Instances, die Intel Xeon E5-2670-processors gebruiken. Dit zal een enorme prestatieverbetering zijn ten opzichte van de Azure Gen 2-processors.
In een volgend artikel zal ik de I/O-prestaties in Azure Virtual Machines bekijken.