I dischi permanenti offrono le prestazioni descritte nel grafico dei tipi di disco se la VM genera un utilizzo sufficiente per raggiungere i limiti di prestazioni. Dopo aver impostato le dimensioni dei volumi dei disco permanente in base alle tue esigenze di prestazioni, il tuo carico di lavoro e il tuo sistema operativo potrebbero richiedere alcune modifiche.
Le sezioni seguenti descrivono le caratteristiche delle VM e dei carichi di lavoro che influiscono sul funzionamento del disco e illustrano alcuni elementi chiave che possono essere ottimizzati per migliorare il funzionamento. Alcuni dei suggerimenti e come applicarne alcuni 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 di traffico in uscita dalla rete per la velocità effettiva di scrittura
- Letture e scritture simultanee
- Dimensioni del volume logico
- Più dischi collegati a una singola istanza VM
Limiti di traffico in uscita dalla rete per la velocità effettiva di scrittura
La 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 comporta un certo ovverhead che utilizza una larghezza di banda di scrittura aggiuntiva.
Il traffico di scrittura massimo che un'istanza VM può emettere è il limite di uscita della rete diviso per un moltiplicatore di larghezza di banda che tiene conto della replica e dell'overhead.
I limiti di uscita della rete sono elencati nella colonna Larghezza di banda in uscita massima (Gbps) nelle tabelle dei tipo di macchina per le famiglie di macchine general purpose, ottimizzate per il calcolo, ottimizzate per lo storage, ottimizzate per la memoria e ottimizzate per l'acceleratore.
Il moltiplicatore della larghezza di banda è di circa 1,16 volte a utilizzo completo della rete, il che significa che il 16% dei byte scritti è overhead. Per i Persistent Disk regionali, il moltiplicatore di larghezza di banda è approssimativamente 2,32 volte per tenere conto del sovraccarico aggiuntivo della replica.
In una situazione in cui le operazioni di lettura e scrittura del Persistent Disk competono con la larghezza di banda in uscita della rete, il 60% della larghezza di banda in uscita massima della rete, definita dal tipo di macchina, viene allocato alle scritture del Persistent Disk. Il 40% rimanente è disponibile per tutto il resto del traffico di rete in uscita. Consulta la sezione relativa alla larghezza di banda in uscita per informazioni sull'altro traffico in uscita dalla rete.
L'esempio seguente mostra come calcolare la larghezza di banda massima in scrittura per un Persistent Disk su un'istanza VM N1. L'allocazione della larghezza di banda è la parte della larghezza di banda di rete in uscita allocata al Persistent Disk. La larghezza di banda di scrittura massima è la larghezza di banda di scrittura massima del Persistent Disk corretta per l'overhead.
Conteggio vCPU VM | Limite di traffico in uscita dalla rete (MB/s) | Allokazione della larghezza di banda (MB/s) | Larghezza di banda di scrittura massima (MB/s) | Larghezza di banda di scrittura massima a 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 di 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 di scrittura massima del Persistent Disk senza contese di rete è:
- Dischi zonali: 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 zonali: 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 della rete forniscono un limite superiore alle prestazioni. Altri fattori potrebbero limitare le prestazioni al di sotto di questo livello. Consulta le sezioni seguenti per informazioni su altri vincoli di prestazioni.
Letture e scritture simultanee
Per Persistent Disk standard, le letture e le scritture simultanee condividono le stesse risorse. Quando la VM utilizza una maggiore velocità effettiva in lettura o IOPS, è in grado di eseguire meno scritture. Al contrario, le istanze che utilizzano più throughput in scrittura o IOPS sono in grado di eseguire meno letture.
I volumi dei Persistent Disk non possono raggiungere contemporaneamente i limiti di velocità effettiva e IOPS massimi sia per le letture sia per le scritture.
Il calcolo della produttività è IOPS * I/O size
. Per sfruttare i limiti di throughput massimi per letture e scritture simultanee su SSD Persistent Disk, utilizza una dimensione I/O tale che le IOPS combinate di lettura e scrittura non superino il limite di IOPS.
La tabella seguente elenca i limiti di IOPS per VM per letture e scritture simultanee.
Disco permanente standard | Disco permanente SSD (8 vCPU) | Disco permanente SSD (più di 32 vCPU) | Disco permanente SSD (più di 64 vCPU) | ||||
---|---|---|---|---|---|---|---|
Leggi | Scrittura | Leggi | Scrittura | Leggi | Scrittura | Leggi | 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 dimensioni di 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 throughput (MB al secondo) per VM per letture e scritture simultanee.
Disco permanente standard | Disco permanente SSD (6-14 vCPU) | Disco permanente SSD (più di 16 vCPU) | |||
---|---|---|---|---|---|
Leggi | Scrittura | Leggi | Scrittura | Leggi | 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 di massimo 257 TiB utilizzando la gestione dei volumi logici all'interno della VM. Un volume di dimensioni maggiori 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 vengono raggiunte con dimensioni inferiori. Con questa quantità di spazio di archiviazione su una VM, la lettura o la scrittura completa dei dischi richiede più tempo. Se la tua applicazione lo supporta, valuta la possibilità di utilizzare più VM per un throughput complessivo del sistema maggiore.
- La creazione di snapshot di un numero elevato di Persistent Disk potrebbe richiedere più tempo del previsto e fornire una visione incoerente del volume logico senza un'attenta coordinazione con l'applicazione.
Più dischi collegati a una singola istanza VM
I limiti di prestazioni dei dischi quando sono collegati più dischi a una VM dipendono dal fatto che i dischi siano dello stesso tipo o di tipi diversi.
Più dischi dello stesso tipo
Se hai più dischi dello stesso tipo collegati a un'istanza VM 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 uniformemente tra i dischi, indipendentemente dalle dimensioni relative.
Ad esempio, supponiamo che tu abbia 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 pd-standard
da 600 GB (1200 GB / 2 dischi = disco da 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 carichi di lavoro orientati a IOPS o throughput
I consigli per le prestazioni dipendono dal fatto che tu voglia massimizzare le IOPS o la produttività.
Carichi di lavoro orientati alle IOPS
I database, che siano 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à di coda I/O pari a 1 per ogni intervallo da 400 a 800 IOPS, fino a un limite di 64 su volumi di grandi dimensioni
Una CPU gratuita per ogni 2000 IOPS di lettura casuali e una CPU gratuita per ogni 2500 IOPS di scrittura casuali
Se disponibili per il tipo di macchina VM, utilizza i dischi Hyperdisk Extreme di Google Cloud, che ti consentono di modificare le IOPS provisionate.
In genere, i valori di lettura anticipata più bassi sono suggeriti nei documenti delle best practice per MongoDB, Apache Cassandra e altre applicazioni di database.
Carichi di lavoro orientati alla velocità effettiva
Le operazioni di streaming, come un job Hadoop, beneficiano di letture sequenziali rapide e dimensioni I/O più grandi possono aumentare le prestazioni di streaming.
Utilizza una dimensione I/O di almeno 256 KB.
Se disponibili per il tipo di macchina VM, utilizza i dischi Hyperdisk Throughput, che ti consentono di modificare il throughput riservato.
Per Persistent Disk standard, utilizza almeno 8 stream I/O sequenziali paralleli, se possibile. Il disco permanente standard è progettato per ottimizzare le prestazioni I/O per l'accesso sequenziale al disco, in modo simile a un disco rigido HDD fisico.
Assicurati che l'applicazione sia ottimizzata per una località temporale ragionevole dei dati su dischi di grandi dimensioni.
Se la tua applicazione accede a dati distribuiti su diverse parti di un disco in un breve periodo di tempo (centinaia di GB per vCPU), non otterrai IOPS ottimali. Per ottenere le migliori prestazioni, esegui l'ottimizzazione in base alla località dei dati temporali, tenendo conto di fattori quali la frammentazione del disco e la casualità delle parti del disco a cui viene eseguito l'accesso.
Per il disco permanente SSD, assicurati che lo schedulatore I/O nel sistema operativo sia configurato per soddisfare le tue esigenze specifiche.
Sui sistemi basati su Linux, controlla se lo schedulatore I/O è impostato su
none
. Questo pianificatore I/O non riordina le richieste ed è ideale per dispositivi I/O rapidi e casuali.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 quadra (
[]
).Se lo schedulatore I/O non è impostato su
none
, esegui uno dei seguenti passaggi:- Per impostare lo schedulatore I/O predefinito su
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 avviarsi su Compute Engine.
- In alternativa, puoi modificare lo scheduler I/O in fase di esecuzione:
echo 'none' > sudo /sys/block/sda/queue/scheduler
Se utilizzi questo metodo, al riavvio il sistema torna allo schedulatore I/O predefinito. Esegui di nuovo il comando
cat
per verificare lo schedulatore I/O.- Per impostare lo schedulatore I/O predefinito su
Modifiche al carico di lavoro che possono migliorare le prestazioni del disco
Alcuni comportamenti dei carichi di lavoro 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 i dischi SSD locali, perché sono dispositivi collegati alla rete. Possono fornire IOPS e throughput molto elevati, ma devi assicurarti che vengano eseguite in parallelo richieste I/O sufficienti. Il numero di richieste di 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 raggiungere 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 l'utilizzo di una dimensione I/O di 16 KB.
Generare input/output sufficienti utilizzando dimensioni I/O elevate
Utilizzare dimensioni I/O di grandi dimensioni
Per assicurarti che i limiti di IOPS e la latenza non creino un collo di bottiglia per le prestazioni della tua applicazione, utilizza una dimensione I/O minima di 256 KB o superiore.
Utilizza dimensioni degli strisce grandi per le applicazioni del file system distribuito. Un workload I/O randomico che utilizza dimensioni degli strisce grandi (4 MB o più) offre ottime prestazioni su Persistent Disk standard a causa della stretta somiglianza del workload con l'accesso a più stream sequenziali sul disco.
Assicurati che l'applicazione generi I/O sufficienti
Assicurati che l'applicazione generi I/O sufficienti per utilizzare completamente le IOPS e i limiti di throughput del disco. Per comprendere meglio il pattern I/O del tuo workload, esamina le metriche relative all'utilizzo e alle prestazioni dei disco permanente in Cloud Monitoring.
Assicurati che la CPU disponibile sull'istanza che genera l'I/O sia sufficiente
Se l'istanza VM non dispone di CPU, la tua app non potrà gestire le IOPS descritte in precedenza. Ti consigliamo di avere una CPU disponibile per 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 blocco logici su un singolo disco fisico. I carichi di I/O elevati raggiungono le prestazioni massime se limitati a un determinato intervallo massimo, che dipende dal tipo di macchina della VM a cui è collegato il disco, come indicato nella tabella seguente.
Tipo di macchina | Periodo massimo consigliato |
---|---|
|
25 TB |
Tutti gli altri tipi di macchine | 50 TB |
Gli span su dischi permanenti separati che aggiungono fino a 50 TB o meno possono essere considerati uguali a un singolo span di 50 TB per motivi di prestazioni.
Modifiche al sistema operativo per migliorare le prestazioni del disco
In alcuni casi, puoi attivare o disattivare le funzionalità a livello di sistema operativo oppure configurare i dischi collegati in modi specifici per migliorarne le prestazioni.
Evita di utilizzare file system ext3 in Linux
L'utilizzo del file system ext3 in una VM Linux può comportare prestazioni molto scarse con carichi di scrittura elevati. Se possibile, utilizza ext4. Il driver del file system ext4 è compatibile con le versioni precedenti di ext3/ext2 e supporta il montaggio di file system ext3. Il file system ext4 è quello predefinito sulla maggior parte dei sistemi operativi Linux.
Se non riesci a 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 costo del throughput 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 Persistent Disk supportano operazioni di eliminazione o comandi TRIM
, che consentono ai sistemi operativi di informare i dischi quando i blocchi non sono più in uso. Il supporto dell'eliminazione consente al sistema operativo di contrassegnare i blocchi del disco come non più necessari, senza doverli azzerare.
Sulla maggior parte dei sistemi operativi Linux, attivi le operazioni di eliminazione quando monti un Persistent Disk sulla VM. Le VM Windows Server 2012 R2 attivano le operazioni di eliminazione per impostazione predefinita quando viene montato un Persistent Disk.
L'attivazione delle operazioni di esclusione può migliorare le prestazioni generali di runtime e anche accelerare le prestazioni del disco al primo montaggio. La formattazione di un intero volume del disco può richiedere molto tempo, pertanto la formattazione lazy è una pratica comune. Lo svantaggio della formattazione lazy è che il costo viene spesso pagato la prima volta che il volume viene montato. Se disattivi l'inizializzazione lazy e attivi le operazioni di eliminazione, puoi eseguire operazioni di formattazione e montaggio rapide.
Disattiva l'inizializzazione lazy 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 nelle 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
Per abilitare le operazioni di esclusione durante il montaggio di un disco, passa il seguente flag al comando
mount
:-o discard
Il Persistent Disk funziona bene con le operazioni di eliminazione abilitate. Tuttavia, se vuoi, puoi eseguire fstrim
periodicamente in aggiunta o al posto dell'utilizzo di operazioni di eliminazione. Se non utilizzi le operazioni di eliminazione, esegui
fstrim
prima di creare uno snapshot del disco di avvio. Il taglio del sistema di file consente di creare immagini degli snapshot più piccole, il che riduce il costo di archiviazione degli snapshot.
Modificare il valore di lettura anticipata
Per migliorare le prestazioni I/O, i sistemi operativi utilizzano tecniche come la lettura anticipata, in cui viene letto in memoria più di un file rispetto a quanto richiesto, presupponendo che le letture successive abbiano probabilmente bisogno di questi dati. Un valore di lettura anticipata più elevato aumenta la velocità effettiva a spese della memoria e delle IOPS. Una lettura anticipata inferiore aumenta le IOPS a spese 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 un'anticipazione di lettura di 8 MB, 8 MB corrispondono a 8388608 byte (8 * 1024 * 1024).
8388608 bytes / 512 bytes = 16384
Imposti blockdev su 16384
:
$ sudo blockdev --setra 16384 /dev/DEVICE_ID
Modificare la VM o crearne 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'aumento del numero di vCPU disponibili.
- Gli Hyperdisk non sono supportati con tutti i tipi di macchine.
- Le tariffe di uscita della rete aumentano con l'aumento del numero di vCPU disponibili.
Assicurati di avere CPU libere
La lettura e la scrittura sul disco permanente richiedono cicli CPU dalla VM. Per raggiungere livelli di IOPS molto elevati e coerenti, devi avere CPU libere per elaborare le operazioni di I/O.
Per aumentare il numero di vCPU disponibili con la tua VM, puoi creare una nuova VM o modificare il tipo di macchina di un'istanza VM.
Creare una nuova VM per ottenere nuove funzionalità
I tipi di dischi più recenti non sono supportati con tutte le serie o tutti i tipi di macchine. Gli Hyperdisk offrono IOPS o tassi di throughput più elevati per i tuoi carichi di lavoro, ma al momento sono disponibili solo con alcune serie di macchine e richiedono almeno 64 vCPU.
Le nuove serie di macchine VM in genere funzionano su CPU più recenti, che possono offrire prestazioni migliori rispetto alle loro versioni precedenti. Inoltre, le CPU più recenti possono supportare funzionalità aggiuntive per migliorare le prestazioni dei carichi di lavoro, come le Advanced Matrix Extensions (AMX) o le Intel Advanced Vector Extensions (AVX-512).
Passaggi successivi
- Monitora le prestazioni del disco esaminando le metriche sul rendimento del disco e monitorando lo stato del disco.
- Esegui il benchmark dei volumi dei dischi permanenti collegati alle VM Linux.
- Scopri i prezzi dei dischi permanenti.
- Scopri come monitorare le prestazioni del disco esaminando le metriche sulle prestazioni dei dischi permanenti.