I dischi permanenti offrono le prestazioni descritte nel grafico dei tipi di disco se l'utilizzo delle unità VM è sufficiente per raggiungere i limiti di prestazioni. Dopo aver dimensionato i volumi del disco permanente in base alle tue esigenze di prestazioni, il workload e il sistema operativo potrebbero richiedere alcune modifiche.
Le sezioni seguenti descrivono le caratteristiche di VM e workload che influiscono sulle prestazioni del disco e illustrano alcuni elementi chiave che possono essere ottimizzati per prestazioni migliori. Alcuni suggerimenti e come applicarli a tipi specifici di carichi di lavoro.
Fattori che influiscono sulle prestazioni del disco
Le sezioni seguenti descrivono i fattori che influiscono sulle prestazioni del disco di una VM.
- Limiti del traffico in uscita dalla rete sul throughput di scrittura
- Letture e scritture simultanee
- Dimensioni del volume logico
- Più dischi collegati a una singola istanza VM
Limiti del traffico in uscita dalla rete alla velocità effettiva di scrittura
La tua VM ha un limite di uscita di rete che dipende dal tipo di macchina della VM.
Compute Engine archivia i dati su Persistent Disk con più scritture parallele per garantire la ridondanza integrata. Inoltre, ogni richiesta di scrittura ha un sovraccarico che utilizza ulteriore larghezza di banda di scrittura.
Il traffico di scrittura massimo che una VM può emettere è il limite di uscita di rete diviso per un moltiplicatore di larghezza di banda che tiene conto della replica e dell'overhead.
I limiti del traffico in uscita dalla rete sono elencati nella colonna Larghezza di banda di uscita predefinita (Gbps) nelle tabelle dei tipo di macchina per le famiglie di macchine per uso generico, ottimizzate per il calcolo, ottimizzate per lo spazio di archiviazione, ottimizzate per la memoria e ottimizzate per l'acceleratore.
Il moltiplicatore della larghezza di banda è circa 1,16x con l'utilizzo completo della rete, il che significa che il 16% dei byte scritti è overhead. Per il Persistent Disk regionale, il moltiplicatore di larghezza di banda è circa 2,32x per tenere conto dell'overhead di replica aggiuntivo.
In una situazione in cui le operazioni di lettura e scrittura del Persistent Disk competono con la larghezza di banda di uscita di rete, il 60% della larghezza di banda di uscita di rete massima, definita dal tipo di macchina, viene allocato alle scritture del Persistent Disk. Il restante 40% è disponibile per tutto il resto del traffico di rete in uscita. Per informazioni sul traffico in uscita da altre reti, consulta Larghezza di banda in uscita.
L'esempio seguente mostra come calcolare la larghezza di banda di scrittura massima per un Persistent Disk su un'istanza VM N1. L'allocazione della larghezza di banda è la porzione di larghezza di banda in uscita dalla rete allocata al Persistent Disk. La larghezza di banda di scrittura massima è la larghezza di banda di scrittura massima delPersistent Diske aggiustata per l'overhead.
Conteggio vCPU VM | Limite di traffico in uscita dalla rete (MB/s) | Allocazione della larghezza di banda (MB/s) | Larghezza di banda massima di scrittura (MB/s) | Larghezza di banda di scrittura massima con utilizzo completo della rete (MB/s) |
---|---|---|---|---|
1 | 250 | 150 | 216 | 129 |
2-7 | 1250 | 750 | 1078 | 647 |
8-15 | 2000 | 1200 | 1724 | 1034 |
16+ | 4000 | 2400 | 3448 | 2069 |
Puoi calcolare la larghezza di banda massima Persistent Disk utilizzando le seguenti formule:
VM N1 con 1 vCPU
Il limite per il traffico in uscita dalla rete è:
2 Gbps / 8 bit = 0,25 GB al secondo = 250 MB al secondo
L'allocazione della larghezza di banda Persistent Disk con utilizzo completo della rete è:
250 MB al secondo * 0,6 = 150 MB al secondo.
La larghezza di banda massima di scrittura del Persistent Disk senza contesa di rete è:
- Dischi di zona: 250 MB al secondo / 1,16 ~= 216 MB al secondo
- Dischi regionali: 250 MB al secondo / 2,32 ~= 108 MB al secondo
La larghezza di banda massima di scrittura del Persistent Disk con utilizzo completo della rete è:
- Dischi di zona: 150 MB al secondo / 1,16 ~= 129 MB al secondo
- Dischi regionali: 150 MB al secondo / 2,32 ~= 65 MB al secondo
I limiti di uscita di rete forniscono un limite superiore per le prestazioni. Altri fattori potrebbero limitare le prestazioni al di sotto di questo livello. Per informazioni su altri vincoli di rendimento, consulta le sezioni seguenti.
Letture e scritture simultanee
Per Persistent Disk standard, le letture e le scritture simultanee condividono le stesse risorse. Quando la VM utilizza un throughput di lettura o IOPS maggiore, può eseguire meno scritture. Al contrario, le istanze che utilizzano una velocità effettiva di scrittura o IOPS maggiore sono in grado di eseguire meno letture.
I volumi di Persistent Disk non possono raggiungere contemporaneamente i limiti massimi di throughput e IOPS sia per le letture che per le scritture.
Il calcolo della velocità effettiva è IOPS * I/O size
. Per sfruttare i limiti di throughput massimi per letture e scritture simultanee su dischi permanenti SSD, utilizza una dimensione I/O tale che le IOPS di lettura e scrittura combinate non superino il limite di IOPS.
La tabella seguente elenca i limiti IOPS per VM per letture e scritture simultanee.
Disco permanente standard | Disco permanente SSD (8 vCPU) | Disco permanente SSD (32+ vCPU) | Disco permanente SSD (64+ vCPU) | ||||
---|---|---|---|---|---|---|---|
Leggi | Scrittura | Lettura | Scrittura | Lettura | Scrittura | Lettura | Scrittura |
7500 | 0 | 15.000 | 0 | 60.000 | 0 | 100.000 | 0 |
5625 | 3750 | 11.250 | 3750 | 45.000 | 15.000 | 75.000 | 25.000 |
3750 | 7500 | 7500 | 7500 | 30.000 | 30.000 | 50.000 | 50.000 |
1875 | 11.250 | 3750 | 11.250 | 15.000 | 45.000 | 25.000 | 75.000 |
0 | 15.000 | 0 | 15.000 | 0 | 60.000 | 0 | 100.000 |
I numeri di IOPS in questa tabella si basano su una dimensione I/O di 8 KB. Altre dimensioni di I/O, ad esempio 16 KB, potrebbero avere numeri di IOPS diversi, ma mantenere la stessa distribuzione di lettura/scrittura.
La tabella seguente elenca i limiti di velocità effettiva (MB al secondo) per VM per letture e scritture simultanee.
Disco permanente standard | Disco permanente SSD (6-14 vCPU) | Disco permanente SSD (16+ vCPU) | |||
---|---|---|---|---|---|
Leggi | Scrittura | Lettura | Scrittura | Lettura | Scrittura |
1200 | 0 | 800* | 800* | 1200* | 1200* |
900 | 100 | ||||
600 | 200 | ||||
300 | 300 | ||||
0 | 400 |
Dimensione del volume logico
Il Persistent Disk può avere una dimensione massima di 64 TiB e puoi creare singoli volumi logici fino a 257 TiB utilizzando la gestione dei volumi logici all'interno della VM. Una dimensione del volume maggiore influisce sulle prestazioni nei seguenti modi:
- Non tutti i file system locali funzionano bene su questa scala. Le operazioni comuni, come il montaggio e il controllo del file system, potrebbero richiedere più tempo del previsto.
- Le prestazioni massime del disco permanente si ottengono con dimensioni più piccole. I dischi impiegano più tempo per essere letti o scritti completamente con questa quantità di spazio di archiviazione su una VM. Se la tua applicazione lo supporta, valuta la possibilità di utilizzare più VM per ottenere un throughput maggiore dell'intero sistema.
- La creazione di snapshot di un numero elevato di Persistent Disk potrebbe richiedere più tempo del previsto e potrebbe fornire una visualizzazione incoerente del volume logico senza un coordinamento attento con l'applicazione.
Più dischi collegati a una singola istanza VM
I limiti di prestazioni dei dischi quando hai più dischi collegati a una VM dipendono dal fatto che i dischi siano dello stesso tipo o di tipi diversi.
Più dischi dello stesso tipo
Se a un'istanza VM sono collegati più dischi dello stesso tipo nella stessa modalità (ad esempio, lettura/scrittura), i limiti di prestazioni sono gli stessi di un singolo disco con le dimensioni combinate di questi dischi. Se utilizzi tutti i dischi al 100%, il limite di prestazioni aggregate viene suddiviso in modo uniforme tra i dischi, indipendentemente dalle dimensioni relative del disco.
Ad esempio, supponi di avere un disco pd-standard
da 200 GB e un disco pd-standard
da 1000 GB. Se non utilizzi il disco da 1000 GB, il disco da 200 GB può raggiungere il limite di prestazioni di un disco standard da 1200 GB. Se utilizzi entrambi i dischi al 100%, ciascuno ha il limite di prestazioni di un disco da 600 GB pd-standard
(1200 GB / 2 dischi = 600 GB).
Più dischi di tipi diversi
Se colleghi diversi tipi di dischi a una VM, le prestazioni massime possibili sono il limite di prestazioni del disco più veloce supportato dalla VM. Le prestazioni cumulative dei dischi collegati non supereranno i limiti di prestazioni del disco più veloce supportato dalla VM.
Ottimizza i dischi per i workload orientati a IOPS o throughput
I consigli sul rendimento dipendono dal fatto che tu voglia massimizzare le IOPS o il throughput.
Carichi di lavoro orientati agli IOPS
I database, SQL o NoSQL, hanno pattern di utilizzo di accesso casuale ai dati. Google consiglia i seguenti valori per i carichi di lavoro orientati a IOPS:
Valori di profondità della coda I/O pari a 1 per ogni 400-800 IOPS, fino a un limite di 64 sui volumi di grandi dimensioni
Una CPU gratuita ogni 2000 IOPS di lettura casuali e una CPU gratuita ogni 2500 IOPS di scrittura casuali
Se disponibili per il tipo di macchina VM, utilizza i dischi Google Cloud Hyperdisk Extreme, che ti consentono di modificare gli IOPS di provisioning.
Valori di lettura anticipata inferiori sono in genere suggeriti nei documenti delle best practice per MongoDB, Apache Cassandra e altre applicazioni di database.
Workload orientati al throughput
Le operazioni di streaming, come un job Hadoop, traggono vantaggio da letture sequenziali veloci e dimensioni I/O maggiori possono aumentare le prestazioni di streaming.
Utilizza una dimensione I/O di 256 KB o superiore.
Se disponibili per il tipo di macchina VM, utilizza i dischi Hyperdisk Throughput, che ti consentono di modificare il throughput di cui è stato eseguito il provisioning.
Per il Persistent Disk standard, utilizza 8 o più flussi I/O sequenziali paralleli, se possibile. Il disco permanente standard è progettato per ottimizzare le prestazioni di I/O per l'accesso sequenziale al disco, in modo simile a un hard disk HDD fisico.
Assicurati che l'applicazione sia ottimizzata per una località dei dati ragionevole su dischi di grandi dimensioni.
Se la tua applicazione accede a dati distribuiti in diverse parti di un disco in un breve periodo di tempo (centinaia di GB per vCPU), non otterrai IOPS ottimali. Per ottenere le prestazioni migliori, esegui l'ottimizzazione per la località dei dati, valutando fattori come la frammentazione del disco e la casualità delle parti del disco a cui si accede.
Per il disco permanente SSD, assicurati che lo scheduler I/O nel sistema operativo sia configurato per soddisfare le tue esigenze specifiche.
Sui sistemi basati su Linux, controlla se lo scheduler I/O è impostato su
none
. Questo scheduler I/O non riordina le richieste ed è ideale per dispositivi I/O casuali e veloci.Nella riga di comando, verifica la pianificazione I/O utilizzata dalla tua macchina Linux:
cat /sys/block/sda/queue/scheduler
L'output è simile al seguente:
[mq-deadline] none
Lo scheduler I/O attualmente attivo viene visualizzato tra parentesi quadre (
[]
).Se lo scheduler I/O non è impostato su
none
, esegui uno dei seguenti passaggi:- Per modificare lo scheduler I/O predefinito in
none
, impostaelevator=none
nella voceGRUB_CMDLINE_LINUX
del file di configurazione GRUB. In genere questo file si trova in/etc/default/grub
, ma in alcune distribuzioni precedenti potrebbe trovarsi in una directory diversa.
GRUB_CMDLINE_LINUX="elevator=none vconsole.keymap=us console=ttyS0,38400n8 vconsole.font=latarcyrheb-sun16
Dopo aver aggiornato il file di configurazione GRUB, configura il bootloader sul sistema in modo che possa essere avviato su Compute Engine.
- In alternativa, puoi modificare lo scheduler I/O in fase di runtime:
echo 'none' > sudo /sys/block/sda/queue/scheduler
Se utilizzi questo metodo, il sistema torna allo scheduler I/O predefinito al riavvio. Esegui di nuovo il comando
cat
per verificare lo scheduler I/O.- Per modificare lo scheduler I/O predefinito in
Modifiche del workload che possono migliorare le prestazioni del disco
Alcuni comportamenti del workload possono migliorare le prestazioni delle operazioni di I/O sui dischi collegati.
Utilizza una profondità di coda I/O elevata
I dischi permanenti hanno una latenza più elevata rispetto ai dischi collegati localmente, come le SSD locali, perché sono dispositivi collegati alla rete. Possono fornire un numero molto elevato di IOPS e di throughput, ma devi assicurarti che vengano eseguite richieste I/O sufficienti in parallelo. Il numero di richieste I/O eseguite in parallelo è chiamato profondità della coda I/O.
Le tabelle seguenti mostrano la profondità della coda I/O consigliata per assicurarti di poter ottenere un determinato livello di prestazioni. Tieni presente che la tabella seguente utilizza una leggera sovrastima della latenza tipica per mostrare consigli prudenti. L'esempio presuppone che tu stia utilizzando una dimensione I/O di 16 KB.
Genera I/O sufficienti utilizzando una dimensione I/O elevata
Utilizzare dimensioni I/O elevate
Per assicurarti che i limiti di IOPS e la latenza non ostacolino le prestazioni dell'applicazione, utilizza una dimensione I/O minima di 256 KB o superiore.
Utilizza dimensioni delle strisce grandi per le applicazioni del file system distribuito. Un carico di lavoro di I/O casuale che utilizza dimensioni delle strisce grandi (4 MB o più) ottiene ottime prestazioni sul Persistent Disk standard perché il carico di lavoro simula da vicino l'accesso al disco di più stream sequenziali.
Assicurati che la tua applicazione generi I/O sufficienti
Assicurati che la tua applicazione generi I/O sufficienti per utilizzare completamente i limiti di IOPS e throughput del disco. Per comprendere meglio il pattern I/O del tuo carico di lavoro, esamina le metriche di utilizzo e rendimento del disco permanente in Cloud Monitoring.
Assicurati che ci sia CPU disponibile a sufficienza nell'istanza che genera l'I/O
Se la tua istanza VM non dispone di CPU sufficiente, l'app non potrà gestire le IOPS descritte in precedenza. Ti consigliamo di avere una CPU disponibile ogni 2000-2500 IOPS di traffico previsto.
Limita i carichi I/O elevati a un intervallo massimo
Un intervallo si riferisce a un intervallo contiguo di indirizzi di blocchi logici su un singolo disco fisico. I carichi di I/O elevati raggiungono le massime prestazioni se limitati a un determinato intervallo massimo, che dipende dal tipo di macchina della VM a cui è collegato il disco, come elencato nella tabella seguente.
Tipo di macchina | Durata massima consigliata |
---|---|
|
25 TB |
Tutti gli altri tipi di macchine | 50 TB |
Gli intervalli su Persistent Disk separati che raggiungono un totale di 50 TB o meno possono essere considerati equivalenti a un singolo intervallo di 50 TB ai fini del rendimento.
Modifiche al sistema operativo per migliorare le prestazioni del disco
In alcuni casi, puoi attivare o disattivare le funzionalità a livello di sistema operativo o configurare i dischi collegati in modi specifici per migliorare le prestazioni del disco.
Evita di utilizzare file system ext3 in Linux
L'utilizzo del file system ext3 in una VM Linux può comportare prestazioni molto scarse in caso di carichi di scrittura elevati. Se possibile, utilizza ext4. Il driver del file system ext4 è compatibile con le versioni precedenti ext3/ext2 e supporta il montaggio di file system ext3. Il file system ext4 è l'impostazione predefinita sulla maggior parte dei sistemi operativi Linux.
Se non puoi eseguire la migrazione a ext4, come soluzione alternativa puoi montare i file system ext3 con l'opzione di montaggio data=journal
. Ciò migliora le IOPS di scrittura
a scapito della velocità effettiva di scrittura. La migrazione a ext4 può comportare un miglioramento fino a 7 volte
in alcuni benchmark.
Disattiva l'inizializzazione lazy e attiva i comandi DISCARD
I dischi permanenti supportano le operazioni di eliminazione o i comandi
TRIM
, che consentono ai sistemi operativi di comunicare ai dischi quando i blocchi non sono più in uso. Il supporto per l'eliminazione consente al sistema operativo di contrassegnare i blocchi del disco come non più necessari, senza incorrere nel costo di azzeramento dei blocchi.
Nella maggior parte dei sistemi operativi Linux, attivi le operazioni di eliminazione quando monti un Persistent Diske sulla tua VM. Le VM Windows Server 2012 R2 abilitano le operazioni di eliminazione per impostazione predefinita quando monti un Persistent Disk.
L'attivazione delle operazioni di eliminazione può migliorare le prestazioni generali del runtime e può anche velocizzare le prestazioni del disco al primo montaggio. La formattazione di un intero volume del disco può richiedere molto tempo, pertanto la formattazione differita è una pratica comune. Lo svantaggio della formattazione differita è che il costo viene spesso pagato la prima volta che il volume viene montato. Disattivando l'inizializzazione differita e attivando le operazioni di eliminazione, puoi ottenere operazioni di formattazione e montaggio rapide.
Disabilita l'inizializzazione differita e abilita le operazioni di eliminazione durante la formattazione di un disco passando i seguenti parametri a mkfs.ext4:
-E lazy_itable_init=0,lazy_journal_init=0,discard
Il parametro
lazy_journal_init=0
non funziona sulle istanze con immagini CentOS 6 o RHEL 6. Per le VM che utilizzano questi sistemi operativi, formatta il Persistent Disk senza questo parametro.-E lazy_itable_init=0,discard
Abilita le operazioni di eliminazione durante il montaggio di un disco passando il seguente flag al comando
mount
:-o discard
Il Persistent Disk funziona bene con le operazioni di eliminazione abilitate. Tuttavia, puoi eseguire fstrim
periodicamente in aggiunta o in alternativa all'utilizzo delle operazioni di eliminazione. Se non utilizzi le operazioni di eliminazione, esegui
fstrim
prima di creare uno snapshot del disco di avvio. Il troncamento del file
system ti consente di creare immagini snapshot più piccole, riducendo il costo di
archiviazione degli snapshot.
Modificare il valore di lettura anticipata
Per migliorare le prestazioni di I/O, i sistemi operativi utilizzano tecniche come readahead, in cui viene letto in memoria un numero maggiore di file rispetto a quelli richiesti, presupponendo che le letture successive avranno probabilmente bisogno di questi dati. Un valore readahead più elevato aumenta la velocità effettiva a scapito di memoria e IOPS. Un valore di lettura anticipata inferiore aumenta le IOPS a scapito del throughput.
Sui sistemi Linux, puoi ottenere e impostare il valore di lettura anticipata con il comando blockdev:
$ sudo blockdev --getra /dev/DEVICE_ID
$ sudo blockdev --setra VALUE /dev/DEVICE_ID
Il valore di lettura anticipata è <desired_readahead_bytes>
/ 512 byte.
Ad esempio, per una lettura anticipata di 8 MB, 8 MB corrispondono a 8388608 byte (8 * 1024 * 1024).
8388608 bytes / 512 bytes = 16384
Hai impostato blockdev su 16384
:
$ sudo blockdev --setra 16384 /dev/DEVICE_ID
Modifica la VM o creane una nuova
Esistono limiti associati a ogni tipo di macchina VM che possono influire sulle prestazioni che puoi ottenere dai dischi collegati. Questi limiti includono:
- Le prestazioni di Persistent Disk aumentano con l'aumentare del numero di vCPU disponibili.
- Hyperdisk non sono supportati con tutti i tipi di macchine.
- Le tariffe di uscita di rete aumentano con l'aumentare del numero di vCPU disponibili.
Assicurati di avere CPU libere
La lettura e la scrittura sul disco permanente richiedono cicli CPU dalla VM. Per ottenere livelli di IOPS molto elevati e coerenti, devi avere CPU libere per elaborare l'I/O.
Per aumentare il numero di vCPU disponibili con la VM, puoi creare una nuova VM oppure modificare il tipo di macchina di un'istanza VM.
Crea una nuova VM per ottenere nuove funzionalità
I tipi di dischi più recenti non sono supportati da tutte le serie o i tipi di macchine. Hyperdisk forniscono IOPS o velocità di throughput più elevate per i tuoi workload, ma al momento sono disponibili solo con alcune serie di macchine e richiedono almeno 64 vCPU.
Le nuove serie di macchine virtuali in genere vengono eseguite su CPU più recenti, che possono offrire prestazioni migliori rispetto alle precedenti. Inoltre, le CPU più recenti possono supportare funzionalità aggiuntive per migliorare le prestazioni dei carichi di lavoro, come Advanced Matrix Extensions (AMX) o Intel Advanced Vector Extensions (AVX-512).
Passaggi successivi
- Monitora le prestazioni del disco esaminando le metriche sulle prestazioni del disco e monitorando l'integrità del disco.
- Esegui il benchmark dei volumi del disco permanente collegati alle VM Linux.
- Scopri di più sui prezzi di Persistent Disk.
- Scopri come monitorare le prestazioni del disco esaminando le metriche sulle prestazioni del disco permanente.