Ottimizzazione delle prestazioni del disco permanente


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 dimensionato volumi disco permanente per soddisfare le tue esigenze di prestazioni, il tuo carico di lavoro del tuo sistema operativo potrebbe richiedere un po' di ottimizzazione.

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 suggerimenti e come applicarli a specifiche diversi tipi 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

La VM ha un limite di uscita di rete che dipende dal tipo di macchina della VM.

Compute Engine archivia i dati su disco permanente 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 traffico in uscita della rete sono elencati nella colonna Larghezza di banda in uscita massima (Gbps) nelle tabelle dei tipi di macchine 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 dischi permanenti 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 disco permanente 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 disco permanente. 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 su un Persistent Disk Istanza VM N1. L'allocazione della larghezza di banda è la parte del traffico di rete in uscita di larghezza di banda allocata al Persistent Disk. La larghezza di banda massima di scrittura è larghezza di banda massima in scrittura del Persistent Disk regolata in base all'overhead.

Conteggio di 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 massima in scrittura al massimo utilizzo della rete (MB/s)
1 250 150 216 129
2-7 1.250 750 1078 647
8-15 2000 1200 1724 1.034
16+ 4000 2400 3448 2.069

Puoi calcolare la larghezza di banda massima Persistent Disk utilizzando: formule:

VM N1 con 1 vCPU

Il limite di traffico in uscita dalla rete è:

2 Gbit/s/8 bit = 0,25 GB al secondo = 250 MB al secondo

L'allocazione della larghezza di banda Persistent Disk al pieno utilizzo della rete è:

250 MB al secondo * 0,6 = 150 MB al secondo.

La larghezza di banda in scrittura massima Persistent Disk senza conflitti 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 disco permanente 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 traffico in uscita dalla rete forniscono un limite superiore alle prestazioni. Altri fattori potrebbero limitare il rendimento al di sotto di questo livello. Consulta le seguenti sezioni per informazioni su altri vincoli di prestazioni.

Letture e scritture simultanee

Per i Persistent Disk standard, letture e scritture simultanee hanno lo stesso Google Cloud. Quando la VM utilizza una maggiore velocità effettiva in lettura o IOPS, è in grado di eseguire meno scritture. Al contrario, le istanze che utilizzano la velocità effettiva di scrittura o il numero di IOPS possono eseguire meno letture.

I volumi dei Persistent Disk non possono raggiungere contemporaneamente la velocità effettiva massima Limiti di IOPS sia per le operazioni di lettura 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 disco permanente SSD, 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 (oltre 32 vCPU) Disco permanente SSD (oltre 64 vCPU)
Leggi Scrittura Leggi Scrittura Leggi Scrittura Leggi Scrittura
7.500 0 15.000 0 60.000 0 100.000 0
5.625 3750 11.250 3750 45.000 15.000 75.000 25.000
3750 7500 7.500 7.500 30.000 30.000 50.000 50.000
1875 11.250 3.750 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 velocità effettiva (MB al secondo) per VM per con 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

* Per i dischi SSD permanenti, la velocità effettiva di lettura massima e la velocità effettiva di scrittura massima sono indipendenti l'una dall'altra, pertanto questi limiti sono costanti.

Dimensione del volume logico

Il disco permanente 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. Una dimensione del volume maggiore influisce sulle prestazioni nei seguenti modi:

  • Non tutti i file system locali funzionano bene su questa scala. Operazioni comuni, come poiché 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 le tue un'applicazione che lo supporta, valuta la possibilità di utilizzare più VM per una maggiore e la velocità effettiva effettiva.
  • La creazione di snapshot di un numero elevato di dischi persistenti 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 in stessa modalità (ad esempio lettura/scrittura), i limiti delle prestazioni sono gli stessi limiti di un singolo disco che ha la dimensione combinata 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 una 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 = disco da 600 GB).

Più dischi di tipi diversi

Se colleghi diversi tipi di dischi a una VM, le prestazioni massime possibili è il limite delle prestazioni del disco più veloce supportato dalla VM. La le prestazioni cumulative dei dischi collegati non supereranno le prestazioni del disco più veloce supportato dalla VM.

Ottimizza i dischi per carichi di lavoro orientati a IOPS o throughput

I suggerimenti sulle prestazioni variano a seconda che tu voglia massimizzare le IOPS o e la velocità effettiva effettiva.

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 compreso tra 400 e 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 disponibile per il tuo tipo di macchina VM, utilizza Google Cloud Hyperdisk Extreme che consentono di modificare le IOPS sottoposte a provisioning.

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 flusso, come un job Hadoop, traggono vantaggio dalla rapida sequenza letture e dimensioni di I/O maggiori possono aumentare le prestazioni dei flussi di dati.

  • 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 la velocità effettiva di cui è stato eseguito il provisioning.

  • Per i dischi permanenti 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 dati temporali ragionevoli località su dischi di grandi dimensioni.

    Se l'applicazione accede a dati distribuiti in parti diverse di un disco per un breve periodo di tempo (centinaia di GB per vCPU), a raggiungere 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 scheduler I/O è impostato su none. Questo pianificatore I/O non riordina le richieste ed è ideale per dispositivi I/O rapidi e casuali.

    1. 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 ([]).

    2. Se lo scheduler I/O non è impostato su none, esegui una delle seguenti operazioni passaggi:

      • Per cambiare lo scheduler I/O predefinito su none, imposta elevator=none in la voce GRUB_CMDLINE_LINUX del file di configurazione GRUB. Di solito questo file si trova in /etc/default/grub, ma in alcune istanze distribuzioni, 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 runtime:
      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.

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 altissime prestazioni IOPS e velocità effettiva, ma devi assicurarti che vengano effettuate richieste di I/O sufficienti in parallelo. 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 garantire che i limiti e la latenza delle IOPS non rappresentino un collo di bottiglia per la tua applicazione. delle prestazioni, utilizza una dimensione I/O minima di 256 kB o superiore.

    Utilizza dimensioni degli strisce grandi per le applicazioni del file system distribuito. Un tipo casuale Il carico di lavoro di I/O che utilizza stripe di grandi dimensioni (4 MB o più) consente di ottenere prestazioni su Persistent Disk standard in base alla precisione con cui il carico che imita più accessi al disco in modalità flusso sequenziale.

  • Assicurati che l'applicazione stia generando un I/O sufficiente

    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 carico di lavoro, esamina le metriche sul rendimento e sull'utilizzo dei dischi permanenti in Cloud Monitoring.

  • Assicurati che la CPU disponibile sia sufficiente sull'istanza in fase di generazione all'I/O

    Se la tua istanza VM ha bisogno di CPU, l'app 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 è un intervallo contiguo di indirizzi di blocchi logici su una singola un 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
  • m2-megamem-416
  • VM C2D
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 di un file system ext3 in una VM Linux può portare a prestazioni molto scarse in in modo molto intensivo. Se possibile, utilizza ext4. Il driver del file system ext4 è compatibile con le versioni precedenti di ext3/ext2 e supporta il montaggio di ext3 file system in esecuzione. Il file system ext4 è l'impostazione predefinita sulla maggior parte dei sistemi operativi Linux.

Se non riesci a eseguire la migrazione a ext4, come soluzione alternativa, puoi montare ext3 file system con l'opzione di montaggio data=journal. Ciò migliora le IOPS di scrittura a costo del throughput di scrittura. La migrazione a ext4 può causare fino a 7 volte migliore 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. Se ignori il supporto, il sistema operativo può contrassegnare il disco blocchi in quanto non sono più necessari, senza il costo di azzerare isolati.

Sulla maggior parte dei sistemi operativi Linux, le operazioni di eliminazione vengono abilitate quando si monta un Persistent Disk sulla VM. Le VM di Windows Server 2012 R2 abilitano le operazioni di annullamento per impostazione predefinita quando monta un Persistent Disk.

L'abilitazione delle operazioni di eliminazione può migliorare le prestazioni di runtime generali accelerano anche le prestazioni del disco quando viene montato per la prima volta. 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. Disattivando la funzionalità Lazy l'inizializzazione e l'abilitazione delle operazioni di annullamento, puoi ottenere operazioni di montaggio.

  • 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 del disco permanente, 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 disco permanente funziona bene con le operazioni di eliminazione abilitate. Tuttavia, facoltativamente eseguire fstrim periodicamente in aggiunta o al posto di utilizzando le operazioni di scarto. Se non utilizzi le operazioni di eliminazione, esegui fstrim prima di creare uno snapshot del disco di avvio. Taglio del file consente di creare istantanee più piccole, il che riduce il costo per l'archiviazione di snapshot.

Regola il valore di readahead

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. Aumenti di lettura maggiori a scapito di memoria e IOPS. Un valore di lettura inferiore aumenta le IOPS a scapito della velocità effettiva.

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 readahead è <desired_readahead_bytes> / 512 byte.

Ad esempio, per un readahead 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

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 all'aumentare del numero di vCPU disponibili.
  • Gli Hyperdisk non sono supportati con tutti i tipi di macchina.
  • Le tariffe di traffico in uscita dalla rete aumentano con il numero di incrementi di vCPU disponibili.

Assicurati di avere CPU gratuite

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 libera di elaborare l'I/O.

Per aumentare il numero di vCPU disponibili con la tua VM, puoi creare una nuova VM oppure puoi modificare il tipo di macchina di un'istanza VM.

Creare una nuova VM per ottenere nuove funzionalità

I tipi di disco più recenti non sono supportati per tutte le serie o tutti i tipi di macchina. Iperdisco offrono velocità effettiva o IOPS più elevate per i tuoi carichi di lavoro, ma al momento sono è disponibile solo con poche serie di macchine e richiedono almeno 64 vCPU.

Le nuove serie di macchine VM in genere vengono eseguite su CPU più recenti, il che può offrire rispetto ai loro predecessori. Inoltre, le CPU più recenti supportano di funzionalità aggiuntive per migliorare le prestazioni dei carichi di lavoro, ad esempio: Estensioni AMX (Advanced Matrix Extensions) o Intel Advanced Vector Extensions (AVX-512).

Passaggi successivi