Prestazioni di macchine virtuali e dischi

Si applica a: ✔️ Macchine ✔️ virtuali Linux Macchine virtuali ✔️ Windows Set di scalabilità flessibili Set di scalabilità ✔️ Uniform

Questo articolo consente di chiarire le prestazioni del disco e di come funziona quando si combinano dischi di Azure Macchine virtuali e Azure. Descrive anche come diagnosticare 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 (I/O al secondo) 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.

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. Esaminiamo un paio di 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

Installazione:

  • Standard_D8s_v3
    • Operazioni di I/O al secondo non memorizzate: 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

Diagramma che mostra il limite di livello del disco.

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 operazioni consentite dalla macchina virtuale perché la macchina virtuale Standard_D8s_v3 può essere eseguita fino a 12.800 operazioni di I/O al secondo.

Le richieste di I/O al secondo 10.000 vengono suddivise in tre diverse richieste ai diversi dischi:

  • Vengono richieste 1.000 operazioni di I/O al secondo al disco del sistema operativo.
  • 4.500 operazioni di I/O al secondo vengono richieste a ogni disco dati.

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. 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 con prestazioni massime a 10.000 operazioni di I/O al secondo se vengono usati dischi con prestazioni migliori, ad esempio dischi SSD Premium P30.

Limite di I/O della macchina virtuale

Installazione:

  • Standard_D8s_v3
    • Operazioni di I/O al secondo non memorizzate: 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

Diagramma che mostra il limite a livello di macchina virtuale.

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 viene eseguito solo il provisioning 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 sono suddivise in tre diverse richieste ai diversi dischi:

  • Vengono richieste 4.267 operazioni di I/O al secondo al disco del sistema operativo.
  • Vengono richieste 4.266 operazioni di I/O al secondo a ogni disco dati.

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 per l'archiviazione Premium e la memorizzazione nella cache di archiviazione Premium hanno due limiti di larghezza di banda di archiviazione diversi. Si esaminerà la macchina virtuale Standard_D8s_v3 come esempio. Ecco la documentazione sulla serie Dsv3 e sulla Standard_D8s_v3:

Grafico che mostra le specifiche di D s v 3.

  • La velocità effettiva massima del disco non memorizzata è 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 scritta rapidamente. La quantità di archiviazione disponibile per la macchina virtuale per la memorizzazione nella cache host è nella documentazione. Ad esempio, è possibile visualizzare la Standard_D8s_v3 include 200 GiB di archiviazione cache.

È possibile abilitare la memorizzazione nella cache host quando si crea la macchina virtuale e si collegano dischi. È anche possibile attivare e disattivare la memorizzazione nella cache host nei dischi in una macchina virtuale esistente. Per impostazione predefinita, i dischi dati in grado di cache avranno la memorizzazione nella cache di sola lettura abilitata. I dischi del sistema operativo con supporto della cache avranno la memorizzazione nella cache di lettura/scrittura abilitata.

Screenshot che mostra la memorizzazione nella cache dell'host.

È possibile modificare la memorizzazione nella cache host in base 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 equilibrio tra 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 eseguiti alcuni esempi di diverse impostazioni della cache host per vedere come influisce sul flusso di dati e sulle prestazioni. In questo primo esempio si esaminerà ciò che accade con le richieste di I/O quando l'impostazione di memorizzazione nella cache host è impostata su Sola lettura.

Installazione:

  • Standard_D8s_v3
    • Operazioni di I/O al secondo memorizzate nella cache: 16.000
    • Operazioni di I/O al secondo non memorizzate: 12.800
  • Disco dati P30
    • Operazioni di I/O al secondo: 5.000
    • Memorizzazione nella cache 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 per i limiti memorizzati nella cache della macchina virtuale.

Diagramma che mostra un hit di lettura della memorizzazione nella cache host di lettura.

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 esegue sia nella cache che nella macchina virtuale. Questa lettura viene conteggiata verso il limite non crittografato della macchina virtuale e il limite memorizzato nella cache della macchina virtuale.

Diagramma che mostra un errore di lettura della memorizzazione nella cache host di lettura.

Quando viene eseguita una scrittura, la scrittura deve essere scritta nella cache e nel disco prima che venga considerata completa. Questa scrittura viene conteggiata verso il limite non crittografato della macchina virtuale e il limite memorizzato nella cache della macchina virtuale.

Diagramma che mostra una scrittura di memorizzazione nella cache host di lettura.

Si esaminerà quindi cosa accade con le richieste di I/O quando l'impostazione della cache host è impostata su Lettura/scrittura.

Installazione:

  • Standard_D8s_v3
    • Operazioni di I/O al secondo memorizzate nella cache: 16.000
    • Operazioni di I/O al secondo non memorizzate: 12.800
  • Disco dati P30
    • Operazioni di I/O al secondo: 5.000
    • Memorizzazione nella cache 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 si scrive con memorizzazione nella cache host è impostata su Lettura/scrittura, la scrittura deve essere scritta solo nella cache host da considerare completa. La scrittura viene quindi scritta in modo più pigre sul disco quando la cache viene scaricata periodicamente. I clienti possono inoltre forzare uno scaricamento emettendo un comando f/sync o fua. Ciò significa che una scrittura viene conteggiata per l'I/O memorizzata nella cache. Quando viene scritto in modo più pigre sul disco, conta verso l'I/O non memorizzato.

Diagramma che mostra la scrittura nella cache dell'host di lettura/scrittura.

Continuiamo con la macchina virtuale Standard_D8s_v3. A eccezione di questa volta, si abiliterà la memorizzazione nella cache host nei dischi. Ciò rende il limite di operazioni di I/O al secondo della macchina virtuale pari a 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.

Installazione:

  • Standard_D8s_v3
    • Operazioni di I/O al secondo memorizzate nella cache: 16.000
    • Operazioni di I/O al secondo non memorizzate: 12.800
  • Disco del sistema operativo P30
    • Operazioni di I/O al secondo: 5.000
    • Memorizzazione nella cache host: Lettura/scrittura
  • Due dischi dati P30 × 2
    • Operazioni di I/O al secondo: 5.000
    • Memorizzazione nella cache host: Lettura/scrittura

Diagramma che mostra un esempio di memorizzazione nella cache host.

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 più pigre nei dischi collegati.

Limiti combinati non memorizzati nella cache e non memorizzati nella cache

I limiti memorizzati nella cache di una macchina virtuale sono separati dai limiti non memorizzati. Ciò significa che è possibile abilitare la memorizzazione nella cache host nei dischi collegati a una macchina virtuale, senza abilitare la memorizzazione nella cache 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.

Si esaminerà un esempio per comprendere il modo in cui questi limiti funzionano insieme. Si continuerà con la configurazione associata alla macchina virtuale Standard_D8s_v3 e ai dischi Premium.

Installazione:

  • Standard_D8s_v3
    • Operazioni di I/O al secondo memorizzate nella cache: 16.000
    • Operazioni di I/O al secondo non memorizzate: 12.800
  • Disco del sistema operativo P30
    • Operazioni di I/O al secondo: 5.000
    • Memorizzazione nella cache host: Lettura/scrittura
  • Due dischi dati P30 × 2
    • Operazioni di I/O al secondo: 5.000
    • Memorizzazione nella cache host: Lettura/scrittura
  • Due dischi dati P30 × 2
    • Operazioni di I/O al secondo: 5.000
    • Memorizzazione nella cache host: disabilitata

Diagramma che mostra un esempio di memorizzazione nella cache host con l'archiviazione remota.

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 a ogni disco collegato. Tre dischi usano la memorizzazione nella cache host e due dischi non usano la memorizzazione nella cache 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 host si trovano all'interno dei limiti non memorizzati in 12.800, tali richieste vengono completate correttamente. Non si verifica alcun limite.