Database
 sql >> Database >  >> RDS >> Database

Confronto delle prestazioni delle macchine virtuali Windows Azure, parte 1

A meno che tu non abbia fatto uno sforzo concertato per ignorarlo, potresti aver sentito che Microsoft l'avrebbe veramente come per te spostare gran parte della tua infrastruttura di database di SQL Server in un data center Microsoft, sia che tu vada a un database SQL di Azure (di cui ho discusso di recente qui), sia che lo ospiti su una macchina virtuale Windows Azure. Microsoft chiama queste macchine virtuali persistenti istanze di calcolo e hanno due livelli principali tra cui scegliere, che includono il livello di calcolo di base e il livello di calcolo standard. Descrivono questi due livelli come:

Livello di calcolo di base :questo nuovo livello di istanze di calcolo è simile nella configurazione al livello Standard con prezzi inferiori. Queste istanze non includono il servizio di bilanciamento del carico e la scalabilità automatica. Sono adatti per applicazioni di produzione a istanza singola, carichi di lavoro di sviluppo, server di test e applicazioni di elaborazione batch che potrebbero non richiedere queste funzionalità. Il livello di calcolo di base è attualmente disponibile solo per le istanze per uso generico. Queste istanze vanno da Basic A0 a Basic A4.

Livello di calcolo standard :questo livello di istanze di calcolo fornisce un insieme ottimale di risorse di calcolo, memoria e I/O per l'esecuzione di un'ampia gamma di applicazioni. Queste istanze includono funzionalità di ridimensionamento automatico e bilanciamento del carico senza costi aggiuntivi. Il livello di calcolo standard è disponibile in istanze per uso generico, ad alta intensità di memoria e ad alta intensità di calcolo. Queste istanze vanno da Standard A0 a Standard A7.

L'hosting dell'infrastruttura SQL Server in una macchina virtuale Windows Azure presenta numerosi vantaggi importanti. In primo luogo, non hai costi di capitale per lo storage o l'hardware, oltre a nessuna manutenzione continua dello storage o dell'hardware. In secondo luogo, non hai costi di licenza del sistema operativo o di SQL Server (quando usi un'immagine SQL dalla raccolta di macchine virtuali di Azure standard). In terzo luogo, puoi creare una nuova macchina virtuale di Azure in cui è già installato SQL Server in pochi minuti (anche se la configurazione completa del sistema operativo e dell'istanza di SQL Server in base ai tuoi requisiti esatti potrebbe richiedere un po' più di tempo). In futuro, starà ancora a te installare gli aggiornamenti di Windows e SQL Server, ma non dovrai preoccuparti di cose come firmware, BIOS o aggiornamenti dei driver.

Se si desidera utilizzare le macchine virtuali di Windows Azure per ospitare tutta o parte dell'infrastruttura SQL Server, è necessario essere a conoscenza dei dettagli sui prezzi correnti disponibili per il data center di Azure specifico in cui si desidera ospitare le macchine virtuali, poiché i prezzi possono variano tra i diversi data center Microsoft. Microsoft ha attualmente 13 diverse dimensioni di macchina virtuale Windows Azure, come descritto in dettaglio nella pagina Dimensioni macchina virtuale e servizio cloud per Azure. Microsoft ha ridotto del 18% il prezzo orario per le istanze ad alta intensità di memoria (Standard A5, Standard A6 e Standard A7) nella maggior parte dei data center il 1 maggio 2014 e il prezzo mostrato nella tabella 1 riflette i nuovi prezzi più bassi.

Il punteggio single-core e il punteggio multi-core nelle due colonne di destra della tabella 1 sono i punteggi medi che ho osservato utilizzando la versione a 32 bit del processore Geekbench 3.05 e benchmark di memoria su un datacenter di Windows Server 2012 R2 di esempio VM nel data center degli Stati Uniti orientali. Questi punteggi possono essere o meno rappresentativi di ciò che vedrai.

Dimensione VM CPU Core Memoria (GB) Costo orario Costo mensile Punteggio single-core Punteggio multicore
A0 di base 1 (condivisa) 0,75 $ 0,018 ~$14 507 498
A1 di base 1 1,75 $ 0,074 ~$56 679 670
A2 di base 2 3.50 $ 0,148 ~$111 709 1.358
A3 di base 4 7:00 $ 0,296 ~$221 717 2.472
A4 di base 8 14:00 $ 0,592 ~$441 724 4.042
Standard A0 1 (condivisa) 0,75 $ 0,020 ~$15 492 502
Standard A1 1 1,75 $ 0,090 ~$67 1.068 1.083
Standard A2 2 3.50 $ 0,180 ~$134 1.069 2.002
Standard A3 4 7:00 $ 0,360 ~$268 1.070 3.593
Standard A4 8 14:00 $ 0,720 ~$536 1.094 6.446
Standard A5 2 14:00 $ 0,330 ~$246 1.080 2.026
Standard A6 4 28.00 $ 0,660 ~$492 1.080 3.686
Standard A7 8 56.00 $ 1.320 ~$983 1.056 6.185

Tabella 1:specifiche delle macchine virtuali selezionate per Windows Azure nel data center degli Stati Uniti orientali

Attualmente, Microsoft dispone di nove data center che possono ospitare nuove macchine virtuali persistenti, che includono Stati Uniti orientali, Stati Uniti occidentali, Brasile meridionale (anteprima), Europa settentrionale, Europa occidentale, Asia orientale, Asia sud-orientale, Giappone occidentale e Giappone orientale. Secondo Microsoft, "A1 è la dimensione più piccola consigliata per i carichi di lavoro di produzione" ed è necessario selezionare "una macchina virtuale con 4 o 8 core CPU quando si utilizza SQL Server Enterprise Edition". Un riferimento utile, anche se un po' datato, per l'esecuzione di SQL Server su una macchina virtuale Windows Azure è la Performance Guidance for SQL Server in Windows Azure Virtual Machines, pubblicata a giugno 2013.

Caratteristiche della macchina virtuale Windows Azure

Quando si esaminano le proprietà della CPU nella scheda Prestazioni in Task Manager di Windows Server 2012 R2 (nella Figura 1 e nella Figura 2), si noterà che segnala che sta utilizzando un processore AMD Opteron 4171 HE a 45 nm relativamente vecchio, in esecuzione a una velocità di 2,1 GHz. Questo particolare processore a sei core è stato introdotto nel giugno del 2010, come parte della famiglia Lisbon a due socket. Il suffisso HE significa che si tratta di un modello di efficienza energetica "a bassa potenza" che non è una buona scelta per l'utilizzo di SQL Server, poiché rinuncia a una quantità significativa di prestazioni per una quantità relativamente piccola di consumo energetico ridotto. Dopo aver scavato un po', mi è stato detto che questo processore è uno speciale processore OEM per i data center Microsoft.


Figura 1:macchina virtuale A0 di base nei dati degli Stati Uniti orientali Centro


Figura 2:macchina virtuale A7 standard nei dati degli Stati Uniti orientali Centro

L'altro grosso problema con questo processore oltre alla sua età e alle prestazioni single-thread relativamente scarse è il fatto che ha solo sei core fisici. Questo è un problema con le dimensioni VM Basic A4, Standard A4 e Standard A7, che hanno due nodi NUMA e otto core fisici totali. Ciò significherebbe che una macchina virtuale di quelle dimensioni attraverserebbe un nodo NUMA sull'host fisico sottostante, il che non è una buona idea per le prestazioni della memoria. Ho difficoltà a credere che Microsoft lo farebbe apposta. Ho anche difficoltà a credere che ogni singola macchina virtuale di Azure in ogni singolo data center che ho provato finora utilizzi lo stesso identico vecchio processore AMD. È risaputo che Microsoft ha almeno tre diverse generazioni di hardware (Gen 1, Gen 2 e Gen 3) che hanno utilizzato finora nei data center di Azure, offrendo prestazioni di macchine virtuali diverse. Dopo alcune altre domande, ho scoperto che questo processore AMD Opteron 4171 HE è un processore Azure Gen 2.

Puoi sfogliare il database online di Geekbench 3 dei risultati dei benchmark caricati, cercando i sistemi che utilizzano il processore AMD Opteron 4171 HE qui. Potresti notare che ogni singolo risultato per questo processore sembra essere per una macchina virtuale Microsoft, il che è anche piuttosto curioso. Task Manager di Windows Server 2012 R2 segnala la cache L1 come "N/D" e non elenca nemmeno le dimensioni della cache L2 e L3 in queste macchine virtuali di Azure. Un'altra prova curiosa è il fatto che le istanze standard hanno punteggi Geekbench 3 circa il 50% più alti rispetto alle istanze base equivalenti quando hanno esattamente lo stesso numero di core del processore e dimensioni di memoria, sia per il punteggio Single-Core che per Multi-Core punto. Questa grande variazione non ha alcun senso se la macchina host sottostante sta effettivamente utilizzando lo stesso processore.

Riepilogo

Tutte queste prove inizialmente mi hanno portato alla conclusione che Microsoft stava probabilmente oscurando il processore effettivo nella macchina host. Ho pensato che potrebbero farlo per cercare di impedire alle persone di eseguire il provisioning di più VM di proposito fino a quando non ottengono che una VM sia in esecuzione su hardware host più nuovo e più veloce. Si scopre che Microsoft non è così intelligente. Mi è stato assicurato che Microsoft non altera l'identità della CPU in una macchina virtuale di Azure. Sono disponibili processori Azure di terza generazione più recenti che puoi ottenere in una macchina virtuale di Azure, poiché esegui il provisioning di nuove macchine virtuali in futuro. Un'altra possibile ragione dei miei risultati è che probabilmente stanno utilizzando una sorta di governance per limitare le prestazioni delle macchine virtuali a un livello affidabile e uniforme, indipendentemente dall'hardware host sottostante, in modo che possano ospitare più macchine virtuali su meno hardware nel tempo. Questa sarebbe una linea d'azione intelligente per un hoster IaaS.

I punteggi relativamente bassi di Geekbench 3.05 (vedi figura 3) anche per le macchine virtuali di Azure più grandi significano che stai rinunciando a una quantità significativa di prestazioni di processore e memoria rispetto a un server fisico equivalente a due socket con lo stesso numero di core del processore e memoria.


Figura 3:risultati Geekbench 3.05 a 32 bit per Standard Macchina virtuale A4 nel data center degli Stati Uniti orientali

Molti carichi di lavoro di SQL Server funzioneranno perfettamente con questo livello di prestazioni della macchina virtuale, anche se un po' più lentamente di quanto potresti essere abituato. Se si tiene conto dei risparmi sulla licenza di SQL Server 2014 Enterprise Edition da una macchina a otto core, più il capex per un server modesto a due socket e lo storage associato, potresti permetterti di eseguire una macchina virtuale A7 standard 24 ore su 24, 7 giorni su 7 per circa da cinque a sei anni. Dato questo tipo di ROI, vedo molte organizzazioni prendere la decisione economica di spostare almeno una parte della propria infrastruttura SQL Server in Macchine virtuali di Azure. Finché il tuo carico di lavoro può essere eseguito su una VM da 56 GB o inferiore e purché sia ​​accettabile anche avere prestazioni di CPU e memoria inferiori rispetto a un tipico laptop vintage recente, questa è una linea d'azione razionale. Microsoft ha recentemente annunciato la disponibilità di istanze VM Compute Intensive A8 e A9 più grandi e molto più veloci, che utilizzano processori Intel Xeon E5-2670. Questo sarà un enorme miglioramento delle prestazioni rispetto ai processori Azure Gen 2.

Darò un'occhiata alle prestazioni di I/O in Macchine virtuali di Azure in un prossimo articolo.