Google Cloud tem em conta a largura de banda por instância de computação e não por interface de rede virtual (vNIC) ou endereço IP. O tipo de máquina de uma instância define a respetiva taxa de saída máxima possível. No entanto, só pode atingir essa taxa de saída máxima possível em situações específicas.
Esta página descreve os limites de largura de banda da rede, que são úteis no planeamento das suas implementações. Categoriza a largura de banda através de duas dimensões:
- Saída ou entrada: conforme usado nesta página, a saída e a entrada são sempre
da perspetiva de uma Google Cloud instância:
- Os pacotes enviados de uma instância compõem o respetivo tráfego de saída (tráfego de saída). Google Cloud
- Os pacotes enviados para uma instância compõem o respetivo tráfego de entrada (inbound). Google Cloud
- Como o pacote é encaminhado: um pacote pode ser encaminhado a partir de uma instância de envio ou para uma instância de receção através de rotas cujos saltos seguintes estão dentro de uma rede VPC ou rotas fora de uma rede VPC.
Todas as informações nesta página aplicam-se às instâncias de computação do Compute Engine, bem como aos produtos que dependem das instâncias do Compute Engine. Por exemplo, um nó do Google Kubernetes Engine é uma instância do Compute Engine.
Configurações que afetam a largura de banda da rede
Nem as interfaces de rede virtuais (vNICs) adicionais nem os endereços IP adicionais por vNIC aumentam a largura de banda de entrada ou saída para uma instância de computação. Por exemplo, uma VM C3 com 22 vCPUs está limitada a 23 Gbps de largura de banda de saída total. Se configurar a VM C3 com duas vNICs, a VM continua limitada a 23 Gbps de largura de banda de saída total, e não a 23 Gbps de largura de banda por vNIC.
As secções seguintes descrevem como outras configurações de instâncias de computação podem afetar a largura de banda da rede.
Use o desempenho de rede de nível 1 por VM
Para obter a largura de banda de entrada e saída mais elevada possível, configure a rede de nível 1 para a sua instância de computação.
Interfaces de rede dinâmicas
As interfaces de rede dinâmicas (pré-visualização) usam a largura de banda da respetiva vNIC principal. Não existe isolamento de tráfego numa vNIC principal. O tráfego de rede de uma NIC dinâmica pode privar as outras NICs dinâmicas associadas à mesma vNIC principal. Para evitar este conflito, pode usar o controlo de tráfego (TC) do Linux para criar políticas de modelação de tráfego específicas da aplicação. Estas políticas ajudam a implementar a equidade ou determinados tipos de prioridade. Para a priorização, mapeia o tráfego (por exemplo, para NICs dinâmicos) para uma classe de tráfego e, em seguida, mapeia essa classe de tráfego para uma qualidade de serviço. Para ver um exemplo desta abordagem, consulte o artigo Modelagem de tráfego com o Red Hat.
As NICs dinâmicas não são suportadas para instâncias do Compute Engine que executam um SO Windows.
Computação de HPC com RDMA
A largura de banda é necessária para todas as três fases de uma tarefa de computação de alto desempenho (HPC): carregar, calcular e armazenar. Durante as fases de carregamento e armazenamento, as aplicações usam normalmente o TCP para comunicação e o endereço de memória direto remoto (RDMA) para as fases de computação. As instâncias H4D que usam o GVNIC para o tráfego TCP oferecem uma largura de banda de rede de até 200 Gbps. Se também configurar uma instância H4D para usar o RDMA na nuvem, a largura de banda da rede é partilhada entre as interfaces de rede RDMA configuradas.
A atribuição de largura de banda da rede entre o tráfego RDMA na nuvem e o tráfego TCP é feita dinamicamente. Em vez de limitar o tráfego de RDMA na nuvem e TCP a 100 Gbps de largura de banda cada, a interface de rede GVNIC pode usar toda a largura de banda disponível quando a interface de rede RDMA não está a ser usada. Da mesma forma, a interface de rede RDMA pode usar toda a largura de banda disponível quando a interface de rede GVNIC não está a ser usada. Quando ambos os tipos de interface de rede estão em utilização, o tráfego RDMA tem prioridade sobre o tráfego TCP porque é mais sensível ao desempenho.
Resumo da largura de banda
A tabela seguinte ilustra a largura de banda máxima possível com base no facto de um pacote ser enviado (saída) ou recebido (entrada) por uma instância de computação e no método de encaminhamento de pacotes.
Limites de largura de banda de saída
Encaminhamento numa rede VPC |
|
---|---|
Encaminhamento fora de uma rede de VPC |
|
Limites de largura de banda de entrada
Encaminhamento numa rede VPC |
|
---|---|
Encaminhamento fora de uma rede de VPC |
|
Largura de banda de saída
Google Cloud limita a largura de banda de saída (egress) através de taxas de saída máximas por instância. Estas taxas baseiam-se no tipo de máquina da instância de computação que está a enviar o pacote e se o destino do pacote é acessível através de rotas numa rede da VPC ou rotas fora de uma rede da VPC. A largura de banda de saída inclui pacotes emitidos por todas as NICs da instância e dados transferidos para todos os volumes do Hyperdisk e do disco persistente ligados à instância.
Largura de banda de saída máxima por instância
A largura de banda de saída máxima por instância é geralmente de 2 Gbps por vCPU, mas existem algumas diferenças e exceções, consoante a série de máquinas. A tabela seguinte mostra o intervalo dos limites máximos da largura de banda de saída para o tráfego encaminhado numa rede VPC.
A tabela seguinte resume a largura de banda de saída máxima para cada série de máquinas. Pode encontrar a largura de banda de saída máxima por instância para cada tipo de máquina indicado na página da respetiva família de máquinas específica (através dos links para cada série de máquinas na tabela).
Limite de saída por instância máximo | ||
---|---|---|
Série de máquinas | Standard | Redes de Nível 1 |
C4, e C4D | 100 Gbps | 200 Gbps |
C4A | 50 Gbps | 100 Gbps |
C3 e C3D | 100 Gbps | 200 Gbps |
C2 e C2D | 32 Gbps | 100 Gbps |
E2 | 16 Gbps | N/A |
E2 com núcleo partilhado | 2 Gbps | N/A |
H4D e H3 | 200 Gbps | N/A |
M4 | 100 Gbps | 200 Gbps |
M3 | 32 Gbps | 100 Gbps |
M2 | 32 Gbps no CPU Intel Cascade Lake ou posterior 16 Gbps noutras plataformas de CPU |
N/A |
M1 | 32 Gbps | N/A |
N4 | 50 Gbps | N/A |
N2 e N2D | 32 Gbps | 100 Gbps |
N1 (excluindo VMs com 1 vCPU) | 32 Gbps no CPU Intel Skylake e posterior 16 Gbps em plataformas de CPU anteriores |
N/A |
Tipos de máquinas N1 com 1 vCPU | 2 Gbps | N/A |
N1 com núcleo partilhado (f1-micro e g1-small) | 1 Gbps | N/A |
T2A e T2D | 32 Gbps | N/A |
X4 | 100 Gbps | N/A |
Z3 | 100 Gbps | 200 Gbps |
Para obter informações sobre a largura de banda da rede para a série de máquinas otimizadas para aceleradores, consulte o artigo Máquinas de rede e GPU.
A largura de banda de saída máxima por instância não é uma garantia. A largura de banda de saída real pode ser reduzida de acordo com fatores como a seguinte lista não exaustiva:
- Usar o VirtIO em vez do gVNIC com instâncias de computação que suportam ambos
- Tamanho do pacote
- Sobrecarga de protocolo
- O número de fluxos
- Definições do controlador Ethernet do SO convidado da instância de computação, como checksum offload e TCP segmentation offload (TSO)
- Congestionamento de rede
- Numa situação em que as E/S do disco persistente competem com outro tráfego de saída da rede, 60% da largura de banda máxima da rede é atribuída às escritas do disco persistente, deixando 40% para outro tráfego de saída da rede. Consulte o artigo Fatores que afetam o desempenho do disco para ver mais detalhes.
Para obter a largura de banda de saída máxima por instância possível:
- Ative o desempenho de rede de nível 1 por VM com tipos de máquinas maiores.
- Use a maior unidade de transmissão máxima (MTU) da rede VPC suportada pela topologia da sua rede. As MTUs maiores podem reduzir as despesas gerais dos cabeçalhos dos pacotes e aumentar a taxa de transferência de dados de payload.
- Use a versão mais recente do controlador gVNIC.
- Use máquinas de terceira geração ou posteriores que usam o Titanium para transferir o processamento de rede da CPU do anfitrião.
Saída para destinos encaminháveis numa rede VPC
Do ponto de vista de uma instância de envio e para endereços IP de destino acessíveis através de rotas numa rede VPC, Google Cloud limita o tráfego de saída através destas regras:
- Largura de banda de saída máxima por VM: a largura de banda de saída máxima por instância descrita na secção Largura de banda de saída máxima por instância.
- Largura de banda de saída inter-regional por projeto: se uma instância de envio e um destino interno ou o respetivo salto seguinte estiverem em regiões diferentes, oGoogle Cloud aplica uma quota com base na região e no projeto da instância de envio e na região do destino interno ou do salto seguinte. Para mais informações sobre esta quota, consulte Largura de banda de saída de rede entre regiões (Mbps) de instâncias de computação na documentação de quotas e limites da VPC.
- Limites do Cloud VPN e Cloud Interconnect: quando envia tráfego de uma instância para um destino de endereço IP interno encaminhável por um túnel do Cloud VPN de próximo salto ou um anexo de VLAN do Cloud Interconnect, a largura de banda de saída é limitada pelo seguinte:
- Taxa de pacotes e largura de banda máximas por túnel do Cloud VPN
- Taxa máxima de pacotes e largura de banda por associação VLAN
- Para usar totalmente a largura de banda de vários túneis da Cloud VPN de próximo salto ou anexos de VLAN do Cloud Interconnect através do encaminhamento ECMP, tem de usar várias ligações TCP (5 tuplos exclusivos).
Os destinos encaminháveis numa rede VPC incluem todos os seguintes destinos, cada um dos quais é acessível a partir da perspetiva da instância de envio através de um caminho cujo próximo salto não é o gateway de Internet predefinido:
- Endereços IPv4 internos regionais nos intervalos de endereços IPv4 primários e secundários da sub-rede, incluindo intervalos de endereços IPv4 privados e intervalos de endereços IPv4 públicos usados de forma privada, usados por estes recursos de destino:
- O endereço IPv4 interno principal da interface de rede (vNIC) de uma instância de receção. (Quando uma instância de envio se liga ao endereço IPv4 externo da vNIC de outra instância, os pacotes são encaminhados através de um gateway de Internet predefinido de próximo salto, pelo que se aplica o saída para destinos fora de uma rede da VPC.)
- Um endereço IPv4 interno num intervalo de IPs de alias da vNIC de uma instância de receção.
- Um endereço IPv4 interno de uma regra de encaminhamento interno para o encaminhamento de protocolos ou para um balanceador de carga de rede de passagem interna.
- Endereços IPv4 internos globais para estes recursos de destino:
- Intervalos de endereços de sub-rede IPv6 internos usados por
estes recursos de destino:
- Um endereço IPv6 do intervalo de endereços IPv6 atribuído à vNIC de uma instância de receção de pilha dupla ou apenas IPv6.
/96
- Um endereço IPv6 do
/96
intervalo de endereços IPv6 de uma regra de encaminhamento interno para o encaminhamento de protocolos ou para um balanceador de carga de rede de passagem interna.
- Um endereço IPv6 do intervalo de endereços IPv6 atribuído à vNIC de uma instância de receção de pilha dupla ou apenas IPv6.
- Intervalos de endereços de sub-rede IPv6 externos usados por
estes recursos de destino quando os pacotes são encaminhados através de trajetos de sub-rede
ou trajetos de sub-rede de peering na rede VPC ou por trajetos
personalizados na rede VPC que não usam o próximo salto do gateway
de Internet predefinido:
- Um endereço IPv6 do intervalo de endereços IPv6 atribuído à vNIC de uma instância de receção de pilha dupla ou apenas IPv6.
/96
- Um endereço IPv6 do
/96
intervalo de endereços IPv6 de uma regra de encaminhamento externo para o encaminhamento de protocolos ou para um Network Load Balancer de passagem externa.
- Um endereço IPv6 do intervalo de endereços IPv6 atribuído à vNIC de uma instância de receção de pilha dupla ou apenas IPv6.
- Outros destinos acessíveis através das seguintes rotas da rede VPC:
- Rotas dinâmicas
- Rotas estáticas exceto as que usam um salto seguinte do gateway de Internet predefinido
- Encaminhamentos personalizados de peering
A lista seguinte classifica o tráfego de instâncias de envio para destinos internos, da largura de banda mais elevada possível para a mais baixa:
- Entre instâncias de computação na mesma zona
- Entre instâncias de computação em zonas diferentes da mesma região
- Entre instâncias de computação em diferentes regiões
- De uma instância de computação para Google Cloud APIs e serviços através do acesso privado à Google ou acesso às APIs Google a partir do endereço IP externo de uma instância. Isto inclui pontos finais do Private Service Connect para APIs Google.
Saída para destinos fora de uma rede da VPC
Do ponto de vista de uma instância de envio e para endereços IP de destino fora de uma rede VPC, Google Cloud limita o tráfego de saída à taxa que for atingida primeiro entre as seguintes:
Largura de banda de saída por instância: a largura de banda máxima para todas as ligações de uma instância de computação a destinos fora de uma rede VPC é o menor dos seguintes valores: Largura de banda de saída máxima por instância e uma destas taxas:
- 25 Gbps, se a rede de nível 1 estiver ativada
- 7 Gbps, se a rede de nível 1 não estiver ativada
- 1 Gbps para instâncias H4D e H3
- 7 Gbps por NIC física para séries de máquinas que suportam várias NICs físicas, como a A3.
Por exemplo, embora uma instância
c3-standard-44
tenha uma largura de banda de saída máxima por VM de 32 Gbps, a largura de banda de saída por VM de uma VMc3-standard-44
para destinos externos é de 25 Gbps ou 7 Gbps, consoante o Tier_1 networking esteja ativado.Taxa de saída máxima por fluxo: a largura de banda máxima para cada ligação de 5 tuplos única, de uma instância de computação para um destino fora de uma rede VPC, é de 3 Gbps, exceto no H4D e H3, onde é de 1 Gbps.
Largura de banda de saída da Internet por projeto: a largura de banda máxima para todas as ligações de instâncias de computação em cada região de um projeto para destinos fora de uma rede VPC é definida pelas quotas de largura de banda de saída da Internet do projeto.
Os destinos fora de uma rede VPC incluem todos os seguintes destinos, cada um dos quais é acessível por uma rota na rede VPC da instância de envio cujo próximo salto é o gateway de Internet predefinido:
- Endereços IPv4 e IPv6 externos globais para balanceadores de carga de rede de proxy externos e balanceadores de carga de aplicações externos
- Endereços IPv4 externos regionais para Google Cloud recursos, incluindo endereços IPv4 externos de vNICs de VMs, endereços IPv4 externos para encaminhamento de protocolos externos, balanceadores de carga de rede de passagem externos e pacotes de resposta a gateways do Cloud NAT.
- Endereços IPv6 externos regionais em sub-redes de pilha dupla ou apenas IPv6 com intervalos de endereços IPv6 externos usados por endereços IPv6 externos de instâncias de pilha dupla ou apenas IPv6, encaminhamento de protocolos externos e equilibradores de carga de rede de passagem externa. A sub-rede tem de estar localizada numa rede VPC separada e sem intercâmbio. O intervalo de endereços IPv6 de destino tem de estar acessível através de uma rota na rede VPC da instância de envio cujo próximo salto é o gateway de Internet predefinido. Se uma sub-rede de pilha dupla ou apenas IPv6 com um intervalo de endereços IPv6 externos estiver localizada na mesma rede VPC ou numa rede VPC em peering, consulte o artigo Saída para destinos encaminháveis numa rede VPC.
- Outros destinos externos acessíveis através de uma rota estática na rede da VPC da instância de envio, desde que o próximo salto para a rota seja a gateway de Internet predefinida.
Para ver detalhes sobre que Google Cloud recursos usam que tipos de endereços IP externos, consulte Endereços IP externos.
Largura de banda de entrada
OGoogle Cloud processa a largura de banda de entrada (ingress) consoante a forma como o pacote recebido é encaminhado para uma instância de computação de receção.
Entrada para destinos encaminháveis numa rede VPC
Uma instância de receção pode processar tantos pacotes recebidos quanto o seu tipo de máquina, sistema operativo e outras condições de rede permitirem.O Google Cloud Google Cloud não implementa nenhuma restrição de largura de banda intencional nos pacotes recebidos entregues a uma instância se o pacote recebido for entregue através de rotas numa rede VPC:
- Encaminhamentos de sub-rede na rede VPC da instância de receção
- Encaminhamentos de sub-redes de intercâmbio numa rede da VPC com intercâmbio
- Trajetos noutra rede cujos próximos saltos são túneis da Cloud VPN, anexos do Cloud Interconnect (VLAN) ou instâncias de dispositivo de encaminhamento localizadas na rede VPC da instância de receção
Os destinos de pacotes encaminhados numa rede da VPC incluem:
- O endereço IPv4 interno principal da interface de rede (NIC) da instância de receção. Os endereços IPv4 internos principais são endereços IPv4 internos regionais que provêm do intervalo de endereços IPv4 principal de uma sub-rede.
- Um endereço IPv4 interno de um intervalo de IPs de alias da placa de rede da instância de receção. Os intervalos de IPs de alias podem ser provenientes do intervalo de endereços IPv4 principal de uma sub-rede ou de um dos respetivos intervalos de endereços IPv4 secundários.
- Um endereço IPv6 do
/96
intervalo de endereços IPv6 atribuído à NIC de uma instância de receção de pilha dupla ou apenas IPv6. Os intervalos de IPv6 das instâncias de computação podem ser provenientes destes intervalos de IPv6 de sub-rede:- Um intervalo de endereços IPv6 internos.
- Um intervalo de endereços IPv6 externos quando o pacote recebido é encaminhado internamente para a instância de receção através de uma das rotas da rede VPC indicadas anteriormente nesta secção.
- Um endereço IPv4 interno de uma regra de encaminhamento usada pelo encaminhamento de protocolo interno para a instância de receção ou o balanceador de carga de rede de passagem interna em que a instância de receção é um back-end do balanceador de carga. Os endereços IPv4 da regra de encaminhamento interno provêm do intervalo de endereços IPv4 principal de uma sub-rede.
- Um endereço IPv6 interno do intervalo IPv6 de uma regra de encaminhamento usada pelo encaminhamento de protocolos interno para a instância de receção ou o balanceador de carga de rede de passagem interna, em que a instância de receção é um back-end do balanceador de carga.
/96
Os endereços IPv6 das regras de encaminhamento internas provêm do intervalo de endereços IPv6 internos de uma sub-rede. - Um endereço IPv6 externo do
/96
intervalo IPv6 de uma regra de encaminhamento usada pelo encaminhamento de protocolos externos para a instância de receção ou o balanceador de carga de rede de passagem externo. A instância de receção é um back-end do balanceador de carga quando o pacote de entrada é encaminhado na rede VPC através de uma das rotas indicadas anteriormente nesta secção. Regra de encaminhamento externo Os endereços IPv6 provêm do intervalo de endereços IPv6 externos de uma sub-rede. - Um endereço IP dentro do intervalo de destino de uma rota estática personalizada que usa a instância de receção como uma instância de próximo salto (
next-hop-instance
ounext-hop-address
). - Um endereço IP no intervalo de destino de uma rota estática personalizada que usa um salto seguinte do Network Load Balancer de passagem interna (
next-hop-ilb
), se a instância de receção for um back-end para esse balanceador de carga.
Entrada para destinos fora de uma rede da VPC
Google Cloud Implementa os seguintes limites de largura de banda para pacotes recebidos entregues a uma instância de receção através de rotas fora de uma rede VPC. Quando o equilíbrio de carga está envolvido, os limites de largura de banda são aplicados individualmente a cada instância de receção.
Para séries de máquinas que não suportam várias NICs físicas, a restrição de largura de banda de entrada aplicável aplica-se coletivamente a todas as interfaces de rede virtuais (vNICs). O limite é a primeira das seguintes taxas encontradas:
- 1 800 000 pacotes por segundo
- 30 Gbps
Para séries de máquinas que suportam várias NICs físicas, como a A3, a restrição de largura de banda de entrada aplicável aplica-se individualmente a cada NIC física. O limite é a primeira das seguintes taxas encontradas:
- 1 800 000 pacotes por segundo por NIC física
- 30 Gbps por NIC física
Os destinos dos pacotes encaminhados através de rotas fora de uma rede VPC incluem:
- Um endereço IPv4 externo atribuído numa configuração de acesso NAT individual numa das interfaces de rede (NICs) da instância de receção.
- Um endereço IPv6 externo do
/96
intervalo de endereços IPv6 atribuído a uma vNIC de uma instância de receção de pilha dupla ou apenas IPv6 quando o pacote de entrada é encaminhado através de uma rota fora da rede VPC da instância de receção. - Um endereço IPv4 externo de uma regra de encaminhamento usada pelo encaminhamento de protocolo externo para a instância de receção ou o balanceador de carga de rede de passagem externa em que a instância de receção é um back-end do balanceador de carga.
- Um endereço IPv6 externo do
/96
intervalo IPv6 de uma regra de encaminhamento usada pelo encaminhamento de protocolos externos para a instância de receção ou o balanceador de carga de rede de passagem externo. A instância de receção tem de ser um back-end do equilibrador de carga quando o pacote de entrada é encaminhado através de uma rota fora de uma rede de VPC. - Respostas de entrada estabelecidas processadas pelo Cloud NAT.
Use frames jumbo para maximizar a largura de banda da rede
Para receber e enviar frames jumbo, configure a rede VPC usada pelas suas instâncias de computação; defina a unidade de transmissão máxima (MTU) para um valor superior, até 8896.
Os valores de MTU mais elevados aumentam o tamanho dos pacotes e reduzem a sobrecarga do cabeçalho do pacote, o que aumenta o débito de dados de carga útil.
Pode usar frames jumbo com a versão 1.3 ou posterior do controlador gVNIC em instâncias de VM ou com o controlador IDPF em instâncias bare metal. Nem todas as Google Cloud imagens públicas incluem estes controladores. Para mais informações sobre o suporte do sistema operativo para frames jumbo, consulte o separador Funcionalidades de rede na página Detalhes do sistema operativo.
Se estiver a usar uma imagem do SO que não tenha suporte total para frames jumbo,
pode instalar manualmente a versão v1.3.0 ou posterior do controlador gVNIC. A Google
recomenda que instale a versão do controlador gVNIC marcada com Latest
para beneficiar de
funcionalidades adicionais e correções de erros. Pode transferir os controladores gVNIC do
GitHub.
Para atualizar manualmente a versão do controlador gVNIC no SO convidado, consulte o artigo Use on non-supported operating systems (Utilização em sistemas operativos não suportados).
Jumbo frames e máquinas com GPU
Para tipos de máquinas com GPU, use as definições de MTU recomendadas para frames Jumbo. Para mais informações, consulte o artigo Definições de MTU recomendadas para frames Jumbo.
Filas de receção e transmissão
A cada NIC ou vNIC de uma instância de computação é atribuído um número de filas de receção e transmissão para processar pacotes da rede.
- Fila de receção (RX): fila para receber pacotes. Quando a NIC recebe um pacote da rede, a NIC seleciona o descritor de um pacote recebido da fila, processa-o e entrega o pacote ao SO convidado através de uma fila de pacotes anexada a um núcleo de vCPU com uma interrupção. Se a fila RX estiver cheia e não existir nenhum buffer disponível para colocar um pacote, o pacote é rejeitado. Normalmente, isto pode acontecer se uma aplicação estiver a usar excessivamente um núcleo de vCPU que também está associado à fila de pacotes selecionada.
- Fila de transmissão (TX): fila para transmitir pacotes. Quando o SO convidado envia um pacote, é alocado um descritor e colocado na fila TX. Em seguida, a NIC processa o descritor e transmite o pacote.
Atribuição de fila predefinida
A menos que atribua explicitamente contagens de filas para NICs, pode modelar a forma como o algoritmo Google Cloud usa para atribuir um número fixo de filas RX e TX por NIC da seguinte forma:
- Instâncias bare metal
- Para instâncias bare metal, existe apenas uma NIC, pelo que a quantidade máxima de filas é 16.
- Instâncias de VM que usam a interface de rede gVNIC
Para instâncias C4, para melhorar o desempenho, as seguintes configurações usam um número fixo de filas:
- Para instâncias do Linux com 2 vCPUs, a contagem da fila é 1.
- Para instâncias do Linux com 4 vCPUs, a contagem da fila é 2.
Para as outras séries de máquinas, a quantidade de filas depende de a série de máquinas usar ou não o Titanium.
Para instâncias de terceira geração (excluindo o M3) e posteriores que usam o Titanium:
Divida o número de vCPUs pelo número de vNICs (
num_vcpus/num_vnics
) e ignore o resto.Para VMs de primeira e segunda geração que não usam o Titanium:
Divida o número de vCPUs pelo número de vNICs e, em seguida, divida o resultado por 2 (
num_vcpus/num_vnics/2
). Rejeite qualquer resto.
Para concluir o cálculo da quantidade predefinida de filas:
Se o número calculado for inferior a 1, atribua uma fila a cada vNIC.
Determine se o número calculado é superior ao número máximo de filas por vNIC, que é
16
. Se o número calculado for superior a16
, ignore o número calculado e atribua 16 filas a cada vNIC.
- Instâncias de VM que usam a interface de rede VirtIO ou um controlador personalizado
Divida o número de vCPUs pelo número de vNICs e ignore qualquer resto —
[number of vCPUs/number of vNICs]
.Se o número calculado for inferior a 1, atribua uma fila a cada vNIC.
Determine se o número calculado é superior ao número máximo de filas por vNIC, que é
32
. Se o número calculado for superior a32
, ignore o número calculado e atribua 32 filas a cada vNIC.
- Instâncias H4D com RDMA
Para a instância H4D que usa o RDMA na nuvem, devido aos tipos de máquinas limitados que estão disponíveis para o H4D, cada servidor anfitrião tem uma única instância de computação. Assim, a instância recebe todos os pares de filas disponíveis.
Exemplos
Os exemplos seguintes mostram como calcular o número predefinido de filas para uma instância de VM:
Se uma instância de VM usar o VirtIO e tiver 16 vCPUs e 4 vNICs, o número calculado é
[16/4] = 4
. Google Cloud atribui quatro filas a cada vNIC.Se uma instância de VM usar gVNIC e tiver 128 vCPUs e duas vNICs, o número calculado é
[128/2/2] = 32
. Google Cloud atribui a cada vNIC o número máximo de filas por vNIC possível. Google Cloudatribui16
filas por vNIC.
Nos sistemas Linux, pode usar ethtool
para configurar uma vNIC com menos filas do que o número de filas que o Google Cloud atribui por vNIC.
As filas são contabilizadas quando usa a interface de rede dinâmica
Se usar interfaces de rede dinâmicas com as suas interfaces de rede, as contagens de filas não são alteradas. Uma NIC dinâmica não tem as suas próprias filas de receção e transmissão; usa as mesmas filas que a vNIC principal.
Atribuição de filas personalizada para instâncias de VM
Em vez da atribuição de filas predefinida, pode atribuir uma quantidade de filas personalizada (total de RX e TX) a cada vNIC quando cria uma nova instância de computação através da API Compute Engine.
O número de filas personalizadas que especificar tem de cumprir as seguintes regras:
O número mínimo de filas que pode atribuir por vNIC é um.
O número máximo de filas que pode atribuir a cada vNIC de uma instância de VM é o menor do número de vCPUs ou o número máximo de filas por vNIC, com base no tipo de controlador:
- Se usar virtIO
ou um controlador personalizado, a contagem máxima de filas é
32
. - Com gVNIC, o número máximo de filas é
16
, exceto para o seguinte, em que o número máximo de filas é 32:- Instâncias A2 ou G2
- Instâncias de TPU
- Instâncias C2, C2D, N2 ou N2D com a rede de nível 1 ativada
Para as seguintes configurações de VM confidencial, a quantidade máxima de filas é
8
:- AMD SEV nos tipos de máquinas C2D e N2D
- AMD SEV-SNP em tipos de máquinas N2D
- Se usar virtIO
ou um controlador personalizado, a contagem máxima de filas é
Se atribuir contagens de filas personalizadas a todas as NICs da instância de computação, a soma das atribuições de contagem de filas tem de ser inferior ou igual ao número de vCPUs atribuídas à instância.
Pode subscrever em excesso a contagem de filas personalizadas para as suas vNICs. Por outras palavras, pode ter uma soma das contagens de filas atribuídas a todas as NICs para a instância de VM que seja superior ao número de vCPUs da instância. Para exceder o número de filas personalizadas, a instância de VM tem de satisfazer as seguintes condições:
- Use gVNIC como o tipo de vNIC para todas as NICs configuradas para a instância.
- Usa um tipo de máquina que suporta a rede de nível 1.
- Tem a rede de Nível 1 ativada.
- Especificou uma contagem de filas personalizada para todas as NICs configuradas para a instância.
Com a subscrição excessiva da fila, a contagem máxima de filas para a instância de VM é 16 vezes o número de NICs. Assim, se tiver 6 NICs configurados para uma instância com 30 vCPUs, pode configurar um máximo de (16 * 6) ou 96 filas personalizadas para a sua instância.
Exemplos
Se uma instância de VM tiver 8 vCPUs e 3 vNICs, a quantidade máxima de filas para a instância é o número de vCPUs, ou seja, 8. Pode atribuir 1 fila a
nic0
, 4 filas anic1
e 3 filas anic2
. Neste exemplo, não pode atribuir posteriormente 4 filas anic2
, mantendo as outras duas atribuições de filas de vNIC, porque a soma das filas atribuídas não pode exceder o número de vCPUs.Se tiver uma VM N2 com 96 vCPUs e 2 vNICs, pode atribuir ambas as vNICs até 32 filas cada quando usar o controlador virtIO ou até 16 filas cada quando usar o controlador gVNIC. Se ativar a rede de nível 1 para a VM N2, pode atribuir até 32 filas a cada vNIC. Neste exemplo, a soma das filas atribuídas é sempre inferior ou igual ao número de vCPUs.
Também é possível atribuir uma quantidade de filas personalizada apenas a algumas NICs, o que permite que o sistemaGoogle Cloud atribua filas às NICs restantes. O número de filas que pode atribuir por vNIC continua sujeito às regras mencionadas anteriormente. Pode modelar a viabilidade da sua configuração e, se a configuração for possível, o número de filas que Google Cloud atribui às restantes vNICs com este processo:
Calcule a soma das filas para as vNICs através da atribuição de filas personalizada. Para uma VM de exemplo com 20 vCPUs e 6 vNICs, suponha que atribui
nic0
5 filas,nic1
6 filas,nic2
4 filas e permite que o Google Cloud atribua filas paranic3
,nic4
enic5
. Neste exemplo, a soma das filas atribuídas personalizadas é5+6+4 = 15
.Subtraia a soma das filas atribuídas personalizadamente ao número de vCPUs. Se a diferença for inferior ao número de vNICs restantes para os quaisGoogle Cloud tem de atribuir filas Google Cloud , é devolvido um erro porque cada vNIC tem de ter, pelo menos, uma fila.
Continuando o exemplo com uma VM que tem 20 vCPUs e uma soma de
15
filas atribuídas personalizadas Google Cloud ,tem20-15 = 5
filas restantes para atribuir às vNICs restantes (nic3
,nic4
,nic5
).Divida a diferença do passo anterior pelo número de vNICs restantes e rejeite qualquer resto
⌊(number of vCPUs - sum of assigned queues)/(number of remaining vNICs)⌋
. Este cálculo resulta sempre num número inteiro (não numa fração) que é, pelo menos, igual a um devido à restrição explicada no passo anterior. Google Cloud atribui a cada vNIC restante uma contagem de filas correspondente ao número calculado, desde que o número calculado não seja superior ao número máximo de filas por vNIC. O número máximo de filas por vNIC depende do tipo de controlador:
- Se usar o virtIO ou um controlador personalizado, se o número calculado de filas para cada vNIC restante for superior a
32
, Google Cloud são atribuídas32
filas a cada vNIC restante. - Se usar o gVNIC, se o número calculado de filas para cada vNIC restante for superior ao limite de
16
ou32
(consoante a configuração da VM),o Google Cloud atribui16
filas a cada vNIC restante.
Configure contagens de filas personalizadas
Para criar uma instância de computação que use uma contagem de filas personalizada para uma ou mais NICs ou vNICs, conclua os passos seguintes.
Nos exemplos de código seguintes, a VM é criada com o tipo de interface de rede definido como GVNIC
e o desempenho de rede de nível 1 por VM ativado. Pode usar estes exemplos de código para especificar as contagens máximas de filas e a subscrição excessiva de filas que estão disponíveis para os tipos de máquinas suportados.
gcloud
- Se ainda não tiver uma rede VPC com uma sub-rede para cada interface vNIC que planeia configurar, crie-as.
- Use o comando
gcloud compute instances create
para criar a instância de computação. Repita a flag--network-interface
para cada vNIC que quer configurar para a instância e inclua a opçãoqueue-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
Substitua o seguinte:
INSTANCE_NAME
: um nome para a nova instância de computaçãoZONE
: a zona na qual criar a instânciaMACHINE_TYPE
: o tipo de máquina da instância. Para subscrever em excesso a quantidade de filas, o tipo de máquina que especificar tem de suportar a rede gVNIC e de nível 1.NETWORK_NAME
: o nome da rede criada anteriormenteSUBNET_*
: o nome de uma das sub-redes criadas anteriormenteQUEUE_SIZE
: o número de filas para a vNIC, sujeito às regras abordadas na secção Atribuição de filas personalizada.
Terraform
- Se ainda não tiver uma rede VPC com uma sub-rede para cada interface vNIC que planeia configurar, crie-as.
Crie uma instância de computação com contagens de filas específicas para vNICs através do recurso
google_compute_instance
. Repita o parâmetro--network-interface
para cada vNIC que quer configurar para a instância de computação e inclua o parâmetroqueue-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"" } }
Substitua o seguinte:
VM_NAME
: um nome para a nova instância de computaçãoPROJECT_ID
: ID do projeto no qual criar a instância. A menos que esteja a usar uma rede VPC partilhada, o projeto que especificar tem de ser o mesmo no qual todas as sub-redes e redes foram criadas.DEVICE_NAME
: O nome a associar ao disco de arranque no SO convidadoIMAGE_NAME
: o nome de uma imagem,por exemplo,"projects/debian-cloud/global/images/debian-11-bullseye-v20231010"
.DISK_SIZE
: o tamanho do disco de arranque, em GiBDISK_TYPE
: o tipo de disco a usar para o disco de arranque, por exemplo,pd-standard
MACHINE_TYPE
: o tipo de máquina da instância. Para subscrever em excesso a quantidade de filas, o tipo de máquina que especificar tem de suportar a rede gVNIC e de nível 1.ZONE
: a zona na qual criar a instânciaQUEUE_COUNT
: o número de filas para a vNIC, sujeito às regras abordadas na secção Atribuição de filas personalizada.SUBNET_*
: o nome da sub-rede à qual a interface de rede se liga
REST
- Se ainda não tiver uma rede VPC com uma sub-rede para cada interface vNIC que planeia configurar, crie-as.
Crie uma instância de computação com contagens de filas específicas para NICs através do método
instances.insert
. Repita a propriedadenetworkInterfaces
para configurar várias interfaces de rede.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" } ], }
Substitua o seguinte:
PROJECT_ID
: ID do projeto no qual criar a instância de computaçãoZONE
: zona na qual criar a instância de computaçãoVM_NAME
: name da nova instância de computaçãoMACHINE_TYPE
: tipo de máquina, predefinido ou personalizado, para a nova instância de computação. Para subscrever em excesso a contagem de filas, o tipo de máquina tem de suportar a gVNIC e a rede de Nível 1.SUBNET_*
: o nome da sub-rede à qual a interface de rede se ligaQUEUE_COUNT
: número de filas para a vNIC, sujeito às regras abordadas na secção Alocação de filas personalizada.
Atribuições de filas e alteração do tipo de máquina
As instâncias de computação são criadas com uma atribuição de fila predefinida ou pode atribuir uma quantidade de filas personalizada a cada placa de interface de rede virtual (vNIC) quando cria uma nova instância de computação através da API Compute Engine. As atribuições de filas de vNIC predefinidas ou personalizadas só são definidas quando cria uma instância de computação. Se a sua instância tiver vNICs que usam contagens de filas predefinidas, pode alterar o respetivo tipo de máquina. Se o tipo de máquina para o qual está a mudar tiver um número diferente de vCPUs, as contagens de filas predefinidas para a sua instância são recalculadas com base no novo tipo de máquina.
Se a sua VM tiver vNICs que usam contagens de filas personalizadas e não predefinidas, pode alterar o tipo de máquina através da CLI do Google Cloud ou da API Compute Engine para atualizar as propriedades da instância. A conversão é bem-sucedida se a VM resultante suportar a mesma quantidade de filas por vNIC que a instância original. Para VMs que usam a interface VirtIO-Net e têm uma contagem de filas personalizada superior a 16 por vNIC, não pode alterar o tipo de máquina para um tipo de máquina de terceira geração ou posterior, porque usam apenas gVNIC. Em alternativa, pode migrar a sua VM para um tipo de máquina de terceira geração ou posterior seguindo as instruções em Mova a sua carga de trabalho para uma nova instância de computação.
O que se segue?
- Saiba mais sobre os tipos de máquinas.
- Saiba mais sobre as instâncias de máquinas virtuais.
- Criar e iniciar uma instância de VM.
- Configure o desempenho de rede de nível 1 por VM para uma instância de computação.
- Conclua o tutorial de início rápido Crie uma instância de VM Linux no Compute Engine.
- Conclua o tutorial de início rápido Crie uma instância de VM do Windows Server no Compute Engine.