Prestazioni del disco lente su Azure Virtual Machine


9

Va bene, quindi prima di tutto, permettimi di dire che non sono una persona operativa, ma uno sviluppatore. Quindi vado in un po 'di terra sconosciuta qui, quindi per favore abbi pazienza con me.

Vorrei usare una macchina virtuale di Azure per estrarre un file XML da 50 GB da un file zip da 1,9 GB. Quindi ho testato quale dimensione dell'istanza su Azure dovrei usare per ottenere buone prestazioni senza pagare più del necessario.

Tuttavia, le prestazioni del disco delle macchine virtuali di Azure non sono state sorprendenti e vorrei sapere se sono io a fare qualcosa di sbagliato o se i miei risultati sono quelli che ci si può aspettare.

Prima di tutto, con cosa ho testato? Ho un'applicazione console .NET personalizzata che non fa altro che prendere un file zip come argomento e inizia immediatamente a estrarre il file zip nella stessa directory in cui si trova il file zip. Mentre l'estrazione è in corso, l'applicazione calcola quanti megabyte l'applicazione ha scritto nel file di destinazione al secondo e l'output.

Sulla mia macchina di sviluppo locale, ottengo prestazioni abbastanza buone con questa applicazione, scritta 160-210 MB / s. Quindi l'intero processo di estrazione dura circa 8 minuti. Le specifiche della mia macchina locale sono Intel Core i7 950, 3 GHz, 4 core (8 logici), 12 GB RAM, Samsung SSD 830 serie 250 GB.

Ok, quindi ho iniziato a testare diverse dimensioni di istanza ed ecco i miei risultati.

  • In un'istanza A4 con Windows Server 2012 Datacenter R2 (8 core, 14 GB RAM) con un RAID con striping di 4 dischi virtuali che utilizzano lo stesso account di archiviazione, senza memorizzazione nella cache dell'host, ho ottenuto 30-35 MB / s costanti, il che significa che l'intero l'estrazione ha richiesto 24 minuti e 48 secondi. Ho anche provato ad abilitare la memorizzazione nella cache dell'host, ma non ha fatto alcuna differenza.
  • In un'istanza D4 con Windows Server 2012 Datacenter (8 core, 28 GB di RAM, disco SSD locale da 500 GB) ho ottenuto prestazioni davvero buone (150+ MB / s) per i primi minuti, quindi con prestazioni variabili con picchi a 200 MB / se e valli a 9 MB / s. Le prestazioni medie sono state tra 70 e 100 MB / s. L'estrazione ha richiesto 9 minuti e 40 secondi.
  • In un'istanza D3 con Windows Server 2012 Datacenter (4 core, 14 GB RAM, disco SSD locale da 250 GB) ho ottenuto prestazioni davvero buone (150+ MB / s) al primo minuto, ma poi le prestazioni sono scese a 20-40 MB costanti / s, facendo in modo che il processo di estrazione impieghi 21 minuti e 49 secondi.

Su un'istanza D2 e ​​D1, le prestazioni del disco sono peggiori rispetto alla D3.

E questo mi sorprende davvero. Come può un disco SSD locale funzionare così male, come fa sulle istanze D1, D2 e ​​D3? E qualcuno sa perché le prestazioni del disco differiscono così tanto tra D1 e D4? È un problema di memoria? Quando guardo il task manager mentre l'OS di estrazione è in corso, l'utilizzo della memoria sta esplodendo. Sospetto sia perché Windows sta memorizzando nella cache i dati scritti, ma quando la memoria si esaurisce, deve scaricare i dati sul disco. Quando ciò accade, le prestazioni del disco diminuiscono. Ma ciò non accade sul mio computer locale, quindi perché è necessaria una cache così aggressiva su queste VM?

So che ci sono differenze tra la mia macchina locale e una macchina virtuale ospitata in Azure, ma le prestazioni del disco che sto riscontrando sono davvero prevedibili?

(Inizialmente avevo pubblicato la mia domanda su StackOverflow , poiché sospettavo fosse la causa della mia applicazione. Ma non ne sono più così sicuro)

Risposte:


7

Un po 'tardi alla festa qui, ma per quello che vale SSD "collegati" in Azure hanno i loro IOP limitati in base alle dimensioni della macchina. Non è stato menzionato nei prezzi da nessuna parte, ma ho sollevato questo problema come biglietto con supporto tecnico quando mi hanno indirizzato al post sul blog qui sotto.

Vedi questo link: http://azure.microsoft.com/blog/2014/10/06/d-series-performance-expectations/


Informazioni fantastiche, grazie Richard! Sospettavo che avesse a che fare con la limitazione, ma in quel momento non riuscivo a trovare informazioni specifiche al riguardo. Quel post sul blog risponde alle mie domande.
René,

disco limite azzurro io..che diamine..passo su google cloud..non lo limitano e il prezzo è molto più economico.
Tyan

4

Forse non è legato alla memoria. I dischi "fisici" in Azure usano quello che viene chiamato archiviazione BLOB e questo è il motivo per cui le prestazioni non sono le stesse del computer locale anche con hardware simile. Puoi trovare maggiori informazioni su questo link . Questo sembra essere un problema comune per la comunità di SQL Server che si basa fortemente sulle prestazioni del disco. Citerò un articolo che ho trovato al riguardo

La Guida alle prestazioni per SQL Server nelle macchine virtuali di Azure VM menziona (alle pagine 15 e 26) che nelle macchine virtuali di Azure è possibile usare gli spazi di archiviazione per migliorare le prestazioni di archiviazione per i carichi di lavoro di SQL Server

Spazi di archiviazione è una funzionalità integrata di Windows Server 2012 che consente di utilizzare diversi dischi fisici per creare un singolo disco virtuale, quindi come soluzione per le limitazioni I / O del disco VM stesso. Citando di nuovo:

Con macchine virtuali più grandi che supportano molti (fino a 16) dischi fisici, è possibile un aumento molto significativo delle prestazioni di archiviazione. Questo può abilitare Azure come piattaforma praticabile per molti carichi di lavoro SQL che altrimenti sarebbero troppo limitati dalle prestazioni di I / O di un singolo disco di Azure.

Questo articolo ti mostrerà i passaggi per creare uno spazio di archiviazione.

Dovresti provare prima questo. Probabilmente puoi anche usare un'istanza più piccola poiché il servizio di archiviazione è un servizio separato dall'istanza stessa.


Hai ragione sul fatto che i dischi standard su Azure usano effettivamente l'archiviazione BLOB, ma non credo che sia il caso dei dischi SSD. Secondo le informazioni fornite dalla mia Microsoft, si tratta di dischi SSD fisici locali. E in questo caso, penso che sia strano che le prestazioni differiscano così tanto tra le dimensioni dell'istanza D. Per quanto riguarda gli spazi di archiviazione: l'ho esplorato e fatto alcuni test, ma sfortunatamente non mi ha dato alcun notevole miglioramento delle prestazioni. Alla fine, sono giunto alla conclusione che devo solo accettare che devo usare una dimensione di istanza più grande per questo compito.
René,

1
@ René hai avuto la possibilità di provare il nuovo Azure Storage Premium? Ci scusiamo per aver messo in discussione questo vecchio argomento, ma sono abbastanza curioso di vedere come si comporterebbe questo nuovo archivio nel tuo ambiente.
Bruno Faria,

Mi scuso per la risposta tardiva. Ottimo consiglio su Azure Storage Premium. Non l'ho provato perché non è ancora disponibile nella mia regione. Ma lo terrò d'occhio. Grazie ancora!
René,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.