Ottimizzazione delle prestazioni del disco permanente

I dischi permanenti offrono le prestazioni descritte nella grafico del tipo di disco se la VM che è sufficiente a 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 di VM e carichi di lavoro che influiscono sul disco delle prestazioni. e parleremo di alcuni elementi chiave che possono essere ottimizzati delle prestazioni. 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 sul disco le prestazioni di una VM.

Limiti di traffico in uscita dalla rete sulla velocità effettiva di scrittura

La VM ha un limite di traffico di rete in uscita che dipende 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 che utilizza una larghezza di banda di scrittura aggiuntiva.

Il traffico di scrittura massimo che un'istanza VM può emettere è limite del traffico in uscita dalla rete diviso per un moltiplicatore di larghezza di banda che tiene conto del la replica e l'overhead.

I limiti di traffico in uscita dalla rete sono elencati nella sezione Larghezza di banda massima in uscita (Gbps). nelle tabelle dei tipo di macchina uso generico, ottimizzate per il calcolo, ottimizzate per lo spazio di archiviazione, ottimizzate per la memoria e ottimizzate per l'acceleratore di macchine virtuali.

Il moltiplicatore della larghezza di banda è di circa 1,16 volte al massimo utilizzo della rete il che significa che il 16% dei byte scritti è overhead. Per Persistent Disk a livello di regione, di larghezza di banda di circa 2,32 volte maggiore per tenere conto dell'overhead della replica.

In una situazione in cui le operazioni di lettura e scrittura su Persistent Disk competono con larghezza di banda in uscita dalla rete, il 60% della larghezza di banda massima in uscita dalla rete, definita le operazioni di scrittura su Persistent Disk in base al tipo di macchina. Il restante 40% è disponibile per tutto il resto del traffico di rete in uscita. Consulta larghezza di banda in uscita per i dettagli sull'altro traffico di rete in uscita.

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) Allocazione larghezza di banda (MB/s) Larghezza di banda massima in scrittura (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 1.078 647
8-15 2000 1200 1.724 1.034
16+ 4000 2400 3.448 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 di scrittura massima del Persistent Disk al pieno utilizzo 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. Se la VM utilizza una velocità effettiva di lettura o IOPS maggiore, è 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 vantaggi limiti massimi di velocità effettiva per letture e scritture simultanee su disco permanente SSD, utilizza una dimensione I/O in modo che le IOPS di lettura e scrittura combinate non superino il numero di IOPS limite.

Nella tabella seguente sono elencati i limiti di IOPS per VM per le letture simultanee scrive.

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 3.750 11.250 3.750 45.000 15.000 75.000 25.000
3.750 7.500 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 valori di IOPS in questa tabella si basano su una dimensione di I/O di 8 kB. Altre dimensioni di I/O, ad esempio 16 kB, potrebbero avere numeri IOPS diversi ma mantiene 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 (oltre 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 permanenti SSD, la velocità effettiva di lettura massima e la velocità effettiva massima di scrittura sono indipendenti tra loro, quindi questi limiti costante.

Dimensione del volume logico

Persistent Disk può avere una dimensione massima di 64 TiB ed è possibile creare un singolo disco volumi fino a 257 TiB utilizzando la gestione logica dei volumi 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 dei dischi permanenti si ottengono su dimensioni inferiori. I dischi occupano di lettura o scrittura completa con così tanto spazio di archiviazione su una VM. Se le tue un'applicazione che lo supporta, considera l'utilizzo di più VM per una maggiore e la velocità effettiva effettiva.
  • Lo snapshot di un numero elevato di Persistent Disk potrebbe richiedere più tempo di dovrebbe essere completato e potrebbe fornire una visione incoerente della tua logica senza un attento coordinamento con la tua applicazione.

Più dischi collegati a una singola istanza VM

I limiti delle prestazioni dei dischi quando hai più dischi collegati a una VM variano a seconda 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 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 aggregato viene suddiviso in modo uniforme tra i dischi, a prescindere dalla dimensione relativa.

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 uno standard di 1200 GB disco. Se utilizzi entrambi i dischi al 100%, ognuno 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 è 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 IOPS o carichi di lavoro orientati alla velocità effettiva

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

Carichi di lavoro orientati a 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 di 1 per ogni 400-800 IOPS, fino a un limite di 64 su grandi volumi

  • Una CPU libera ogni 2000 IOPS di lettura casuale e 1 CPU libera ogni 2500 IOPS di scrittura casuale

  • Se disponibile per il tuo tipo di macchina VM, utilizza Google Cloud Hyperdisk Extreme che consentono di modificare le IOPS sottoposte a provisioning.

Valori di lettura più bassi sono generalmente suggeriti nei documenti con le 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 successione 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 disponibile per il tuo tipo di macchina VM, utilizza la velocità effettiva Hyperdisk che consentono di modificare la velocità effettiva di cui è stato eseguito il provisioning.

  • Per Persistent Disk standard, utilizza almeno 8 I/O sequenziali paralleli quando possibile. Il disco permanente standard è progettato per ottimizzare l'I/O per l'accesso sequenziale al disco, come nel caso di un disco rigido 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 prestazioni ottimali, esegui l'ottimizzazione in base ai dati temporali località, ponderando fattori come la frammentazione del disco e casualità delle parti del disco a cui si accede.

  • Per i dischi permanenti 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 Lo scheduler I/O non riordina le richieste ed è ideale per I/O veloci e casuali dispositivi mobili.

    1. Nella riga di comando, verifica la pianificazione I/O utilizzata dal tuo sistema macchina:

      cat /sys/block/sda/queue/scheduler
      

      L'output è simile al seguente:

      [mq-deadline] none
      

      Lo scheduler I/O attualmente attivo viene visualizzato in un quadrato ([]).

    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, il sistema torna alla modalità I/O predefinita scheduler al riavvio. Esegui di nuovo il comando cat per verificare il tuo I/O scheduler.

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 sul dischi collegati.

Utilizza una profondità di coda I/O elevata

I dischi permanenti hanno una latenza più elevata rispetto a quelli collegati localmente come I dischi SSD 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 è indicato come la profondità della coda di I/O.

Le tabelle riportate di seguito mostrano la profondità consigliata per la coda di I/O per garantire un determinato livello di prestazioni. Tieni presente che la tabella riportata di seguito utilizza una leggera sovrastima della latenza tipica per mostrare risultati prudenti personalizzati. Nell'esempio si presuppone che tu stia utilizzando una dimensione I/O di 16 kB.

Genera un numero sufficiente di I/O utilizzando dimensioni I/O di grandi dimensioni

  • 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.

    Utilizzare stripe di grandi dimensioni per applicazioni di file system distribuiti. 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 la tua applicazione stia generando un numero di I/O sufficiente per utilizzare appieno IOPS e limiti di velocità effettiva del disco. Per comprendere meglio il carico di lavoro pattern I/O, esamina le metriche di utilizzo e prestazioni del disco permanente 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 di I/O intensivi a un intervallo massimo

Un intervallo è un intervallo contiguo di indirizzi di blocchi logici su una singola un disco fisico. I carichi I/O intensivi ottengono le prestazioni massime se limitati a una un certo intervallo massimo, che dipende dal tipo di macchina della VM a cui sia collegato, come indicato nella tabella seguente.

Tipo di macchina Intervallo massimo consigliato
  • m2-megamem-416
  • VM C2D
25 TB
Tutti gli altri tipi di macchine 50 TB

È possibile eseguire intervalli su dischi permanenti separati che sommano fino a 50 TB o meno considerato uguale a un singolo intervallo di 50 TB ai fini delle prestazioni.

Modifiche al sistema operativo per migliorare le prestazioni del disco

In alcuni casi, puoi attivare o disattivare funzionalità a livello di sistema operativo. o configurare i dischi collegati in modi specifici per migliorarli delle 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-app. Il file system ext4 è l'impostazione predefinita sulla maggior parte dei sistemi operativi Linux sistemi diversi.

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 il numero di IOPS di scrittura il costo della velocità effettiva di scrittura. La migrazione a ext4 può causare fino a 7 volte migliore in alcuni benchmark.

Disabilita l'inizializzazione lazy e abilita i comandi DISCARD

I dischi permanenti supportano le operazioni di annullamento o TRIM , che consentono ai sistemi operativi di informare i dischi quando i blocchi vengono non è più in uso. Se ignori il supporto, il sistema operativo può contrassegnare il disco i 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 tua 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. Formattazione un intero volume del disco può richiedere molto tempo, quindi la formattazione lazy è una pratica comune. Lo svantaggio della formattazione lazy è che il costo spesso viene 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.

  • Disabilita l'inizializzazione lazy e abilita le operazioni di eliminazione durante la formattazione di il disco passando i seguenti parametri mkfs.ext4:

    -E lazy_itable_init=0,lazy_journal_init=0,discard
    

    Il parametro lazy_journal_init=0 non funziona su istanze con CentOS 6 o Immagini RHEL 6. Per le VM che utilizzano del disco permanente, 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
    

Persistent Disk funziona bene se sono abilitate le operazioni di annullamento. Tuttavia, facoltativamente eseguire fstrim periodicamente in aggiunta o al posto di usando 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 di I/O, i sistemi operativi utilizzano tecniche come readahead, dove di un file rispetto a quello richiesto viene letto in memoria partendo dal presupposto che è probabile che le letture successive richiedano 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 readahead con 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

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 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 su un disco permanente richiedono cicli della 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.

Crea 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. Hyperdisk 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