Informazioni sulle caratteristiche delle prestazioni del disco

Completato

Le prestazioni di un'applicazione spesso dipendono dalla velocità con cui può leggere e scrivere i dati. Per capire come migliorare le prestazioni dell'applicazione, è necessario prima identificare il modo in cui le prestazioni vengono misurate e definire le impostazioni e le scelte che le influenzano.

Caratteristiche delle prestazioni del disco

Per scegliere il tipo di disco corretto, è importante comprendere gli indicatori di prestazioni. Gli indicatori seguenti definiscono le prestazioni:

  • IOPS: le operazioni di I/O al secondo indicano il numero di richieste inviate dall'applicazione ai dischi in un secondo. Le operazioni di I/O al secondo influiscono direttamente sulle prestazioni dell'applicazione. Alcune applicazioni, ad esempio 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 elaborate rapidamente per mantenere il sito reattivo. I dischi con prestazioni più elevate hanno valori di operazioni di I/O al secondo più elevati.
  • Velocità effettiva: la velocità effettiva indica la quantità di dati che l'applicazione invia ai dischi in un intervallo specifico. La velocità effettiva viene chiamata anche velocità di trasferimento dei dati e viene misurata in MB/s. Se l'applicazione esegue operazioni di I/O con blocchi di dati di grandi dimensioni, richiede una velocità effettiva elevata. I dischi con prestazioni superiori hanno una velocità effettiva superiore.
  • Latenza: la latenza è il tempo necessario all'app per inviare una richiesta al disco e ricevere una risposta. La latenza limita le operazioni di I/O al secondo effettive. Ad esempio, (con una profondità di coda di 1), se il disco può gestire 1 operazioni di I/O al secondo, ma l'elaborazione di ogni operazione dura 5,000 ms, l'app verrà limitata a 10 operazioni al secondo a causa del tempo di elaborazione. La latenza migliora considerevolmente se si abilita la memorizzazione nella cache dell'host ReadOnly.

Operazioni di I/O al secondo e velocità effettiva

La velocità effettiva e le operazioni di I/O al secondo hanno una relazione diretta. La modifica di uno di questi elementi influisce direttamente sull'altro. Per ottenere un limite teorico di velocità effettiva, è possibile usare la formula seguente: operazioni di I/O al secondo × dimensioni di input/output = velocità effettiva. È importante tenere presenti entrambi i valori quando si pianifica l'applicazione.

Per i dischi Ultra e i dischi gestiti Ssd Premium v2, funziona in modo leggermente diverso perché è possibile regolare in modo indipendente le dimensioni del disco, le operazioni di I/O al secondo e la velocità effettiva. Le regolazioni delle operazioni di I/O al secondo o della velocità effettiva per i dischi Ultra e i dischi gestiti SSD v2 Premium possono essere eseguiti in fase di esecuzione, senza scollegare il disco dalla macchina virtuale.

Operazioni di I/O al secondo su disco Ultra

I dischi Ultra SSD supportano limiti di operazioni di I/O al secondo pari a 300 IOPS/GiB, fino a un massimo di 160.000 IOPS per disco. Per ottenere le operazioni di I/O al secondo di destinazione per il disco, assicurarsi che le operazioni di I/O al secondo del disco selezionato siano inferiori al limite di operazioni di I/O al secondo della macchina virtuale.

Il limite massimo corrente per le operazioni di I/O al secondo per una singola macchina virtuale in dimensioni disponibili a livello generale è 160.000. I dischi Ultra con operazioni di I/O al secondo maggiori possono essere usati come dischi condivisi per supportare più macchine virtuali.

Le operazioni di I/O al secondo minime garantite per disco sono 1 operazione di I/O al secondo/GiB, con un minimo di 100 operazioni di I/O al secondo complessive. Ad esempio, se è stato effettuato il provisioning di un disco Ultra da 4 GiB, il numero minimo di operazioni di I/O al secondo per tale disco è 100, anziché quattro.

Velocità effettiva del disco Ultra

Il limite di velocità effettiva di un singolo disco ultra è di 256 KiB/s per ogni operazione di I/O al secondo di cui è stato effettuato il provisioning, fino a un massimo di 4000 MB/s per disco (dove MBp/s = 10^6 byte al secondo). La velocità effettiva minima garantita per disco è 4KiB/s per ogni operazione di I/O al secondo di cui è stato effettuato il provisioning, con una baseline complessiva minima di 1 MB/s

SSD Premium v2 operazioni di I/O al secondo

Tutti i dischi SSD Premium v2 hanno un numero di operazioni di I/O al secondo di base pari a 3000, gratuito. Dopo 6 GiB, il numero massimo di operazioni di I/O al secondo di un disco può essere a una velocità di 500 per GiB, fino a 80.000 operazioni di I/O al secondo. Quindi un disco da 8 GiB può avere fino a 4.000 operazioni di I/O al secondo e un 10 GiB può avere fino a 5.000 operazioni di I/O al secondo. Per poter impostare 80.000 operazioni di I/O al secondo su un disco, tale disco deve avere almeno 160 GIB. L'aumento delle operazioni di I/O al secondo oltre 3000 aumenta il prezzo del disco.

Velocità efferttiva Premium SSD v2

Tutti i dischi SSD Premium v2 hanno una velocità effettiva di base di 125 MB/s, che è gratuita. Dopo 6 GiB, la velocità effettiva massima che può essere impostata aumenta di 0,25 MB/s per set di operazioni di I/O al secondo. Se un disco ha 3.000 operazioni di I/O al secondo, la velocità effettiva massima che può essere impostata è 750 MB/s. Per aumentare la velocità effettiva per questo disco oltre 750 MB/s, è necessario aumentare le operazioni di I/O al secondo. Ad esempio, se si aumentano le operazioni di I/O al secondo a 4.000, la velocità effettiva massima che può essere impostata è 1.000. 1.200 MB/s è la velocità effettiva massima supportata per i dischi con 5.000 operazioni di I/O al secondo o più. L'aumento della velocità effettiva oltre i 125 MB/s aumenta il prezzo del disco.

Limitazione delle operazioni I/O per le macchine virtuali

Ora che si conoscono i dischi disponibili in Azure, è necessario associare le VM al tipo di disco corretto. Le VM hanno limiti propri di operazioni di I/O al secondo per l'archiviazione che possono influire sulle prestazioni complessive dell'applicazione se combinate con le operazioni di I/O al secondo del disco.

Se non si ridimensiona correttamente la macchina virtuale per le prestazioni di archiviazione necessarie per un'applicazione, la macchina virtuale stessa diventa un collo di bottiglia.

Si supponga ad esempio che l'applicazione faccia una richiesta di 15.000 operazioni di I/O al secondo. È stato effettuato il provisioning di una macchina virtuale Standard_D8s_v3 con un disco del sistema operativo P30 e due dischi dati SSD Premium con SKU P40. Ogni disco dati può gestire 7.500 operazioni di I/O al secondo e può quindi soddisfare la richiesta delle applicazioni, ma la macchina virtuale stessa ha un limite massimo di 12.800 operazioni di I/O al secondo, vale a dire le operazioni di I/O al secondo effettive che l'applicazione riceverà. Questo esempio viene illustrato nell'immagine seguente.

Diagram that depicts virtual machine input output capping.

Lo scenario illustrato nell'esempio precedente è noto come limitazione di I/O della macchina virtuale. In questo scenario l'applicazione richiede una velocità effettiva e operazioni di I/O al secondo che il disco può gestire, mentre la macchina virtuale non può soddisfare questi requisiti.

È possibile diagnosticare i problemi di prestazioni causati dalla limitazione di I/O della macchina virtuale usando le metriche seguenti:

  • Percentuale di utilizzo operazioni di I/O al secondo della cache della macchina virtuale
  • Percentuale di utilizzo larghezza di banda della cache della macchina virtuale
  • Percentuale di utilizzo operazioni di I/O al secondo non della cache della macchina virtuale
  • Percentuale di utilizzo larghezza di banda non della cache della macchina virtuale

Limitazione delle operazioni I/O su disco

Si potrebbero incontrare altre situazioni in cui la soluzione di archiviazione non soddisfi le richieste dell'applicazione. Il collo di bottiglia potrebbe essere comunque causato dal fatto che si seleziona il livello di prestazioni dei dischi non corretto.

Si consideri lo stesso esempio in cui l'applicazione richiede 15.000 operazioni di I/O al secondo dalla macchina virtuale e in cui è stata scelta la configurazione seguente:

  • Standard D16s_v4 con 25.600 operazioni di I/O al secondo
  • Disco del sistema operativo P20 con 2.300 operazioni di I/O al secondo
  • Due dischi dati P30, ognuno con supporto di 5.000 operazioni di I/O al secondo

In questo scenario la domanda dell'applicazione verrà suddivisa in tre richieste diverse:

  • Dal disco del sistema operativo sono richieste 2.300 operazioni di I/O al secondo
  • Da ogni disco dati sono richieste 5.000 operazioni di I/O al secondo

Le operazioni di I/O al secondo totali restituite dalla macchina virtuale all'applicazione saranno 12.300, il totale delle operazioni di I/O al secondo offerte dai dischi del sistema operativo e dai dischi dati.

Questo scenario è noto come limitazione di I/O su disco, in cui è il disco stesso che non può soddisfare le richieste dell'applicazione.

Diagram that depicts disk input output capping.

Per diagnosticare la limitazione di I/O su disco, usare le metriche seguenti:

  • Percentuale di utilizzo operazioni di I/O al secondo del disco dati
  • Percentuale di utilizzo della larghezza di banda del disco dati
  • Percentuale di utilizzo operazioni di I/O al secondo del disco del sistema operativo
  • Percentuale di utilizzo larghezza di banda del disco del sistema operativo

Memorizzazione nella cache del disco

Una cache è un componente specifico che archivia i dati, in genere nella memoria, in modo che l'applicazione possa accedervi più velocemente. I dati presenti in una cache sono spesso dati letti in precedenza o il risultato di un calcolo precedente. L'obiettivo è che le applicazioni accedano ai dati più velocemente dalla cache rispetto che dal disco. La memorizzazione nella cache del disco non è disponibile su dischi Ultra e SSD Premium v2.

La memorizzazione nella cache usa un'archiviazione temporanea specializzata e talvolta dispendiosa, che offre prestazioni di lettura e scrittura più veloci rispetto all'archiviazione permanente. Poiché questo tipo di archiviazione della cache è spesso limitato, è opportuno decidere quali operazioni sui dati traggono maggiori vantaggi dalla memorizzazione nella cache. Anche nei casi in cui la cache può essere resa ampiamente disponibile, ad esempio in Azure, è comunque importante conoscere i modelli di carico di lavoro di ogni disco prima di decidere quale tipo di memorizzazione nella cache usare.

La memorizzazione nella cache di lettura prova a velocizzare il recupero dei dati. Invece che da un archivio permanente, l'applicazione legge i dati dalla cache più veloce.

Si noti che la memorizzazione nella cache di lettura è utile in caso di prevedibilità della coda di lettura, ad esempio nel caso di una serie di letture sequenziali. Per operazioni di I/O casuali, nel caso in cui i dati a cui si accede siano sparsi tra più risorse di archiviazione, la memorizzazione nella cache offre un vantaggio minimo se non inesistente e può addirittura ridurre le prestazioni del disco.

La memorizzazione nella cache di scrittura prova ad accelerare la scrittura dei dati nella risorsa di archiviazione. Usando una cache di scrittura, l'app può prendere in considerazione i dati da salvare.

In realtà, quando si usa la memorizzazione nella cache di scrittura, i dati vengono accodati in una cache, in attesa di essere scritti su disco. Come è facile immaginare, questo meccanismo può rappresentare un potenziale punto di guasto, ad esempio se il sistema si arresta prima che i dati memorizzati nella cache vengano scritti. Alcuni sistemi, ad esempio SQL Server, gestiscono la scrittura dei dati memorizzati nella cache nell'archivio su disco persistente in modo autonomo.

Limiti di memorizzazione e non memorizzazione nella cache delle macchine virtuali

Dopo aver compreso in che modo la memorizzazione nella cache può migliorare le prestazioni di lettura o scrittura dei dati sul disco, è necessario tenere presente in che modo la memorizzazione nella cache influisce sulle prestazioni della macchina virtuale.

Le prestazioni della macchina virtuale dipendono dai limiti di I/O al secondo e velocità effettiva imposti in base alle dimensioni della macchina virtuale. Tutte le macchine virtuali nel livello Premium hanno limiti diversi per le operazioni di I/O al secondo e la velocità effettiva in base alle configurazioni di memorizzazione e non memorizzazione nella cache. È possibile migliorare le prestazioni della macchina virtuale per soddisfare la maggiore richiesta di operazioni di I/O al secondo e velocità effettiva abilitando la memorizzazione nella cache dell'host della macchina virtuale.

Nella tabella seguente sono elencati esempi che illustrano la differenza in termini di prestazioni per la velocità effettiva e la larghezza di banda del disco con memorizzazione e senza memorizzazione nella cache.

Nome dimensioni macchina virtuale Memorizzazione nella cache e velocità effettiva temporanea: operazioni di I/O al secondo/MB/s (dimensioni della cache in GiB) Velocità effettiva massima del disco senza memorizzazione nella cache: operazioni di I/O al secondo/MB/s
Standard_D2s_v3 4.000/32 + 50 3.200/48
Standard_D4s_v3 8.000/64 + 100 6.400/96
Standard_D8s_v3 16.000/128 + 200 12.800/192
Standard_D64s_v3 128.000/1.024 (1.600) 80.000/1.200

La memorizzazione nella cache dell'host consente di evitare scenari di collo di bottiglia delle macchine virtuali.

Nell'esempio precedente di limitazione I/O della macchina virtuale l'applicazione richiedeva 15.000 operazioni di I/O al secondo. I due dischi dati possono gestire tale richiesta, ma la macchina virtuale Standard_D8s_v3 può offrire solo 12.800 operazioni di I/O al secondo nello stato senza memorizzazione nella cache.

Se si configura la memorizzazione nella cache dell'host nella macchina virtuale Standard_D8s_v3, è possibile ottenere 16.000 operazioni di I/O al secondo memorizzate nella cache, oltre a quelle richieste dall'applicazione.