Google Cloud tiene conto della larghezza di banda per istanza di calcolo, non per interfaccia di rete virtuale (vNIC) o indirizzo IP. Il tipo di macchina di un'istanza ne definisce la velocità in uscita massima possibile. Tuttavia, puoi raggiungere questa velocità in uscita massima solo in situazioni specifiche.
Questa pagina illustra le aspettative, che sono utili per pianificare i deployment. Classifica la larghezza di banda utilizzando due dimensioni:
- In uscita o in entrata: come utilizzati in questa pagina, in uscita e in entrata si riferiscono sempre al punto di vista di un'istanza Google Cloud:
- I pacchetti inviati da un'istanza Google Cloud costituiscono il traffico in uscita (in uscita).
- I pacchetti inviati a un'istanza Google Cloud costituiscono il traffico in entrata.
- Come viene instradato il pacchetto: un pacchetto può essere instradato da un'istanza di invio o a un'istanza di ricezione utilizzando route i cui hop successivi si trovano all'interno di una rete VPC o route esterne a una rete VPC.
Né le interfacce di rete virtuali (vNIC) aggiuntive né gli indirizzi IP aggiuntivi per vNIC aumentano la larghezza di banda in entrata o in uscita per un'istanza di calcolo. Ad esempio, una VM C3 con 22 vCPU è limitata a una larghezza di banda in uscita totale di 23 Gbps. Se configuri la VM C3 con due vNIC, la VM è comunque limitata a una larghezza di banda in uscita totale di 23 Gbps, non a 23 Gbps per vNIC.
Tutte le informazioni riportate in questa pagina si applicano alle istanze di calcolo di Compute Engine, nonché ai prodotti che dipendono da queste istanze. Ad esempio, un nodo Google Kubernetes Engine è un'istanza Compute Engine.
Riepilogo della larghezza di banda
La tabella seguente illustra le aspettative relative alla larghezza di banda in base al fatto che un pacchetto viene inviato da (in uscita) o ricevuto da (in entrata) un'istanza di calcolo e al metodo di instradamento dei pacchetti.
In uscita
Aspettative relative alla larghezza di banda | |
---|---|
Routing all'interno di una rete VPC |
|
Routing al di fuori di una rete VPC |
|
In entrata
Aspettative relative alla larghezza di banda | |
---|---|
Routing all'interno di una rete VPC |
|
Routing all'esterno di una rete VPC |
|
Larghezza di banda in uscita
Google Cloud limita la larghezza di banda in uscita (egress) utilizzando le tariffe in uscita massime per istanza. Queste tariffe si basano sul tipo di macchina dell'istanza di calcolo che invia il pacchetto e sul fatto che la destinazione del pacchetto sia accessibile utilizzando route all'interno di una rete VPC o route all'esterno di una rete VPC. La larghezza di banda in uscita include i pacchetti emessi da tutte le NIC dell'istanza e i dati trasferiti a tutti i volumi Hyperdisk e Persistent Disk collegati all'istanza.
Larghezza di banda in uscita massima per istanza
La larghezza di banda in uscita massima per istanza è generalmente di 2 Gbps per vCPU, ma esistono alcune differenze ed eccezioni, a seconda della serie di macchine. La tabella seguente mostra l'intervallo di limiti massimi per la larghezza di banda in uscita per il traffico indirizzato all'interno di una rete VPC solo per il livello di rete standard, non per le prestazioni di rete Tier_1 per VM.
Serie di macchine | Limite massimo di uscita per istanza più basso per lo standard | Limite massimo di in uscita per istanza più elevato per lo standard |
---|---|---|
C4 e C4A | 10 Gbps | 100 Gbps |
C3 | 23 Gbps | 100 Gbps |
C3D | 20 Gbps | 100 Gbps |
C2 e C2D | 10 Gbps | 32 Gbps |
E2 | 1 Gbps | 16 Gbps |
H3 | N/D | 200 Gbps |
M3 e M1 | 32 Gbps | 32 Gbps |
M2 | 32 Gbps | 32 Gbps sulla piattaforma CPU Intel Cascade Lake 16 Gbps su altre piattaforme CPU |
N4 | 10 Gbps | 50 Gbps |
N2 e N2D | 10 Gbps | 32 Gbps |
N1 (escluse le VM con 1 vCPU) | 10 Gbps | 32 Gbps sulla piattaforma CPU Intel Skylake 16 Gbps sulle piattaforme CPU precedenti a Intel Skylake |
Tipi di macchine N1 con 1 vCPU, f1-micro e g1-small | 2 Gbps | 2 Gbps |
T2D | 10 Gbps | 32 Gbps |
X4 | N/D | 100 Gbps |
Z3 | 23 Gbps | 100 Gbps |
Puoi trovare la larghezza di banda in uscita massima per istanza per ogni tipo di macchina elencata nella pagina della famiglia di macchine specifica:
- Serie C, E, N e T: famiglia di macchine per uso generico
- Serie Z: famiglia di macchine ottimizzate per lo spazio di archiviazione
- Serie C2 e H: famiglia di macchine ottimizzate per il calcolo
- Serie M ed X: Famiglia di macchine ottimizzate per la memoria
La larghezza di banda massima in uscita per istanza non è garantita. La larghezza di banda in uscita effettiva può essere ridotta in base a fattori quali il seguente elenco non esaustivo:
- Utilizzo di VirtIO anziché gVNIC con istanze di calcolo che supportano entrambi
- Dimensione del pacchetto
- Overhead del protocollo
- Il numero di flussi
- Impostazioni del driver Ethernet del sistema operativo guest dell'istanza di calcolo, ad esempio il caricamento parziale del checksum e il caricamento parziale della segmentazione TCP (TSO)
- Congestione della rete
- In una situazione in cui le I/O del Persistent Disk competono con altro traffico di rete in uscita, il 60% della larghezza di banda di rete massima viene assegnato alle scritture del Persistent Disk, lasciando il 40% per l'altro traffico di rete in uscita. Per ulteriori dettagli, consulta Fattori che influiscono sulle prestazioni del disco.
Per ottenere la larghezza di banda in uscita massima per istanza possibile:
- Attiva le prestazioni di rete Tier_1 per VM con tipi di macchine più grandi.
- Utilizza l'unità massima di trasmissione (MTU) della rete VPC più grande supportata dalla topologia della rete. MTU più grandi possono ridurre l'overhead delle intestazioni dei pacchetti e aumentare il throughput dei dati del payload.
- Utilizza la versione più recente del driver gVNIC.
- Utilizza una serie di macchine di terza generazione o successive che utilizzano Titanium per scaricare l'elaborazione di rete dalla CPU host.
In uscita verso destinazioni instradabili all'interno di una rete VPC
Dal punto di vista di un'istanza di invio e per gli indirizzi IP di destinazione accessibili tramite route all'interno di una rete VPC, Google Cloud limita il traffico in uscita utilizzando queste regole:
- Larghezza di banda in uscita massima per VM:la larghezza di banda in uscita massima per istanza описана в разделе Larghezza di banda in uscita massima per istanza.
- Larghezza di banda in uscita interregionale per progetto:se un'istanza di invio e una destinazione interna o il relativo hop successivo si trovano in regioni diverse, Google Cloud applica un limite massimo di larghezza di banda in uscita interregionale. È improbabile che la maggior parte dei clienti raggiunga questo limite. Per domande su questo limite, invia una richiesta di assistenza.
- Limiti di Cloud VPN e Cloud Interconnect: quando invii il traffico da un'istanza a una destinazione IP interna instradabile da un tunnel Cloud VPN di hop successivo o da un allegato VLAN Cloud Interconnect, la larghezza di banda in uscita è limitata da:
- Velocità in bit e larghezza di banda massime per tunnel Cloud VPN
- Quantità massima di pacchetti e larghezza di banda per collegamento VLAN
- Per utilizzare completamente la larghezza di banda di più tunnel Cloud VPN di hop successivo o collegamenti VLAN Cloud Interconnect che utilizzano il routing ECMP, devi utilizzare più connessioni TCP (tuple di 5 elementi univoche).
Le destinazioni instradabili all'interno di una rete VPC includono tutte le seguenti destinazioni, ciascuna delle quali è accessibile dal punto di vista dell'istanza di invio tramite una route il cui hop successivo non è il gateway internet predefinito:
- Indirizzi IPv4 interni regionali negli
intervalli di indirizzi IPv4 principali e secondari della subnet,
inclusi gli intervalli di indirizzi IPv4 privati e gli intervalli di indirizzi IPv4 pubblici utilizzati privatamente, utilizzati da queste risorse di destinazione:
- L'indirizzo IPv4 interno principale dell'interfaccia di rete (vNIC) di un'istanza di destinazione. Quando un'istanza di invio si connette all'indirizzo IPv4 esterno della vNIC di un'altra istanza, i pacchetti vengono instradati utilizzando un gateway internet predefinito di hop successivo, quindi si applica Uscita verso destinazioni esterne a una rete VPC.
- Un indirizzo IPv4 interno in un intervallo IP alias della vNIC di un'istanza di destinazione.
- Un indirizzo IPv4 interno di una regola di forwarding interna per il forwarding del protocollo o per un bilanciatore del carico di rete passthrough interno.
- Indirizzi IPv4 interni globali per queste risorse di destinazione:
- Intervalli di indirizzi di subnet IPv6 interni utilizzati da queste risorse di destinazione:
- Un indirizzo IPv6 dall'intervallo di indirizzi IPv6
/96
assegnato alla vNIC di un'istanza di destinazione a doppio stack. - Un indirizzo IPv6 dell'intervallo di indirizzi IPv6
/96
di una regola di inoltro interna per il forwarding del protocollo o per un bilanciatore del carico di rete passthrough interno.
- Un indirizzo IPv6 dall'intervallo di indirizzi IPv6
- Intervalli di indirizzi di subnet IPv6 esterni utilizzati da queste risorse di destinazione quando i pacchetti vengono instradati utilizzando route di subnet o route di subnet di peering all'interno della rete VPC o da route personalizzate all'interno della rete VPC che non utilizzano il successivo hop del gateway internet predefinito:
- Un indirizzo IPv6 dall'intervallo di indirizzi IPv6
/96
assegnato alla vNIC di un'istanza di destinazione a doppio stack. - Un indirizzo IPv6 dell'intervallo di indirizzi IPv6
/96
di una regola di inoltro esterno per l'inoltro del protocollo o per un bilanciatore del carico di rete passthrough esterno.
- Un indirizzo IPv6 dall'intervallo di indirizzi IPv6
- Altre destinazioni accessibili utilizzando i seguenti percorsi di rete VPC:
- Percorsi dinamici
- Route statiche tranne quelle che utilizzano un hop successivo del gateway internet predefinito
- Route personalizzati per il peering
Il seguente elenco classifica il traffico dalle istanze di invio alle destinazioni interne, dalla larghezza di banda massima a quella minima:
- Tra istanze di calcolo nella stessa zona
- Tra istanze di calcolo in zone diverse della stessa regione
- Tra istanze di calcolo in regioni diverse
- Da un'istanza di calcolo ad API e servizi Google Cloud utilizzando l'accesso privato Google o accedendo alle API Google dall'indirizzo IP esterno di un'istanza. Sono inclusi gli endpoint Private Service Connect per le API di Google.
Uscita verso destinazioni esterne a una rete VPC
Dal punto di vista di un'istanza di invio e per gli indirizzi IP di destinazione al di fuori di una rete VPC, Google Cloud limita il traffico in uscita alla prima delle seguenti tariffe raggiunta:
Larghezza di banda in uscita per istanza:la larghezza di banda massima per tutte le connessioni da un'istanza di calcolo a destinazioni esterne a una rete VPC è la più piccola tra la larghezza di banda in uscita massima per istanza e una di queste velocità:
- 25 Gbps, se la rete Tier_1 è abilitata
- 7 Gbps, se la rete Tier_1 non è abilitata
- 1 Gbps per le istanze H3
- 7 Gbps per NIC fisica per le serie di macchine che supportano più NIC fisiche, ad esempio A3.
Ad esempio, anche se un'istanza
c3-standard-44
ha una larghezza di banda in uscita massima per VM di 32 Gbps, la larghezza di banda in uscita per VM da una VMc3-standard-44
a destinazioni esterne è di 25 Gbps o 7 Gbps, a seconda che la rete Tier_1 sia abilitata.Velocità in uscita massima per flusso: la larghezza di banda massima per ogni connessione a 5 tuple univoca da un'istanza di calcolo a una destinazione esterna a una rete VPC è di 3 Gbps, tranne su H3, dove è di 1 Gbps.
Larghezza di banda del traffico in uscita da internet per progetto:la larghezza di banda massima per tutte le connessioni dalle istanze di calcolo in ogni regione di un progetto alle destinazioni esterne a una rete VPC è definita dalle quote di larghezza di banda del traffico in uscita da internet del progetto.
Le destinazioni esterne a una rete VPC includono tutte le seguenti destinazioni, ciascuna accessibile tramite una route nella rete VPC dell'istanza mittente il cui hop successivo è il gateway internet predefinito:
- Indirizzi IPv4 e IPv6 esterni globali per bilanciatori del carico di rete proxy esterni e bilanciatori del carico delle applicazioni esterni
- Indirizzi IPv4 esterni regionali per le risorse Google Cloud, inclusi gli indirizzi IPv4 esterni delle vNIC VM, gli indirizzi IPv4 esterni per il forwarding del protocollo esterno, i bilanciatori del carico di rete passthrough esterni e i pacchetti di risposta ai gateway Cloud NAT.
- Indirizzi IPv6 esterni a livello regionale in subnet a doppio stack con intervalli di indirizzi IPv6 esterni utilizzati dagli indirizzi IPv6 esterni delle istanze a doppio stack, dal forwarding del protocollo esterno e dai bilanciatori del carico di rete passthrough esterni. La subnet deve trovarsi in una rete VPC distinta e non in peering. L'intervallo di indirizzi IPv6 di destinazione deve essere accessibile utilizzando una route nella rete VPC dell'istanza di invio il cui hop successivo è il gateway internet predefinito. Se una subnet a doppio stack con un intervallo di indirizzi IPv6 esterno si trova nella stessa rete VPC o in una rete VPC in peering, consulta Egress verso destinazioni instradabili all'interno di una rete VPC.
- Altre destinazioni esterne accessibili utilizzando una route statica nella rete VPC dell'istanza di invio, a condizione che l'hop successivo per la route sia il gateway internet predefinito.
Per informazioni dettagliate sulle risorse Google Cloud che utilizzano determinati tipi di indirizzi IP esterni, consulta Indirizzi IP esterni.
Larghezza di banda in entrata
Google Cloud gestisce la larghezza di banda in entrata (ingress) in base a come il pacchetto in entrata viene indirizzato a un'istanza di calcolo di destinazione.
Ingresso alle destinazioni instradabili all'interno di una rete VPC
Un'istanza di ricezione può gestire tutti i pacchetti in arrivo consentiti dal tipo di macchina, dal sistema operativo e da altre condizioni di rete. Google Cloud non implementa alcuna limitazione intenzionale della larghezza di banda per i pacchetti in entrata inviati a un'istanza se il pacchetto in entrata viene inviato utilizzando route all'interno di una rete VPC:
- Route di subnet nella rete VPC dell'istanza di destinazione
- Route delle subnet di peering in una rete VPC in peering
- Route in un'altra rete i cui hop successivi sono tunnel Cloud VPN, collegamenti VLAN di Cloud Interconnect o istanze di appliance router situate nella rete VPC dell'istanza di destinazione
Le destinazioni per i pacchetti instradati all'interno di una rete VPC includono:
- L'indirizzo IPv4 interno principale dell'interfaccia di rete (NIC) dell'istanza di destinazione. Gli indirizzi IPv4 interni principali sono indirizzi IPv4 interni regionali provenienti da un intervallo di indirizzi IPv4 principale di una subnet.
- Un indirizzo IPv4 interno da un intervallo IP dell'alias della NIC dell'istanza di destinazione. Gli intervalli IP alias possono provenire dall'intervallo di indirizzi IPv4 primario di una subnet o da uno dei suoi intervalli di indirizzi IPv4 secondari.
- Un indirizzo IPv6 dall'intervallo di indirizzi IPv6
/96
assegnato alla NIC di un'istanza di ricezione a doppio stack. Gli intervalli IPv6 delle istanze di calcolo possono provenire da questi intervalli IPv6 di subnet:- Un intervallo di indirizzi IPv6 interno.
- Un intervallo di indirizzi IPv6 esterno quando il pacchetto in arrivo viene indirizzato internamente all'istanza di ricezione utilizzando uno dei route della rete VPC elencati in precedenza in questa sezione.
- Un indirizzo IPv4 interno di una regola di forwarding utilizzata dal forwarding del protocollo interno all'istanza di destinazione o al bilanciatore del carico di rete passthrough interno, dove l'istanza di destinazione è un backend del bilanciatore del carico. Gli indirizzi IPv4 regola di forwarding interno provengono dall'intervallo di indirizzi IPv4 principale di una subnet.
- Un indirizzo IPv6 interno dell'intervallo IPv6
/96
di una regola di forwarding utilizzata dal forwarding del protocollo interno all'istanza di destinazione o al bilanciatore del carico di rete passthrough interno, dove l'istanza di destinazione è un backend del bilanciatore del carico. Gli indirizzi IPv6 regola di forwarding interna provengono dall'intervallo di indirizzi IPv6 interno di una subnet. - Un indirizzo IPv6 esterno dell'intervallo IPv6
/96
di una regola di forwarding utilizzata dal forwarding del protocollo esterno all'istanza di destinazione o al bilanciatore del carico di rete passthrough esterno. L'istanza di ricezione è un backend del bilanciatore del carico quando il pacchetto in entrata viene instradato all'interno della rete VPC utilizzando una delle route elencate in precedenza in questa sezione. Gli indirizzi IPv6 regola di forwarding esterno provengono dall'intervallo di indirizzi IPv6 esterno di una subnet. - Un indirizzo IP all'interno dell'intervallo di destinazione di una route statica personalizzata che utilizza l'istanza di ricezione come istanza di hop successivo (
next-hop-instance
onext-hop-address
). - Un indirizzo IP compreso nell'intervallo di destinazione di una route statica personalizzata che utilizza un hop successivo del bilanciatore del carico di rete passthrough interno (
next-hop-ilb
), se l'istanza di ricezione è un backend per quel bilanciatore del carico.
Ingresso a destinazioni esterne a una rete VPC
Google Cloud implementa i seguenti limiti di larghezza di banda per i pacchetti in entrata inviati a un'istanza di ricezione utilizzando route esterne a una rete VPC. Quando è coinvolto il bilanciamento del carico, i limiti di larghezza di banda vengono applicati singolarmente a ogni istanza di ricezione.
Per le serie di macchine che non supportano più NIC fisiche, la limitazione della larghezza di banda in entrata applicabile si applica collettivamente a tutte le interfacce di rete virtuali (vNIC). Il limite è la prima delle seguenti tariffe rilevate:
- 1.800.000 pacchetti al secondo
- 30 Gbps
Per le serie di macchine che supportano più NIC fisiche, come A3, la limitazione della larghezza di banda in entrata applicabile si applica singolarmente a ogni NIC fisica. Il limite è la prima delle seguenti tariffe rilevate:
- 1.800.000 pacchetti al secondo per NIC fisica
- 30 Gbps per NIC fisica
Le destinazioni per i pacchetti instradati utilizzando route esterne a una rete VPC includono:
- Un indirizzo IPv4 esterno assegnato in una configurazione di accesso NAT uno a uno su una delle interfacce di rete (NIC) dell'istanza di destinazione.
- Un indirizzo IPv6 esterno dall'intervallo di indirizzi IPv6
/96
assegnato a una vNIC di un'istanza di ricezione a doppio stack quando il pacchetto in arrivo viene indirizzato utilizzando un route al di fuori della rete VPC dell'istanza di ricezione. - Un indirizzo IPv4 esterno di una regola di forwarding utilizzata dal forwarding del protocollo esterno all'istanza di destinazione o al bilanciatore del carico di rete passthrough esterno in cui l'istanza di destinazione è un backend del bilanciatore del carico.
- Un indirizzo IPv6 esterno dell'intervallo IPv6
/96
di una regola di forwarding utilizzata dal forwarding del protocollo esterno all'istanza di destinazione o al bilanciatore del carico di rete passthrough esterno. L'istanza di ricezione deve essere un backend del bilanciatore del carico quando il pacchetto in entrata viene indirizzato utilizzando una route esterna a una rete VPC. - Risposte in entrata stabilite elaborate da Cloud NAT.
Frame jumbo
Per ricevere e inviare frame jumbo, configura la rete VPC utilizzata dalle tue istanze di calcolo; imposta l'unità massima di trasmissione (MTU) su un valore maggiore, fino a 8896.
Valori MTU più elevati aumentano le dimensioni dei pacchetti e riducono l'overhead delle intestazioni dei pacchetti, il che aumenta il throughput dei dati del payload.
Puoi utilizzare i frame jumbo con il driver gVNIC versione 1.3 o successive sulle istanze VM o con il driver IDPF sulle istanze bare metal. Non tutte le immagini pubbliche di Google Cloud includono questi driver. Per maggiori informazioni sul supporto del sistema operativo per i frame jumbo, consulta la scheda Funzionalità di rete nella pagina Dettagli sistema operativo.
Se utilizzi un'immagine del sistema operativo che non supporta completamente i frame jumbo,
puoi installare manualmente il driver gVNIC versione 1.3.0 o successiva. Google consiglia di installare la versione del driver gVNIC contrassegnata da Latest
per usufruire di funzionalità aggiuntive e correzioni di bug. Puoi scaricare i driver gVNIC da
GitHub.
Per aggiornare manualmente la versione del driver gVNIC nel sistema operativo guest, consulta Utilizzo su sistemi operativi non supportati.
Ricevere e trasmettere code
A ogni NIC o vNIC di un'istanza di calcolo viene assegnato un numero di code di ricezione e trasmissione per l'elaborazione dei pacchetti dalla rete.
- Coda di ricezione (RX): coda per ricevere i pacchetti. Quando la NIC riceve un pacchetto dalla rete, seleziona il descrittore di un pacchetto in arrivo dalla coda, lo elabora e lo consegna al sistema operativo guest tramite una coda di pacchetti collegata a un core vCPU utilizzando un'interruzione. Se la coda RX è piena e non è disponibile alcun buffer per inserire un pacchetto, il pacchetto viene perso. In genere, questo può accadere se un'applicazione utilizza in modo eccessivo un core vCPU collegato anche alla coda dei pacchetti selezionata.
- Coda di trasmissione (TX): coda per la trasmissione dei pacchetti. Quando il sistema operativo guest invia un pacchetto, viene allocato un descrittore e inserito nella coda TX. La NIC quindi elabora il descrittore e trasmette il pacchetto.
Allokazione della coda predefinita
A meno che non assegni esplicitamente i conteggi delle code per le NIC, puoi modellare l'algoritmo utilizzato da Google Cloud per assegnare un numero fisso di code RX e TX per NIC in questo modo:
- Istanze bare metal
- Per le istanze bare metal è presente una sola NIC, pertanto il numero massimo di code è 16.
- Istanze VM che utilizzano l'interfaccia di rete gVNIC
Per le istanze C4, per migliorare le prestazioni, le seguenti configurazioni utilizzano un numero fisso di code:
- Per le istanze Linux con 2 vCPU, il conteggio della coda è 1.
- Per le istanze Linux con 4 vCPU, il conteggio della coda è 2.
Per le altre serie di macchine, il conteggio della coda dipende dal fatto che la serie di macchine utilizzi o meno Titanium.
Per le istanze di terza generazione (esclusa M3) e successive che utilizzano Titanium:
Dividi il numero di vCPU per il numero di vNIC (
num_vcpus/num_vnics
) e ignora il resto.Per le VM di prima e seconda generazione che non utilizzano Titanium:
Dividi il numero di vCPU per il numero di vNIC, quindi dividi il risultato per 2 (
num_vcpus/num_vnics/2
). Elimina il resto.
Per completare il calcolo del conteggio della coda predefinito:
Se il numero calcolato è inferiore a 1, assegna invece una coda a ogni vNIC.
Determina se il numero calcolato è maggiore del numero massimo di code per vNIC, ovvero
16
. Se il numero calcolato è maggiore di16
, ignoralo e assegna a ogni vNIC 16 code.
- Istanze VM che utilizzano l'interfaccia di rete VirtIO o un driver personalizzato
Dividi il numero di vCPU per il numero di vNIC e ignora qualsiasi resto.
[number of vCPUs/number of vNICs]
Se il numero calcolato è inferiore a 1, assegna invece una coda a ogni vNIC.
Determina se il numero calcolato è maggiore del numero massimo di code per vNIC, ovvero
32
. Se il numero calcolato è maggiore di32
, ignoralo e assegna a ogni coda vNIC 32.
Esempi
Gli esempi riportati di seguito mostrano come calcolare il numero predefinito di code per un'istanza VM:
Se un'istanza VM utilizza VirtIO e dispone di 16 vCPU e 4 vNIC, il numero calcolato è
[16/4] = 4
. Google Cloud assegna a ogni vNIC quattro code.Se un'istanza VM utilizza gVNIC e dispone di 128 vCPU e due vNIC, il numero calcolato è
[128/2/2] = 32
. Google Cloud assegna a ogni vNIC il numero massimo di code per vNIC possibile. Google Cloud assegna16
code per vNIC.
Sui sistemi Linux, puoi utilizzare ethtool
per configurare una vNIC con meno code rispetto al numero di code assegnate da Google Cloud per vNIC.
Allocazione di code personalizzate per le istanze VM
Anziché l'allocazione della coda predefinita, puoi assegnare un conteggio delle code personalizzato (totale di RX e TX) a ogni vNIC quando crei una nuova istanza di calcolo utilizzando l'API Compute Engine.
Il numero di code personalizzate specificate deve rispettare le seguenti regole:
Il numero minimo di code che puoi assegnare per vNIC è 1.
Il numero massimo di code che puoi assegnare a ogni vNIC di un'istanza VM è il minore tra il numero di vCPU o il numero massimo di code per vNIC, in base al tipo di driver:
- Se utilizzi virtIO o un driver personalizzato, il numero massimo di code è
32
. - Se utilizzi gVNIC, il numero massimo di code è
16
, tranne nei casi seguenti, in cui il numero massimo di code è 32:- Istanze A2 o G2
- Istanze TPU
- Istanze C2, C2D, N2 o N2D con il networking Tier_1 abilitato
Per le seguenti configurazioni di VM riservate, il numero massimo di code è
8
:- AMD SEV sui tipi di macchine C2D e N2D
- AMD SEV-SNP sui tipi di macchine N2D
- Se utilizzi virtIO o un driver personalizzato, il numero massimo di code è
Se assegni conteggi delle code personalizzati a tutte le NIC dell'istanza di calcolo, la somma delle assegnazioni del conteggio delle code deve essere inferiore o uguale al numero di vCPU assegnate all'istanza.
Puoi eseguire una sottoscrizione eccessiva del conteggio della coda personalizzata per le vNIC. In altre parole, puoi avere una somma dei conteggi delle code assegnate a tutte le NIC per la tua istanza VM superiore al numero di vCPU per l'istanza. Per eseguire un overbooking del conteggio della coda personalizzata, l'istanza VM deve soddisfare le seguenti condizioni:
- Utilizza gVNIC come tipo di vNIC per tutte le NIC configurate per l'istanza.
- Utilizza un tipo di macchina che supporta la rete Tier_1.
- Ha il networking Tier_1 abilitato.
- È stato specificato un conteggio coda personalizzato per tutte le NIC configurate per l'istanza.
Con la sovrascrizione della coda, il numero massimo di code per l'istanza VM è 16 volte il numero di NIC. Pertanto, se hai configurato 6 NIC per un'istanza con 30 vCPU, puoi configurare un massimo di (16 * 6) o 96 code personalizzate per l'istanza.
Esempi
Se un'istanza VM ha 8 vCPU e 3 vNIC, il numero massimo di code per l'istanza è il numero di vCPU, ovvero 8. Puoi assegnare 1 coda a
nic0
, 4 code anic1
e 3 code anic2
. In questo esempio, non puoi assegnare successivamente 4 code anic2
mantenendo le altre due assegnazioni di code vNIC perché la somma delle code assegnate non può superare il numero di vCPU.Se hai una VM N2 con 96 vCPU e 2 vNIC, puoi assegnare a entrambe le vNIC fino a 32 code ciascuna se utilizzi il driver virtIO o fino a 16 code ciascuna se utilizzi il driver gVNIC. Se attivi il networking Tier_1 per la VM N2, puoi assegnare fino a 32 code a ogni vNIC. In questo esempio, la somma delle code assegnate è sempre inferiore o uguale al numero di vCPU.
È anche possibile assegnare un conteggio coda personalizzato per solo alcune NIC, lasciando che sia Google Cloud ad assegnare le code alle NIC rimanenti. Il numero di code che puoi assegnare per vNIC è comunque soggetto alle regole menzionate in precedenza. Puoi modellare la fattibilità della tua configurazione e, se è possibile, il numero di code che Google Cloud assegna alle vNIC rimanenti con questa procedura:
Calcola la somma delle code per le vNIC utilizzando l'assegnazione delle code personalizzate. Per una VM di esempio con 20 vCPU e 6 vNIC, supponiamo di assegnare
nic0
5 code,nic1
6 code,nic2
4 code e di lasciare che sia Google Cloud a assegnare i code pernic3
,nic4
enic5
. In questo esempio, la somma delle code assegnate in modo personalizzato è5+6+4 = 15
.Sottrai la somma delle code assegnate in modo personalizzato dal numero di vCPU. Se la differenza è inferiore al numero di vNIC rimanenti per le quali Google Cloud deve assegnare code, Google Cloud restituisce un errore perché ogni vNIC deve avere almeno una coda.
Continuando l'esempio con una VM con 20 vCPU e una somma di
15
code di coda assegnati in modo personalizzato, Google Cloud ha20-15 = 5
code di coda rimanenti da assegnare alle vNIC rimanenti (nic3
,nic4
,nic5
).Dividi la differenza del passaggio precedente per il numero di vNIC rimanenti e ignora il resto.
⌊(number of vCPUs - sum of assigned queues)/(number of remaining vNICs)⌋
Questo calcolo restituisce sempre un numero intero (non una frazione) almeno uguale a 1 a causa del vincolo spiegato nel passaggio precedente. Google Cloud assegna a ogni vNIC rimanente un conteggio delle code corrispondente al numero calcolato, a condizione che il numero calcolato non sia superiore al numero massimo di code per vNIC. Il numero massimo di code per vNIC dipende dal tipo di driver:
- Se utilizzi virtIO o un driver personalizzato, se il numero calcolato di code per ogni vNIC rimanente è maggiore di
32
, Google Cloud assegna a ogni vNIC rimanente32
code. - Se utilizzi gVNIC, se il numero calcolato di code per ogni vNIC rimanente è superiore al limite di
16
o32
(a seconda della configurazione della VM), Google Cloud assegna a ogni vNIC rimanente16
code.
Configurare i conteggi delle code personalizzate
Per creare un'istanza di calcolo che utilizza un conteggio coda personalizzato per una o più NIC o vNIC, completa i seguenti passaggi.
Nei seguenti esempi di codice, la VM viene creata con il tipo di interfaccia di rete impostato su GVNIC
e le prestazioni di rete Tier_1 per VM abilitate. Puoi utilizzare questi esempi di codice per specificare il numero massimo di code e la sovrascrizione delle code disponibili per i tipi di macchine supportati.
gcloud
- Se non hai già una rete VPC con una subnet per ogni interfaccia vNIC che prevedi di configurare, creale.
- Utilizza il
comando
gcloud compute instances create
per creare l'istanza di calcolo. Ripeti il flag--network-interface
per ogni vNIC che vuoi configurare per l'istanza e includi l'opzionequeue-count
.
gcloud compute instances create INSTANCE_NAME \ --zone=ZONE \ --machine-type=MACHINE_TYPE \ --network-performance-configs=total-egress-bandwidth-tier=TIER_1 \ --network-interface=network=NETWORK_NAME_1,subnet=SUBNET_1,nic-type=GVNIC,queue-count=QUEUE_SIZE_1 \ --network-interface=network=NETWORK_NAME_2,subnet=SUBNET_2,nic-type=GVNIC,queue-count=QUEUE_SIZE_2
Sostituisci quanto segue:
INSTANCE_NAME
: un nome per la nuova istanza di calcoloZONE
: la zona in cui creare l'istanzaMACHINE_TYPE
: il tipo di macchina dell' istanza. Per eseguire una sottoscrizione eccessiva del conteggio della coda, il tipo di macchina specificato deve supportare gVNIC e il networking Tier_1.NETWORK_NAME
: il nome della rete creata in precedenzaSUBNET_*
: il nome di una delle subnet create in precedenzaQUEUE_SIZE
: il numero di code per la vNIC, in base alle regole descritte in Allocazione delle code personalizzate.
Terraform
- Se non hai già una rete VPC con una subnet per ogni interfaccia vNIC che prevedi di configurare, creale.
Crea un'istanza di calcolo con conteggi di code specifici per le vNIC utilizzando la risorsa
google_compute_instance
. Ripeti il parametro--network-interface
per ogni vNIC da configurare per l'istanza di calcolo e includi il parametroqueue-count
.# Queue oversubscription instance resource "google_compute_instance" "VM_NAME" { project = "PROJECT_ID" boot_disk { auto_delete = true device_name = "DEVICE_NAME" initialize_params { image="IMAGE_NAME" size = DISK_SIZE type = "DISK_TYPE" } } machine_type = "MACHINE_TYPE" name = "VM_NAME" zone = "ZONE" network_performance_config { total_egress_bandwidth_tier = "TIER_1" } network_interface { nic_type = "GVNIC" queue_count = QUEUE_COUNT_1 subnetwork_project = "PROJECT_ID" subnetwork = "SUBNET_1" } network_interface { nic_type = "GVNIC" queue_count = QUEUE_COUNT_2 subnetwork_project = "PROJECT_ID" subnetwork = "SUBNET_2" } network_interface { nic_type = "GVNIC" queue_count = QUEUE_COUNT_3 subnetwork_project = "PROJECT_ID" subnetwork = "SUBNET_3"" } network_interface { nic_type = "GVNIC" queue_count = QUEUE_COUNT_4 subnetwork_project = "PROJECT_ID" subnetwork = "SUBNET_4"" } }
Sostituisci quanto segue:
VM_NAME
: un nome per la nuova istanza di calcoloPROJECT_ID
: l'ID del progetto in cui creare l'istanza. A meno che non utilizzi una rete VPC condiviso, il progetto specificato deve essere lo stesso in cui sono state create tutte le subnet e le reti.DEVICE_NAME
: il nome da associare al disco di avvio nel sistema operativo guestIMAGE_NAME
: il nome di un'immagine, ad esempio"projects/debian-cloud/global/images/debian-11-bullseye-v20231010"
.DISK_SIZE
: le dimensioni del disco di avvio in GiBDISK_TYPE
: il tipo di disco da utilizzare per il disco di avvio, ad esempiopd-standard
MACHINE_TYPE
: il tipo di macchina dell' istanza. Per eseguire una sottoscrizione eccessiva del conteggio della coda, il tipo di macchina specificato deve supportare gVNIC e il networking Tier_1.ZONE
: la zona in cui creare l'istanzaQUEUE_COUNT
: il numero di code per la vNIC, in base alle regole descritte in Allocazione delle code personalizzate.SUBNET_*
: il nome della subnet a cui si connette l'interfaccia di rete
REST
- Se non hai già una rete VPC con una subnet per ogni interfaccia vNIC che prevedi di configurare, creale.
Crea un'istanza di calcolo con conteggi di code specifici per le NIC utilizzando il metodo
instances.insert
. Ripeti la proprietànetworkInterfaces
per configurare più interfacce di rete.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances { "name": "VM_NAME", "machineType": "machineTypes/MACHINE_TYPE", "networkPerformanceConfig": { "totalEgressBandwidthTier": TIER_1 }, "networkInterfaces": [ { "nicType": gVNIC, "subnetwork":"regions/region/subnetworks/SUBNET_1", "queueCount": "QUEUE_COUNT_1" } ], "networkInterfaces": [ { "nicType": gVNIC, "subnetwork":"regions/region/subnetworks/SUBNET_2", "queueCount": "QUEUE_COUNT_2" } ], }
Sostituisci quanto segue:
PROJECT_ID
: l'ID del progetto in cui creare l'istanza di calcoloZONE
: la zona in cui creare l'istanza di calcoloVM_NAME
: nome della nuova istanza di calcoloMACHINE_TYPE
: tipo di macchina, predefinito o personalizzato, per la nuova istanza di calcolo. Per eseguire una sottoscrizione eccessiva del conteggio della coda, il tipo di macchina deve supportare gVNIC e il networking Tier_1.SUBNET_*
: il nome della subnet a cui si connette l'interfaccia di reteQUEUE_COUNT
: numero di code per la vNIC, in base alle regole descritte in Allocazione delle code personalizzate.
Allocazioni in coda e modifica del tipo di macchina
Le istanze Compute vengono create con un'allocazione della coda predefinita oppure puoi assegnare un conteggio coda personalizzato a ogni scheda di interfaccia di rete virtuale (vNIC) quando crei una nuova istanza Compute utilizzando l'API Compute Engine. Le assegnazioni alla coda vNIC predefinite o personalizzate vengono impostate solo durante la creazione di un'istanza di calcolo. Se la tua istanza dispone di vNIC che utilizzano conteggi di coda predefiniti, puoi modificarne il tipo di macchina. Se il tipo di macchina a cui stai passando ha un numero diverso di vCPU, i conteggi della coda predefiniti per l'istanza vengono ricalcolati in base al nuovo tipo di macchina.
Se la VM ha vNIC che utilizzano conteggi di code personalizzati non predefiniti, puoi modificare il tipo di macchina utilizzando Google Cloud CLI o l'API Compute Engine per aggiornare le proprietà dell'istanza. La conversione va a buon fine se la VM risultante supporta lo stesso numero di code per vNIC dell'istanza originale. Per le VM che utilizzano l'interfaccia VirtIO-Net e hanno un conteggio delle code personalizzate superiore a 16 per vNIC, non puoi cambiare il tipo di macchina in un tipo di macchina di terza generazione o successiva, perché utilizzano solo gVNIC. In alternativa, puoi eseguire la migrazione della VM a un tipo di macchina di terza generazione o successiva seguendo le istruzioni riportate in Spostare il carico di lavoro in una nuova istanza di calcolo.
Passaggi successivi
- Scopri di più sui tipi di macchine.
- Scopri di più sulle istanze di macchine virtuali.
- Crea e avvia un'istanza VM.
- Configura le prestazioni di rete Tier_1 per VM per un'istanza di calcolo.
- Completa il tutorial di avvio rapido Creare un'istanza VM Linux in Compute Engine.
- Completa il tutorial di avvio rapido Creare un'istanza VM Windows Server in Compute Engine.