Prestazioni di macchine virtuali e dischi
Si applica a: ✔️ macchine virtuali Linux ✔️ macchine virtuali Windows ✔️ set di scalabilità flessibili ✔️ set di scalabilità uniformi
Questo articolo consente di chiarire le prestazioni del disco e come funziona quando si combinano dischi di Azure Macchine virtuali e Azure. Descrive anche come diagnosticare i colli di bottiglia per l'I/O del disco e le modifiche che è possibile apportare per ottimizzare le prestazioni.
Come funzionano le prestazioni del disco?
Le macchine virtuali di Azure hanno operazioni di input/output al secondo (IOPS) e limiti di prestazioni della velocità effettiva in base al tipo e alle dimensioni della macchina virtuale. I dischi del sistema operativo e i dischi dati possono essere collegati alle macchine virtuali. I dischi hanno limiti di I/O al secondo e velocità effettiva specifici.
Le prestazioni dell'applicazione vengono limitate quando richiedono più operazioni di I/O al secondo o velocità effettiva rispetto a quelle assegnate per le macchine virtuali o i dischi collegati. Quando viene limitata, l'applicazione presenta prestazioni non ottimali. Ciò può causare conseguenze negative, ad esempio un aumento della latenza. Verranno ora illustrati alcuni esempi per chiarire questo concetto. Per semplificare il completamento di questi esempi, verranno esaminate solo le operazioni di I/O al secondo. Tuttavia, la stessa logica si applica alla velocità effettiva.
Limite di I/O del disco
Configurazione:
- Standard_D8s_v3
- Operazioni di I/O al secondo non memorizzate nella cache: 12.800
- Disco del sistema operativo E30
- Operazioni di I/O al secondo: 500
- Due dischi dati E30 × 2
- Operazioni di I/O al secondo: 500
L'applicazione in esecuzione nella macchina virtuale effettua una richiesta che richiede 10.000 operazioni di I/O al secondo nella macchina virtuale. Tutte le macchine virtuali sono consentite perché la macchina virtuale Standard_D8s_v3 può essere eseguita fino a 12.800 operazioni di I/O al secondo.
Le 10.000 richieste di I/O al secondo vengono suddivise in tre richieste diverse per i diversi dischi:
- Vengono richieste 1.000 operazioni di I/O al secondo al disco del sistema operativo.
- Per ogni disco dati sono richiesti 4.500 operazioni di I/O al secondo.
Tutti i dischi collegati sono dischi E30 e possono gestire solo 500 operazioni di I/O al secondo. Quindi, rispondono con 500 operazioni di I/O al secondo ciascuno. Le prestazioni dell'applicazione sono limitate dai dischi collegati e possono elaborare solo 1.500 operazioni di I/O al secondo. L'applicazione potrebbe funzionare a prestazioni massime a 10.000 operazioni di I/O al secondo se vengono usati dischi con prestazioni migliori, ad esempio dischi P30 SSD Premium.
Limite di I/O della macchina virtuale
Configurazione:
- Standard_D8s_v3
- Operazioni di I/O al secondo non memorizzate nella cache: 12.800
- Disco del sistema operativo P30
- Operazioni di I/O al secondo: 5.000
- Due dischi dati P30 × 2
- Operazioni di I/O al secondo: 5.000
L'applicazione in esecuzione nella macchina virtuale effettua una richiesta che richiede 15.000 operazioni di I/O al secondo. Sfortunatamente, viene effettuato il provisioning della macchina virtuale Standard_D8s_v3 solo per gestire 12.800 operazioni di I/O al secondo. L'applicazione è limitata dai limiti della macchina virtuale e deve allocare le 12.800 operazioni di I/O al secondo.
Tali 12.800 operazioni di I/O al secondo richieste vengono suddivise in tre richieste diverse per i diversi dischi:
- Vengono richieste 4.267 operazioni di I/O al secondo al disco del sistema operativo.
- Per ogni disco dati sono richieste 4.266 operazioni di I/O al secondo.
Tutti i dischi collegati sono dischi P30 che possono gestire 5.000 operazioni di I/O al secondo. Quindi, rispondono con i loro importi richiesti.
Limiti non memorizzati nella cache della macchina virtuale
Le macchine virtuali abilitate sia per l'archiviazione Premium che per la memorizzazione nella cache di archiviazione Premium hanno due limiti di larghezza di banda di archiviazione diversi. Si esaminerà ora la macchina virtuale Standard_D8s_v3 come esempio. Ecco la documentazione sulla serie Dsv3 e sulla Standard_D8s_v3:
- La velocità effettiva massima del disco non memorizzato nella cache è il limite massimo di archiviazione predefinito che la macchina virtuale può gestire.
- Il limite massimo di velocità effettiva di archiviazione memorizzata nella cache è un limite separato quando si abilita la memorizzazione nella cache dell'host.
La memorizzazione nella cache dell'host funziona portando l'archiviazione più vicina alla macchina virtuale che può essere scritta o letta in modo rapido. La quantità di spazio di archiviazione disponibile per la macchina virtuale per la memorizzazione nella cache dell'host è disponibile nella documentazione. Ad esempio, è possibile visualizzare il Standard_D8s_v3 viene fornito con 200 GiB di archiviazione della cache.
È possibile abilitare la memorizzazione nella cache dell'host quando si crea la macchina virtuale e si collegano dischi. È anche possibile attivare e disattivare la memorizzazione nella cache dell'host nei dischi in una macchina virtuale esistente. Per impostazione predefinita, i dischi dati con supporto per la cache avranno la memorizzazione nella cache di sola lettura abilitata. I dischi del sistema operativo con supporto per la cache avranno la memorizzazione nella cache di lettura/scrittura abilitata.
È possibile modificare la memorizzazione nella cache dell'host in modo che corrisponda ai requisiti del carico di lavoro per ogni disco. È possibile impostare la memorizzazione nella cache dell'host in modo che sia:
- Sola lettura: per i carichi di lavoro che eseguono solo operazioni di lettura
- Lettura/scrittura: per i carichi di lavoro che eseguono un bilanciamento delle operazioni di lettura e scrittura
Se il carico di lavoro non segue uno di questi modelli, non è consigliabile usare la memorizzazione nella cache dell'host.
Verranno ora eseguiti alcuni esempi di impostazioni della cache host diverse per vedere come influisce sul flusso di dati e sulle prestazioni. In questo primo esempio si esaminerà cosa accade con le richieste di I/O quando l'impostazione di memorizzazione nella cache dell'host è impostata su Sola lettura.
Configurazione:
- Standard_D8s_v3
- Operazioni di I/O al secondo memorizzate nella cache: 16.000
- Operazioni di I/O al secondo non memorizzate nella cache: 12.800
- Disco dati P30
- Operazioni di I/O al secondo: 5.000
- Memorizzazione nella cache dell'host: sola lettura
Quando viene eseguita una lettura e i dati desiderati sono disponibili nella cache, la cache restituisce i dati richiesti. Non è necessario leggere dal disco. Questa lettura viene conteggiata in base ai limiti memorizzati nella cache della macchina virtuale.
Quando viene eseguita una lettura e i dati desiderati non sono disponibili nella cache, la richiesta di lettura viene inoltrata al disco. Quindi il disco lo espone sia alla cache che alla macchina virtuale. Questa lettura viene conteggiata sia per il limite non memorizzato nella cache della macchina virtuale che per il limite memorizzato nella cache della macchina virtuale.
Quando viene eseguita una scrittura, la scrittura deve essere scritta sia nella cache che nel disco prima che venga considerata completa. Questa scrittura viene conteggiata in base al limite non memorizzato nella cache della macchina virtuale e al limite memorizzato nella cache della macchina virtuale.
Si esaminerà ora cosa accade con le richieste di I/O quando l'impostazione della cache host è impostata su Lettura/scrittura.
Configurazione:
- Standard_D8s_v3
- Operazioni di I/O al secondo memorizzate nella cache: 16.000
- Operazioni di I/O al secondo non memorizzate nella cache: 12.800
- Disco dati P30
- Operazioni di I/O al secondo: 5.000
- Memorizzazione nella cache dell'host: lettura/scrittura
Una lettura viene gestita allo stesso modo di una sola lettura. Le scritture sono l'unica cosa diversa con la memorizzazione nella cache di lettura/scrittura. Quando la scrittura con memorizzazione nella cache dell'host è impostata su Lettura/scrittura, la scrittura deve essere scritta solo nella cache host per essere considerata completa. La scrittura viene quindi scritta in modo differimento sul disco quando la cache viene scaricata periodicamente. I clienti possono anche forzare uno scaricamento eseguendo un comando f/sync o fua. Ciò significa che una scrittura viene conteggiata per le operazioni di I/O memorizzate nella cache quando viene scritta nella cache. Quando viene scritto in modo differire sul disco, viene conteggiato per l'I/O non memorizzato nella cache.
Continuare con la macchina virtuale Standard_D8s_v3. Ad eccezione di questa volta, si abiliterà la memorizzazione nella cache dell'host nei dischi. In questo modo, il limite di operazioni di I/O al secondo della macchina virtuale è di 16.000 operazioni di I/O al secondo. Collegato alla macchina virtuale sono tre dischi P30 sottostanti che possono gestire 5.000 operazioni di I/O al secondo.
Configurazione:
- Standard_D8s_v3
- Operazioni di I/O al secondo memorizzate nella cache: 16.000
- Operazioni di I/O al secondo non memorizzate nella cache: 12.800
- Disco del sistema operativo P30
- Operazioni di I/O al secondo: 5.000
- Memorizzazione nella cache dell'host: lettura/scrittura
- Due dischi dati P30 × 2
- Operazioni di I/O al secondo: 5.000
- Memorizzazione nella cache dell'host: lettura/scrittura
L'applicazione usa una macchina virtuale Standard_D8s_v3 con memorizzazione nella cache abilitata. Effettua una richiesta per 16.000 operazioni di I/O al secondo. Le richieste vengono completate non appena vengono lette o scritte nella cache. Le scritture vengono quindi scritte in modo differire nei dischi collegati.
Limiti combinati non memorizzati nella cache
I limiti memorizzati nella cache di una macchina virtuale sono separati dai limiti non memorizzati nella cache. Ciò significa che è possibile abilitare la memorizzazione nella cache dell'host nei dischi collegati a una macchina virtuale, senza abilitare la memorizzazione nella cache dell'host in altri dischi. Questa configurazione consente alle macchine virtuali di ottenere un I/O di archiviazione totale del limite memorizzato nella cache più il limite non memorizzato nella cache.
Di seguito viene illustrato un esempio per comprendere il funzionamento di questi limiti. Si continuerà con la configurazione collegata della macchina virtuale Standard_D8s_v3 e dei dischi Premium.
Configurazione:
- Standard_D8s_v3
- Operazioni di I/O al secondo memorizzate nella cache: 16.000
- Operazioni di I/O al secondo non memorizzate nella cache: 12.800
- Disco del sistema operativo P30
- Operazioni di I/O al secondo: 5.000
- Memorizzazione nella cache dell'host: lettura/scrittura
- Due dischi dati P30 × 2
- Operazioni di I/O al secondo: 5.000
- Memorizzazione nella cache dell'host: lettura/scrittura
- Due dischi dati P30 × 2
- Operazioni di I/O al secondo: 5.000
- Memorizzazione nella cache dell'host: disabilitata
In questo caso, l'applicazione in esecuzione in una macchina virtuale Standard_D8s_v3 effettua una richiesta per 25.000 operazioni di I/O al secondo. La richiesta viene suddivisa come 5.000 operazioni di I/O al secondo in ognuno dei dischi collegati. Tre dischi usano la memorizzazione nella cache dell'host e due dischi non usano la memorizzazione nella cache dell'host.
- Poiché i tre dischi che usano la memorizzazione nella cache host sono entro i limiti memorizzati nella cache di 16.000, tali richieste vengono completate correttamente. Non si verifica alcun limite delle prestazioni di archiviazione.
- Poiché i due dischi che non usano la memorizzazione nella cache dell'host si trovano entro i limiti non memorizzati nella cache pari a 12.800, tali richieste vengono completate correttamente. Non si verifica alcun limite.