Effetti della memorizzazione nella cache sulle prestazioni del disco in Azure
Come per i computer locali, le prestazioni delle macchine virtuali spesso possono essere direttamente collegate alla velocità di lettura e scrittura dei dati della macchina virtuale. Per comprendere come migliorare tali prestazioni, è prima necessario comprendere come vengono misurate le prestazioni. Dobbiamo anche comprendere le impostazioni e le scelte che influiscono su tale misura.
È necessario esaminare in particolare i dischi e l'archiviazione sottostanti usati per le macchine virtuali. Quando si esaminano le prestazioni, tenere presente che è necessario considerare anche il livello dell'applicazione. Ad esempio, se si esegue un database in una macchina virtuale, si vogliono esaminare le impostazioni delle prestazioni specifiche per il database per assicurarsi che il database sia ottimizzato per la macchina virtuale e l'archiviazione in cui è in esecuzione.
Per iniziare, verranno definiti alcuni termini e le garanzie offerte da Azure al riguardo.
Operazioni di I/O al secondo
Il tipo di archiviazione selezionato (Standard o Premium) decide la velocità dei dischi. Queste prestazioni vengono misurate in termini di operazioni di I/O al secondo, o IOPS.
Le operazioni di I/O al secondo sono il numero di richieste che un disco può elaborare in un secondo. Una singola richiesta è un'operazione di lettura o scrittura. Questa misurazione viene applicata direttamente all'archiviazione. Ad esempio, se si dispone di un disco che può eseguire 5000 operazioni di I/O al secondo, significa che è teoricamente in grado di elaborare 5.000 operazioni di lettura e scrittura al secondo.
Nota
I fattori esterni, inclusa la latenza, possono influire sulle operazioni di I/O al secondo.
Le operazioni di I/O al secondo influisce direttamente sulle prestazioni dell'applicazione. Alcune applicazioni, come i siti Web per la vendita al dettaglio, hanno bisogno di operazioni di I/O al secondo elevate per poter gestire tutte le richieste di I/O minime e casuali che devono essere elaborare rapidamente per mantenere il sito reattivo.
Operazioni di I/O al secondo in Azure
Quando si collega un disco di archiviazione Premium a una macchina virtuale a scalabilità elevata, Azure effettua automaticamente il provisioning di un numero garantito di operazioni di I/O al secondo, in base alla specifica del disco. Ad esempio, un disco P50 effettua il provisioning di 7500 operazioni di I/O al secondo. Ogni dimensione di macchina virtuale a scalabilità elevata prevede anche un limite di operazioni di I/O al secondo specifico sostenibile. Ad esempio, una macchina virtuale GS5 Standard ha un limite di 80.000 operazioni di I/O al secondo.
Le operazioni di I/O al secondo sono una misura delle prestazioni dei dischi; tuttavia, è un limite teorico . Esistono altri due fattori che possono influire sulle prestazioni effettive dell'applicazione: velocità effettiva e latenza.
Qual è la velocità effettiva?
La velocità effettiva è la quantità di dati che l'applicazione invia ai dischi di archiviazione in un intervallo specificato (in genere al secondo). Se l'applicazione esegue operazioni di I/O con blocchi di dati di grandi dimensioni, richiede una velocità effettiva elevata.
Azure effettua il provisioning della velocità effettiva in dischi di archiviazione Premium in base alla specifica di ogni disco. Ad esempio, un disco P50 effettua il provisioning di una velocità effettiva del disco di 250 MB al secondo. Ogni dimensione di macchina virtuale a scalabilità elevata prevede anche un limite di velocità effettiva specifico sostenibile. Ad esempio, una macchina virtuale GS5 Standard ha una velocità effettiva massima di 2.000 MB al secondo.
Operazioni di I/O al secondo e velocità effettiva
La velocità effettiva e le operazioni di I/O al secondo hanno una relazione diretta e la modifica di una ha un effetto diretto sull'altro. Per ottenere un limite teorico di velocità effettiva, è possibile usare questa formula: IOPS x I/O size = throughput
. È importante tenere presenti entrambi i valori quando si pianifica l'applicazione.
Che cos'è la latenza?
La lettura e la scrittura di dati richiedono tempo. La latenza è il tempo necessario per l'app per inviare una richiesta al disco e ottenere una risposta. In pratica, la latenza indica il tempo necessario per elaborare una singola richiesta di I/O di lettura o scrittura.
La latenza limita le operazioni di I/O al secondo. Ad esempio, se il disco può gestire 5000 operazioni di I/O al secondo, ma ogni operazione richiede 10 ms per l'elaborazione, l'app viene limitata a 500 operazioni al secondo a causa del tempo di elaborazione. Questo esempio è una semplice illustrazione; la maggior parte della latenza temporale è notevolmente inferiore. In definitiva, la latenza e la velocità effettiva determinano la velocità con cui l'app può elaborare i dati dall'archiviazione.
L'archiviazione Premium offre latenze coerentemente ridotte ed è possibile ottenere una latenza ancora migliore in caso di necessità tramite la memorizzazione nella cache.
Testare le prestazioni dei dischi
È possibile modificare e bilanciare le operazioni di I/O al secondo, la velocità effettiva e la latenza dei dischi delle macchine virtuali selezionando il tipo di archiviazione e le dimensioni di macchina virtuale più appropriati. In genere, le dimensioni maggiori o più costose delle macchine virtuali hanno garanzie più elevate per il numero massimo di operazioni di I/O al secondo e velocità effettiva. Aggiungendo a questa equazione anche la scelta tra archiviazione Standard e Premium e tra unità HDD e SSD, sarà possibile valutare le prestazioni provando diversi parametri.
La selezione della combinazione più appropriata implica la conoscenza dei requisiti dell'applicazione. Le applicazioni di I/O elevate, ad esempio server di database o sistemi di elaborazione transazionale online, richiedono operazioni di I/O al secondo più elevate, mentre più applicazioni basate sul calcolo potrebbero ottenere con requisiti inferiori. Inoltre, i tipi di operazioni eseguite dalle applicazioni influiscono sulla velocità effettiva. L'I/O ad accesso casuale elevato tende a essere più lento rispetto alle letture sequenziali prolungate.
Dopo aver selezionato la configurazione, è possibile usare strumenti come Iometer per testare le prestazioni del disco nelle macchine virtuali Windows e Linux. Questo test offre un senso più reale di quale tipo di prestazioni aspettarsi. e facilita l'identificazione dei metodi più efficienti per l'uso delle risorse di archiviazione da parte dell'app. Un'applicazione che esegue operazioni di I/O a thread singolo, ad esempio, offrirà probabilmente prestazioni di I/O ridotte a causa della latenza.
Nell'unità successiva verranno esaminate altre operazioni che è possibile eseguire per migliorare le prestazioni del disco.