Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Si applica a: ✔️ macchine virtuali Linux ✔️ macchine virtuali Windows ✔️ set di scalabilità flessibili ✔️ set di scalabilità uniformi
Questo articolo illustra come interagiscono Macchine virtuali di Azure (VM) e i limiti delle prestazioni del disco gestito. Descrive anche come diagnosticare i colli di bottiglia dell'I/O del disco e ottimizzare le prestazioni di archiviazione.
Interazione tra macchine virtuali e limiti di prestazioni del disco gestito Azure
Le macchine virtuali di Azure hanno limiti di operazioni di input/output al secondo (IOPS) e di throughput in base al tipo e alle dimensioni della macchina virtuale. I dischi del sistema operativo gestiti e i dischi dati hanno limiti propri di IOPS e larghezza di banda.
Allocazione dei dischi e prestazioni
I dischi collegati a una macchina virtuale Azure usano tre percorsi di I/O. Il diagramma seguente mostra come Azure alloca le operazioni di larghezza di banda e input/output al secondo (IOPS) in questi percorsi in tempo reale.
Il primo percorso di I/O è il percorso del disco gestito non memorizzato nella cache. Le operazioni di I/O usano questo percorso quando si usa un disco gestito e si imposta la memorizzazione nella cache dell'host su none. Le operazioni di I/O che utilizzano questo percorso vengono eseguite in base al provisioning a livello di disco e successivamente al provisioning a livello di rete della macchina virtuale (VM) per operazioni di I/O al secondo e capacità effettiva.
Il secondo percorso di I/O è il percorso del disco gestito memorizzato nella cache. Le operazioni di I/O del disco gestito memorizzato nella cache usano un'unità SSD vicina alla macchina virtuale. Questa unità SSD ha un provisioning di operazioni di I/O al secondo e capacità effettiva dedicato e viene visualizzata come "provisioning a livello di unità SSD" nel diagramma.
Quando un disco gestito memorizzato nella cache avvia una lettura, la richiesta verifica innanzitutto se i dati si trovano nell'unità SSD del server. Se i dati non sono presenti, si verifica un errore memorizzato nella cache. Le operazioni di I/O vengono quindi eseguite in base al provisioning a livello di unità SSD, al provisioning a livello di disco e quindi al provisioning a livello di rete della macchina virtuale per operazioni di I/O al secondo e capacità effettiva.
Quando l'unità SSD del server avvia letture di I/O memorizzate nella cache presenti sull'unità SSD del server, si verifica un colpo nella cache. L'operazione di I/O viene quindi eseguita in base al provisioning a livello di unità SSD. Le scritture che hanno origine da un disco gestito nella cache seguono sempre il percorso di un mancato riscontro nella cache. Passano attraverso il provisioning a livello di SSD, a livello di disco e a livello di rete delle macchine virtuali.
Il terzo percorso è relativo al disco temporaneo. È disponibile solo nelle macchine virtuali che supportano dischi temporanei. Un'operazione di I/O che utilizza questo percorso si basa sul provisioning a livello di SSD per IOPS e throughput.
Il diagramma seguente illustra un esempio di queste limitazioni. Il sistema impedisce a una macchina virtuale Standard_D2s_v3 di raggiungere le 5.000 operazioni di I/O al secondo potenzialidi un disco P30, indipendentemente dalla memorizzazione nella cache, a causa dei limiti a livello di unità SSD e di rete.
Azure usa un canale di rete con priorità per il traffico su disco. Il traffico su disco ha la precedenza sul traffico di rete con priorità bassa. Questa definizione di priorità consente ai dischi di mantenere le prestazioni previste in caso di contesa di rete.
Analogamente, Archiviazione di Azure gestisce in background le contenzioni delle risorse e altri problemi tramite il bilanciamento automatico del carico. Archiviazione di Azure alloca le risorse necessarie quando si crea un disco e applica il bilanciamento proattivo e reattivo delle risorse per gestire il livello di traffico. Questo comportamento garantisce che i dischi possano soddisfare gli obiettivi previsti in termini di operazioni di I/O al secondo e velocità effettiva. Usare le metriche a livello di macchina virtuale e a livello di disco per tenere traccia delle prestazioni e configurare gli avvisi in base alle esigenze.
Limite di I/O del disco
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. Questa condizione può causare conseguenze negative, ad esempio un aumento della latenza. Gli esempi seguenti utilizzano IOPS, ma la stessa logica si applica anche al throughput.
Configurazione dell'esempio di limitazione a livello di disco:
- Standard_D8s_v3
- Operazioni di I/O al secondo non memorizzate nella cache: 12.800
- Disco del sistema operativo E30
- IOPS: 500
- Due dischi dati E30 × 2
- IOPS: 500
L'applicazione in esecuzione nella macchina virtuale effettua una richiesta che richiede 10.000 operazioni di I/O al secondo nella macchina virtuale. Tutto ciò è supportato dalla VM perché la macchina virtuale Standard_D8s_v3 può gestire fino a 12.800 IOPS.
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 di esempio di limite a livello di macchina virtuale:
- Standard_D8s_v3
- Operazioni di I/O al secondo non memorizzate nella cache: 12.800
- Disco del sistema operativo P30
- IOPS: 5.000
- Due dischi dati P30 × 2
- IOPS: 5.000
L'applicazione in esecuzione nella macchina virtuale effettua una richiesta che richiede 15.000 operazioni di I/O al secondo. Sfortunatamente, la macchina virtuale Standard_D8s_v3 è configurata per supportare solo 12.800 IOPS. 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:
- Sono richiesti 4.267 IOPS sul 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 indicando gli importi richiesti.
Limiti memorizzati nella cache e 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:
I dati del disco "non memorizzati nella cache" in Archiviazione remota sono i limiti massimi di archiviazione predefiniti che la macchina virtuale può gestire.
I dati del disco "memorizzati nella cache" nella scheda Archiviazione locale sono limiti separati quando si abilita la memorizzazione nella cache dell'host.
Configurare 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 host sui dischi di una VM esistente. Per impostazione predefinita, nei dischi dati che supportano la memorizzazione nella cache, questa non è abilitata. I dischi del sistema operativo abilitati per la cache hanno la cache in 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.
Memorizzazione nella cache dell'host in sola lettura
Nell'esempio seguente viene illustrato il flusso delle richieste di I/O quando si imposta la memorizzazione nella cache dell'host su Sola lettura.
Esempio di configurazione della cache host di sola lettura:
- 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
- IOPS: 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.
Memorizzazione nella cache dell'host di lettura/scrittura
Nell'esempio seguente viene illustrato il flusso delle richieste di I/O quando si imposta la memorizzazione nella cache dell'host su Lettura/scrittura.
Configurazione di esempio per la cache host in lettura/scrittura:
- 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
- IOPS: 5.000
- Memorizzazione nella cache dell'host: lettura/scrittura
Con la memorizzazione nella cache dell'host di lettura/scrittura, le letture con riscontri nella cache vengono conteggiate in base ai limiti memorizzati nella cache della macchina virtuale. Le letture con mancato accesso alla cache vengono conteggiate sia nei limiti con cache sia in quelli senza cache della VM. Le scritture vengono gestite in modo diverso: una scrittura deve raggiungere solo la cache host da considerare completa. L’operazione di scrittura viene quindi eseguita in modo differito sul disco quando la cache viene svuotata periodicamente. È anche possibile forzare uno svuotamento impartendo il comando f/sync o fua. Una scrittura viene conteggiata come operazione di I/O nella cache quando viene scritta nella cache e come operazione di I/O non nella cache quando viene scritta in modo differito sul disco.
Esempio di limite memorizzato nella cache
L'esempio seguente usa una macchina virtuale Standard_D8s_v3 con memorizzazione nella cache host abilitata e tre dischi P30 collegati. La macchina virtuale ha un limite di 16.000 operazioni di I/O al secondo memorizzate nella cache e ogni disco P30 può gestire 5.000 operazioni di I/O al secondo.
Configurazione dell'esempio di limite memorizzato nella cache:
- 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
- IOPS: 5.000
- Memorizzazione nella cache dell'host: lettura/scrittura
- Due dischi dati P30 × 2
- IOPS: 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 differito nei dischi collegati.
Limiti combinati senza cache e con cache
I limiti memorizzati nella cache di una macchina virtuale sono separati dai limiti non memorizzati nella cache. Questa separazione significa che è possibile abilitare la memorizzazione nella cache dell'host in alcuni 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 totale di archiviazione del limite memorizzato nella cache più il limite non memorizzato nella cache.
L'esempio seguente illustra come i limiti memorizzati nella cache e non memorizzati nella cache interagiscono in una macchina virtuale Standard_D8s_v3 con unità SSD Premium collegate.
Configurazione di esempio combinata di limiti memorizzati nella cache e non memorizzata nella cache:
- 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
- IOPS: 5.000
- Memorizzazione nella cache dell'host: lettura/scrittura
- Due dischi dati P30 × 2
- IOPS: 5.000
- Memorizzazione nella cache dell'host: lettura/scrittura
- Due dischi dati P30 × 2
- IOPS: 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 viene applicata alcuna limitazione.