Google Cloud tiene en cuenta el ancho de banda por instancia de proceso, no por interfaz de red virtual (vNIC) ni por dirección IP. El tipo de máquina de una instancia define su tasa de salida máxima posible. Sin embargo, solo puedes alcanzar esa tasa de salida máxima posible en situaciones específicas.
En esta página se describen los límites de ancho de banda de red, que son útiles para planificar las implementaciones. Categoriza el ancho de banda mediante dos dimensiones:
- Salida o entrada: en esta página, los términos "salida" y "entrada" siempre se refieren a la perspectiva de una Google Cloud instancia:
- Los paquetes enviados desde una instancia Google Cloud componen su tráfico de salida.
- Los paquetes enviados a una instancia Google Cloud componen su tráfico de entrada (entrante).
- Cómo se enruta el paquete: un paquete se puede enrutar desde una instancia de envío o a una instancia de recepción mediante rutas cuyos siguientes saltos se encuentren dentro de una red de VPC o fuera de ella.
Toda la información de esta página se aplica a las instancias de cálculo de Compute Engine, así como a los productos que dependen de las instancias de Compute Engine. Por ejemplo, un nodo de Google Kubernetes Engine es una instancia de Compute Engine.
Configuraciones que afectan al ancho de banda de la red
Para obtener el mayor ancho de banda de entrada y salida posible, configura el rendimiento de red Tier_1 por VM en tu instancia de proceso.
Ni las interfaces de red virtuales (vNICs) adicionales ni las direcciones IP adicionales por vNIC aumentan el ancho de banda de entrada o salida de una instancia de proceso. Por ejemplo, una VM C3 con 22 vCPUs está limitada a 23 Gbps de ancho de banda de salida total. Si configuras la VM C3 con dos vNICs, la VM seguirá teniendo un límite de 23 Gbps de ancho de banda de salida total, no de 23 Gbps por vNIC.
Las interfaces de red dinámicas (vista previa) usan el ancho de banda de su vNIC principal. No hay aislamiento del tráfico en una vNIC principal. El tráfico de red de una NIC dinámica puede privar de recursos a las otras NICs dinámicas asociadas a la misma NIC virtual principal. Para evitar este conflicto, puedes usar el control de tráfico (TC) de Linux para crear políticas de limitación de tráfico específicas de cada aplicación. Estas políticas ayudan a implementar la equidad o determinados tipos de prioridad. Para priorizar, asigna el tráfico (por ejemplo, para NICs dinámicas) a una clase de tráfico y, a continuación, asigna esa clase de tráfico a una calidad del servicio. Para ver un ejemplo de este enfoque, consulta Traffic shaping with Red Hat (Limitación del tráfico con Red Hat).
No se admiten las NICs dinámicas en las instancias de Compute Engine que ejecutan un SO Windows.
Resumen del ancho de banda
En la siguiente tabla se muestra el ancho de banda máximo posible en función de si un paquete se envía desde una instancia de proceso (salida) o se recibe en ella (entrada), así como del método de enrutamiento de paquetes.
Límites de ancho de banda de salida
Enrutamiento en una red VPC |
|
---|---|
Enrutamiento fuera de una red VPC |
|
Límites de ancho de banda de entrada
Enrutamiento en una red VPC |
|
---|---|
Enrutamiento fuera de una red VPC |
|
Ancho de banda de salida
Google Cloud limita el ancho de banda de salida (egreso) mediante las tasas máximas de egreso por instancia. Estas tarifas se basan en el tipo de máquina de la instancia de computación que envía el paquete y en si se puede acceder al destino del paquete mediante rutas dentro de una red VPC o rutas fuera de una red VPC. El ancho de banda de salida incluye los paquetes emitidos por todas las NICs de la instancia y los datos transferidos a todos los volúmenes de Hyperdisk y de disco persistente conectados a la instancia.
Ancho de banda de salida máximo por instancia
El ancho de banda de salida máximo por instancia suele ser de 2 Gbps por vCPU, pero hay algunas diferencias y excepciones en función de la serie de la máquina. En la siguiente tabla se muestra el intervalo de límites máximos de ancho de banda de salida del tráfico enrutado en una red de VPC.
En la siguiente tabla se resume el ancho de banda de salida máximo de cada serie de máquinas. Puedes consultar el ancho de banda de salida máximo por instancia de cada tipo de máquina en la página de su familia de máquinas específica (usa los enlaces de cada serie de máquinas de la tabla).
Límite de salida por instancia | ||
---|---|---|
Serie de máquinas | Estándar | Redes de nivel 1 |
C4 y C4D | 100 Gbps | 200 Gbps |
C4A | 50 Gbps | 100 Gbps |
C3 y C3D | 100 Gbps | 200 Gbps |
C2 y C2D | 32 Gbps | 100 Gbps |
E2 | 16 Gb/s | N/A |
E2 con núcleo compartido | 2 Gb/s | N/A |
H3 | 200 Gbps | N/A |
M4 | 100 Gbps | 200 Gbps |
M3 | 32 Gbps | 100 Gbps |
M2 | 32 Gbps en CPUs Intel Cascade Lake o posteriores 16 Gbps en otras plataformas de CPU |
N/A |
M1 | 32 Gbps | N/A |
N4 | 50 Gbps | N/A |
N2 y N2D | 32 Gbps | 100 Gbps |
N1 (excepto las VMs con 1 vCPU) | 32 Gbps en Intel Skylake y CPUs posteriores 16 Gbps en plataformas de CPUs anteriores |
N/A |
Tipos de máquinas N1 con 1 vCPU | 2 Gb/s | N/A |
N1 con núcleo compartido (f1-micro y g1-small) | 1 Gbps | N/A |
T2A y T2D | 32 Gbps | N/A |
X4 | 100 Gbps | N/A |
Z3 | 100 Gbps | 200 Gbps |
Para obtener información sobre el ancho de banda de la red de las series de máquinas optimizadas para aceleradores, consulta Máquinas de redes y GPUs.
El ancho de banda de salida máximo por instancia no es una garantía. El ancho de banda de salida real puede reducirse en función de factores como los que se indican en la siguiente lista no exhaustiva:
- Usar VirtIO en lugar de gVNIC con instancias de proceso que admitan ambos
- Tamaño del paquete
- Sobrecarga del protocolo
- El número de flujos
- Ajustes del controlador Ethernet del SO invitado de la instancia de cálculo, como la descarga de la suma de comprobación y la descarga de la segmentación TCP (TSO)
- Congestión de red
- En una situación en la que las operaciones de entrada/salida de disco persistente compiten con otro tráfico de salida de red, se asigna el 60% del ancho de banda de red máximo a las escrituras de disco persistente, lo que deja un 40% para otro tráfico de salida de red. Consulta más información en la sección Factores que afectan al rendimiento del disco.
Para obtener el ancho de banda de salida máximo por instancia más grande posible, haz lo siguiente:
- Habilita el rendimiento de red Tier_1 por VM con tipos de máquinas más grandes.
- Usa la unidad de transmisión máxima (MTU) de la red de VPC más grande que admita tu topología de red. Los MTUs más grandes pueden reducir la sobrecarga de los encabezados de los paquetes y aumentar el rendimiento de los datos de la carga útil.
- Usa la versión más reciente del controlador gVNIC.
- Usa series de máquinas de tercera generación o posteriores que usen Titanium para descargar el procesamiento de la red de la CPU del host.
Salida a destinos a los que se puede enrutar dentro de una red VPC
Desde la perspectiva de una instancia de envío y para las direcciones IP de destino a las que se puede acceder mediante rutas dentro de una red de VPC,Google Cloud limita el tráfico saliente mediante estas reglas:
- Ancho de banda de salida máximo por VM: ancho de banda de salida máximo por instancia descrito en la sección Ancho de banda de salida máximo por instancia.
- Ancho de banda de salida entre regiones por proyecto: si una instancia de envío y un destino interno o su siguiente salto están en regiones diferentes,Google Cloud aplica una cuota basada en la región y el proyecto de la instancia de envío, así como en la región del destino interno o del siguiente salto. Para obtener más información sobre esta cuota, consulta Ancho de banda de salida de red entre regiones (Mbps) de instancias de Compute en la documentación sobre cuotas y límites de VPC.
- Límites de Cloud VPN y Cloud Interconnect: al enviar tráfico desde una instancia a una dirección IP interna de destino a la que se puede enrutar mediante un túnel de Cloud VPN de salto siguiente o una vinculación de VLAN de Cloud Interconnect, el ancho de banda de salida está limitado por lo siguiente:
- Frecuencia máxima de paquetes y ancho de banda por túnel de Cloud VPN
- Frecuencia máxima de paquetes y ancho de banda por vinculación de VLAN
- Para usar completamente el ancho de banda de varios túneles de Cloud VPN de salto siguiente o vinculaciones de VLAN de Cloud Interconnect mediante el enrutamiento ECMP, debes usar varias conexiones TCP (quíntuplas únicas).
Entre los destinos a los que se puede enrutar dentro de una red de VPC se incluyen los siguientes, a los que se puede acceder desde la instancia de envío mediante una ruta cuyo siguiente salto no es la puerta de enlace de Internet predeterminada:
- Direcciones IPv4 internas regionales en intervalos de direcciones IPv4 principales y secundarias de subred, incluidos los intervalos de direcciones IPv4 privadas y los intervalos de direcciones IPv4 públicas usadas de forma privada, que utilizan estos recursos de destino:
- La dirección IPv4 interna principal de la interfaz de red (vNIC) de una instancia receptora. Cuando una instancia de envío se conecta a la dirección IPv4 externa de la interfaz de red virtual de otra instancia, los paquetes se enrutan mediante una pasarela de Internet predeterminada de salto siguiente, por lo que se aplica la salida a destinos fuera de una red de VPC.
- Una dirección IPv4 interna de un intervalo de IP de alias de la interfaz de red virtual de una instancia receptora.
- Una dirección IPv4 interna de una regla de reenvío interna para el reenvío de protocolos o para un balanceador de carga de red de paso a través interno.
- Direcciones IPv4 internas globales de estos recursos de destino:
- Intervalos de direcciones de subred IPv6 internas que usan estos recursos de destino:
- Una dirección IPv6 del
/96
intervalo de direcciones IPv6 asignado a la interfaz de red virtual de una instancia de recepción de doble pila o solo IPv6. - Una dirección IPv6 del
/96
intervalo de direcciones IPv6 de una regla de reenvío interna para el reenvío de protocolos o para un balanceador de carga de red interno de tipo pasarela.
- Una dirección IPv6 del
- Intervalos de direcciones de subred IPv6 externas que usan estos recursos de destino cuando los paquetes se enrutan mediante rutas de subred o rutas de subred de emparejamiento en la red de VPC, o bien mediante rutas personalizadas en la red de VPC que no usan el siguiente salto de la puerta de enlace de Internet predeterminada:
- Una dirección IPv6 del
/96
intervalo de direcciones IPv6 asignado a la interfaz de red virtual de una instancia de recepción de doble pila o solo IPv6. - Una dirección IPv6 del intervalo de direcciones IPv6
/96
de una regla de reenvío externa para el reenvío de protocolos o para un balanceador de carga de red passthrough externo.
- Una dirección IPv6 del
- Otros destinos accesibles mediante las siguientes rutas de red de VPC:
- Rutas dinámicas
- Rutas estáticas excepto las que usan un siguiente salto de pasarela de Internet predeterminada
- Rutas personalizadas de peering
En la siguiente lista se clasifica el tráfico de las instancias de envío a los destinos internos, de mayor a menor ancho de banda posible:
- Entre instancias de proceso de la misma zona
- Entre instancias de proceso en diferentes zonas de la misma región
- Entre instancias de computación de diferentes regiones
- Desde una instancia de proceso a las APIs y los servicios mediante el Google Cloud acceso privado de Google o accediendo a las APIs de Google desde la dirección IP externa de una instancia. Esto incluye los puntos finales de Private Service Connect para las APIs de Google.
Salida a destinos fuera de una red de VPC
Desde el punto de vista de una instancia de envío y para las direcciones IP de destino fuera de una red de VPC, Google Cloud se limita el tráfico saliente a la velocidad que se alcance primero de las siguientes:
Ancho de banda de salida por instancia: el ancho de banda máximo de todas las conexiones de una instancia de proceso a destinos fuera de una red VPC es el menor de los siguientes valores: Ancho de banda de salida máximo por instancia y una de estas velocidades:
- 25 Gbps si la red de nivel 1 está habilitada
- 7 Gbps si la red Tier_1 no está habilitada
- 1 Gbps para las instancias H3
- 7 Gbps por NIC física en las series de máquinas que admiten varias NICs físicas, como A3.
Por ejemplo, aunque una instancia
c3-standard-44
tiene un ancho de banda de salida máximo por VM de 32 Gbps, el ancho de banda de salida por VM de una VMc3-standard-44
a destinos externos es de 25 Gbps o de 7 Gbps, en función de si la red de nivel 1 está habilitada.Velocidad de salida máxima por flujo: el ancho de banda máximo de cada conexión única de 5 tuplas, desde una instancia de proceso hasta un destino fuera de una red VPC, es de 3 Gbps, excepto en H3, donde es de 1 Gbps.
Ancho de banda saliente de Internet por proyecto: el ancho de banda máximo de todas las conexiones de las instancias de proceso de cada región de un proyecto a destinos fuera de una red de VPC se define mediante las cuotas de ancho de banda saliente de Internet del proyecto.
Los destinos que no están en una red de VPC incluyen todos los destinos siguientes, a los que se puede acceder mediante una ruta de la red de VPC de la instancia de envío cuyo siguiente salto es la pasarela de Internet predeterminada:
- Direcciones IPv4 e IPv6 externas globales para balanceadores de carga de red con proxy externos y balanceadores de carga de aplicaciones externos
- Direcciones IPv4 externas regionales para Google Cloud recursos, incluidas las direcciones IPv4 externas de las NIC virtuales de las VMs, las direcciones IPv4 externas para el reenvío de protocolos externos, los balanceadores de carga de red de tipo pasarela externos y los paquetes de respuesta a las pasarelas de Cloud NAT.
- Direcciones IPv6 externas regionales en subredes de doble pila o solo IPv6 con intervalos de direcciones IPv6 externas usadas por direcciones IPv6 externas de instancias de doble pila o solo IPv6, reenvío de protocolos externos y balanceadores de carga de red de pases externos. La subred debe estar ubicada en una red de VPC independiente que no esté emparejada. Se debe poder acceder al intervalo de direcciones IPv6 de destino mediante una ruta de la red VPC de la instancia de envío cuyo siguiente salto sea la pasarela de Internet predeterminada. Si una subred de doble pila o solo IPv6 con un intervalo de direcciones IPv6 externas se encuentra en la misma red de VPC o en una red de VPC emparejada, consulta Salida a destinos enrutables en una red de VPC.
- Otros destinos externos accesibles mediante una ruta estática en la red VPC de la instancia de envío, siempre que el siguiente salto de la ruta sea la pasarela de Internet predeterminada.
Para obtener información sobre qué recursos Google Cloud utilizan qué tipos de direcciones IP externas, consulta Direcciones IP externas.
Ancho de banda de entrada
Google Cloud gestiona el ancho de banda de entrada (ingreso) en función de cómo se enruta el paquete entrante a una instancia de computación receptora.
Entrada a destinos a los que se puede enrutar dentro de una red de VPC
Una instancia receptora puede gestionar tantos paquetes entrantes como le permitan su tipo de máquina, su sistema operativo y otras condiciones de la red. Google Cloud no implementa ninguna restricción de ancho de banda intencionada en los paquetes entrantes que se envían a una instancia si el paquete entrante se envía mediante rutas dentro de una red VPC:
- Rutas de subred en la red de VPC de la instancia receptora
- Rutas de subred de emparejamiento en una red VPC emparejada
- Rutas de otra red cuyos siguientes saltos son túneles de Cloud VPN, vinculaciones de Cloud Interconnect (VLAN) o instancias de Router Appliance ubicadas en la red VPC de la instancia receptora
Los destinos de los paquetes que se enrutan en una red de VPC son los siguientes:
- La dirección IPv4 interna principal de la interfaz de red (NIC) de la instancia receptora. Las direcciones IPv4 internas principales son direcciones IPv4 internas regionales que proceden del intervalo de direcciones IPv4 principal de una subred.
- Una dirección IPv4 interna de un intervalo de IP de alias de la NIC de la instancia receptora. Los intervalos de IPs de alias pueden proceder del intervalo de direcciones IPv4 principal de una subred o de uno de sus intervalos de direcciones IPv4 secundarios.
- Una dirección IPv6 del
/96
intervalo de direcciones IPv6 asignado a la NIC de una instancia receptora de doble pila o solo IPv6. Los intervalos de IPv6 de las instancias de Compute pueden proceder de estos intervalos de IPv6 de subred:- Un intervalo de direcciones IPv6 internas.
- Un intervalo de direcciones IPv6 externas cuando el paquete entrante se enruta internamente a la instancia receptora mediante una de las rutas de la red de VPC que se han indicado anteriormente en esta sección.
- Dirección IPv4 interna de una regla de reenvío utilizada por el reenvío de protocolo interno a la instancia receptora o al balanceador de carga de red de paso a través interno, donde la instancia receptora es un backend del balanceador de carga. Las direcciones IPv4 de las reglas de reenvío internas proceden del intervalo de direcciones IPv4 principal de una subred.
- Una dirección IPv6 interna del
/96
intervalo IPv6 de una regla de reenvío que usa el reenvío de protocolo interno a la instancia receptora o al balanceador de carga de red de paso a través interno en el que la instancia receptora es un backend del balanceador de carga. Las direcciones IPv6 de las reglas de reenvío internas proceden del intervalo de direcciones IPv6 internas de una subred. - Una dirección IPv6 externa del intervalo IPv6
/96
de una regla de reenvío que se usa para el reenvío de protocolos externos a la instancia receptora o al balanceador de carga de red de paso a través externo. La instancia receptora es un backend del balanceador de carga cuando el paquete entrante se enruta en la red de VPC mediante una de las rutas que se han indicado anteriormente en esta sección. Regla de reenvío externa Las direcciones IPv6 proceden del intervalo de direcciones IPv6 externas de una subred. - Una dirección IP dentro del intervalo de destino de una ruta estática personalizada que usa la instancia receptora como instancia de siguiente salto (
next-hop-instance
onext-hop-address
). - Una dirección IP dentro del intervalo de destino de una ruta estática personalizada que use un siguiente salto de balanceador de carga de red de paso a través interno (
next-hop-ilb
), si la instancia receptora es un backend de ese balanceador de carga.
Entrada a destinos fuera de una red de VPC
Google Cloud implementa los siguientes límites de ancho de banda para los paquetes entrantes que se envían a una instancia receptora mediante rutas externas a una red de VPC. Cuando se utiliza el balanceo de carga, los límites de ancho de banda se aplican individualmente a cada instancia receptora.
En el caso de las series de máquinas que no admiten varias NICs físicas, la restricción de ancho de banda de entrada aplicable se aplica de forma colectiva a todas las interfaces de red virtual (vNICs). El límite es el primero de los siguientes tipos que se encuentre:
- 1.800.000 paquetes por segundo
- 30 Gbps
En el caso de las series de máquinas que admiten varias NICs físicas, como A3, la restricción de ancho de banda de entrada aplicable se aplica individualmente a cada NIC física. El límite es el primero de los siguientes tipos que se encuentre:
- 1.800.000 paquetes por segundo por NIC física
- 30 Gbps por NIC física
Los destinos de los paquetes que se enrutan mediante rutas fuera de una red VPC incluyen los siguientes:
- Una dirección IPv4 externa asignada en una configuración de acceso NAT uno a uno en una de las interfaces de red (NICs) de la instancia receptora.
- Una dirección IPv6 externa del intervalo de direcciones IPv6
/96
asignado a una interfaz de red virtual de una instancia de recepción de doble pila o solo IPv6 cuando el paquete entrante se enruta mediante una ruta fuera de la red de VPC de la instancia de recepción. - Una dirección IPv4 externa de una regla de reenvío usada por el reenvío de protocolo externo a la instancia receptora o al balanceador de carga de red de paso a través externo en el que la instancia receptora es un backend del balanceador de carga.
- Una dirección IPv6 externa del intervalo IPv6
/96
de una regla de reenvío que se usa para el reenvío de protocolos externos a la instancia receptora o al balanceador de carga de red de paso a través externo. La instancia receptora debe ser un backend del balanceador de carga cuando el paquete entrante se enruta mediante una ruta fuera de una red VPC. - Respuestas entrantes establecidas procesadas por Cloud NAT.
Usar tramas gigantes para maximizar el ancho de banda de la red
Para recibir y enviar tramas jumbo, configura la red de VPC que usan tus instancias de proceso. Define la unidad de transmisión máxima (MTU) con un valor más alto, de hasta 8896.
Los valores de MTU más altos aumentan el tamaño de los paquetes y reducen la sobrecarga del encabezado de los paquetes, lo que incrementa el rendimiento de los datos de la carga útil.
Puedes usar tramas gigantes con la versión 1.3 o posterior del controlador gVNIC en instancias de VM o con el controlador IDPF en instancias de hardware desnudo. No todas las imágenes públicas de Google Cloud incluyen estos controladores. Para obtener más información sobre la compatibilidad de los sistemas operativos con los marcos jumbo, consulta la pestaña Funciones de red de la página Detalles del sistema operativo.
Si usas una imagen de SO que no es totalmente compatible con los jumbo frames, puedes instalar manualmente la versión 1.3.0 o posterior del controlador gVNIC. Google recomienda instalar la versión del controlador gVNIC marcada con Latest
para disfrutar de funciones adicionales y correcciones de errores. Puedes descargar los controladores de gVNIC desde GitHub.
Para actualizar manualmente la versión del controlador gVNIC en tu SO invitado, consulta Usar en sistemas operativos no compatibles.
Tramas gigantes y máquinas con GPU
En el caso de los tipos de máquina con GPU, usa los ajustes de MTU recomendados para los Jumbo Frames. Para obtener más información, consulta Ajustes de MTU recomendados para tramas Jumbo.
Recibir y transmitir colas
A cada NIC o vNIC de una instancia de computación se le asigna un número de colas de recepción y transmisión para procesar paquetes de la red.
- Cola de recepción (RX): cola para recibir paquetes. Cuando la NIC recibe un paquete de la red, selecciona el descriptor de un paquete entrante de la cola, lo procesa y entrega el paquete al SO invitado a través de una cola de paquetes conectada a un núcleo de vCPU mediante una interrupción. Si la cola RX está llena y no hay ningún búfer disponible para colocar un paquete, el paquete se descarta. Esto suele ocurrir si una aplicación está utilizando en exceso un núcleo de vCPU que también está asociado a la cola de paquetes seleccionada.
- Cola de transmisión (TX): cola para transmitir paquetes. Cuando el SO invitado envía un paquete, se asigna un descriptor y se coloca en la cola de transmisión. A continuación, la NIC procesa el descriptor y transmite el paquete.
Asignación de colas predeterminada
A menos que asignes explícitamente recuentos de colas a las NICs, puedes modelar el algoritmo que usa Google Cloud para asignar un número fijo de colas RX y TX por NIC de esta forma:
- Instancias Bare Metal
- En las instancias de hardware desnudo, solo hay una NIC, por lo que el número máximo de colas es 16.
- Instancias de máquina virtual que usan la interfaz de red gVNIC
En el caso de las instancias C4, para mejorar el rendimiento, las siguientes configuraciones usan un número fijo de colas:
- En el caso de las instancias Linux con 2 vCPUs, el número de colas es 1.
- En el caso de las instancias de Linux con 4 vCPUs, el número de colas es 2.
En el resto de las series de máquinas, el número de colas depende de si la serie de máquinas usa Titanium o no.
En el caso de las instancias de tercera generación (excepto M3) y posteriores que usan Titanium:
Divide el número de vCPUs entre el número de vNICs (
num_vcpus/num_vnics
) y descarta el resto.En el caso de las VMs de primera y segunda generación que no usan Titanium:
Divide el número de vCPUs entre el número de vNICs y, a continuación, divide el resultado entre 2 (
num_vcpus/num_vnics/2
). Descarta el resto.
Para terminar de calcular el número de elementos de la cola predeterminada, sigue estos pasos:
Si el número calculado es inferior a 1, asigna una cola a cada vNIC.
Determina si el número calculado es mayor que el número máximo de colas por vNIC, que es
16
. Si el número calculado es superior a16
, ignora el número calculado y asigna 16 colas a cada vNIC.
- Instancias de VM que usen la interfaz de red VirtIO o un controlador personalizado
Divide el número de vCPUs entre el número de vNICs y descarta el resto:
[number of vCPUs/number of vNICs]
.Si el número calculado es inferior a 1, asigna una cola a cada vNIC.
Determina si el número calculado es mayor que el número máximo de colas por vNIC, que es
32
. Si el número calculado es superior a32
, ignora el número calculado y asigna 32 colas a cada vNIC.
Ejemplos
En los siguientes ejemplos se muestra cómo calcular el número predeterminado de colas de una instancia de VM:
Si una instancia de VM usa VirtIO y tiene 16 vCPUs y 4 vNICs, el número calculado es
[16/4] = 4
. Google Cloud asigna cuatro colas a cada vNIC.Si una instancia de VM usa gVNIC y tiene 128 vCPUs y dos vNICs, el número calculado es
[128/2/2] = 32
. Google Cloud asigna a cada vNIC el número máximo de colas por vNIC posible. Google Cloudasigna16
colas por vNIC.
En los sistemas Linux, puedes usar ethtool
para configurar una NIC virtual con menos colas que el número de colas que Google Cloud asigna por NIC virtual.
Recuentos de colas al usar la interfaz de red dinámica
Si usa interfaces de red dinámicas con sus interfaces de red, los recuentos de colas no cambian. Una NIC dinámica no tiene sus propias colas de recepción y transmisión, sino que usa las mismas colas que la vNIC principal.
Asignación de colas personalizadas para instancias de máquina virtual
En lugar de la asignación de colas predeterminada, puede asignar un número de colas personalizado (total de RX y TX) a cada vNIC cuando cree una instancia de Compute mediante la API de Compute Engine.
El número de colas personalizadas que especifiques debe cumplir las siguientes reglas:
El número mínimo de colas que puedes asignar por vNIC es uno.
El número máximo de colas que puedes asignar a cada vNIC de una instancia de VM es el menor entre el número de vCPUs y el número máximo de colas por vNIC, en función del tipo de controlador:
- Si se usa virtIO
o un controlador personalizado, el número máximo de colas es
32
. - Con gVNIC, el número máximo de colas es
16
, excepto en los siguientes casos, en los que el número máximo de colas es 32:- Instancias A2 o G2
- Instancias de TPU
- Instancias C2, C2D, N2 o N2D con la red Tier_1 habilitada
En las siguientes configuraciones de VM confidencial, el número máximo de colas es
8
:- SEV de AMD en tipos de máquinas C2D y N2D
- AMD SEV-SNP en tipos de máquinas N2D
- Si se usa virtIO
o un controlador personalizado, el número máximo de colas es
Si asignas recuentos de colas personalizados a todas las NICs de la instancia de proceso, la suma de las asignaciones de recuento de colas debe ser menor o igual al número de vCPUs asignadas a la instancia.
Puedes suscribir en exceso el número de colas personalizadas de tus NICs virtuales. Es decir, puedes tener una suma de los recuentos de colas asignados a todas las NICs de tu instancia de VM que sea superior al número de vCPUs de tu instancia. Para sobreasignar el número de colas personalizadas, la instancia de VM debe cumplir las siguientes condiciones:
- Usa gVNIC como tipo de vNIC para todas las NICs configuradas en la instancia.
- Usa un tipo de máquina que admita redes de nivel 1.
- Tiene habilitada la red de nivel 1.
- Se ha especificado un recuento de colas personalizado para todas las NICs configuradas en la instancia.
Con la sobreasignación de colas, el número máximo de colas de la instancia de VM es 16 veces el número de NICs. Por lo tanto, si tienes 6 NICs configuradas para una instancia con 30 vCPUs, puedes configurar un máximo de (16 * 6) o 96 colas personalizadas para tu instancia.
Ejemplos
Si una instancia de VM tiene 8 vCPUs y 3 vNICs, el número máximo de colas de la instancia es el número de vCPUs, es decir, 8. Puedes asignar 1 cola a
nic0
, 4 colas anic1
y 3 colas anic2
. En este ejemplo, no puedes asignar 4 colas anic2
y mantener las otras dos asignaciones de colas de vNIC, ya que la suma de las colas asignadas no puede superar el número de vCPUs.Si tienes una máquina virtual N2 con 96 vCPUs y 2 vNICs, puedes asignar a ambas vNICs hasta 32 colas cada una cuando uses el controlador virtIO, o hasta 16 colas cada una cuando uses el controlador gVNIC. Si habilitas la red de nivel 1 en la VM N2, puedes asignar hasta 32 colas a cada vNIC. En este ejemplo, la suma de las colas asignadas siempre es menor o igual que el número de vCPUs.
También es posible asignar un número de colas personalizado solo a algunas NICs, lo que permite aGoogle Cloud asignar colas a las NICs restantes. El número de colas que puedes asignar por vNIC sigue sujeto a las reglas mencionadas anteriormente. Puedes modelar la viabilidad de tu configuración y, si es posible, el número de colas que Google Cloud asigna a las vNICs restantes con este proceso:
Calcula la suma de las colas de las vNICs mediante la asignación de colas personalizadas. Por ejemplo, en una VM con 20 vCPUs y 6 vNICs, supongamos que asignas
nic0
5 colas,nic1
6 colas ynic2
4 colas, y que dejas que Google Cloudasigne colas anic3
,nic4
ynic5
. En este ejemplo, la suma de las colas asignadas de forma personalizada es5+6+4 = 15
.Resta la suma de las colas asignadas de forma personalizada al número de vCPUs. Si la diferencia es inferior al número de vNICs restantes a los queGoogle Cloud debe asignar colas Google Cloud ,devuelve un error porque cada vNIC debe tener al menos una cola.
Siguiendo con el ejemplo de una VM que tiene 20 vCPUs y un total de
15
colas asignadas de forma personalizada, Google Cloud quedan20-15 = 5
colas para asignar a las vNICs restantes (nic3
,nic4
ynic5
).Divide la diferencia del paso anterior entre el número de vNICs restantes y descarta el resto:
⌊(number of vCPUs - sum of assigned queues)/(number of remaining vNICs)⌋
. Este cálculo siempre da como resultado un número entero (no una fracción) que es al menos igual a uno debido a la restricción explicada en el paso anterior. Google Cloud asigna a cada vNIC restante un número de colas que coincida con el número calculado, siempre que este no sea superior al número máximo de colas por vNIC. El número máximo de colas por vNIC depende del tipo de controlador:
- Si se usa virtIO o un controlador personalizado, si el número calculado de colas de cada vNIC restante es mayor que
32
, Google Cloud asigna32
colas a cada vNIC restante. - Si se usa gVNIC y el número calculado de colas de cada vNIC restante es superior al límite de
16
o32
(en función de la configuración de la VM), Google Cloud asigna16
colas a cada vNIC restante.
Configurar recuentos de colas personalizados
Para crear una instancia de proceso que use un número de colas personalizado para una o varias NICs o vNICs, sigue estos pasos.
En los siguientes ejemplos de código, la VM se crea con el tipo de interfaz de red definido como GVNIC
y el rendimiento de la red Tier_1 por VM habilitado. Puedes usar estos ejemplos de código para especificar el número máximo de colas y la sobreasignación de colas disponibles para los tipos de máquinas admitidos.
gcloud
- Si aún no tienes una red de VPC con una subred para cada interfaz de NIC virtual que quieras configurar, créalas.
- Usa el comando
gcloud compute instances create
para crear la instancia de proceso. Repite la marca--network-interface
para cada vNIC que quieras configurar en la instancia e incluye la opciónqueue-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
Haz los cambios siguientes:
INSTANCE_NAME
: un nombre para la nueva instancia de procesoZONE
: la zona en la que se creará la instanciaMACHINE_TYPE
: el tipo de máquina de la instancia. Para sobreasignar el número de colas, el tipo de máquina que especifiques debe admitir gVNIC y la red Tier_1.NETWORK_NAME
: el nombre de la red creada anteriormenteSUBNET_*
: el nombre de una de las subredes creadas anteriormenteQUEUE_SIZE
: número de colas de la vNIC, sujeto a las reglas descritas en la sección Asignación de colas personalizadas.
Terraform
- Si aún no tienes una red de VPC con una subred para cada interfaz de NIC virtual que quieras configurar, créalas.
Crea una instancia de proceso con recuentos de colas específicos para las vNICs mediante el recurso
google_compute_instance
. Repite el parámetro--network-interface
por cada vNIC que quieras configurar en la instancia de proceso e incluye el 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"" } }
Haz los cambios siguientes:
VM_NAME
: un nombre para la nueva instancia de procesoPROJECT_ID
: ID del proyecto en el que se va a crear la instancia. A menos que utilices una red de VPC compartida, el proyecto que especifiques debe ser el mismo en el que se crearon todas las subredes y redes.DEVICE_NAME
: nombre que se asociará al disco de arranque en el SO invitadoIMAGE_NAME
: el nombre de una imagen,por ejemplo,"projects/debian-cloud/global/images/debian-11-bullseye-v20231010"
.DISK_SIZE
: tamaño del disco de arranque en GiBDISK_TYPE
: el tipo de disco que se va a usar para el disco de arranque. Por ejemplo,pd-standard
.MACHINE_TYPE
: el tipo de máquina de la instancia. Para sobreasignar el número de colas, el tipo de máquina que especifiques debe admitir gVNIC y la red Tier_1.ZONE
: la zona en la que se creará la instanciaQUEUE_COUNT
: número de colas de la vNIC, sujeto a las reglas descritas en la sección Asignación de colas personalizadas.SUBNET_*
: el nombre de la subred a la que se conecta la interfaz de red
REST
- Si aún no tienes una red de VPC con una subred para cada interfaz de NIC virtual que quieras configurar, créalas.
Crea una instancia de Compute con recuentos de colas específicos para NICs mediante el método
instances.insert
. Repite la propiedadnetworkInterfaces
para configurar varias interfaces de red.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" } ], }
Haz los cambios siguientes:
PROJECT_ID
: ID del proyecto en el que se va a crear la instancia de procesoZONE
: zona en la que se creará la instancia de computaciónVM_NAME
: nombre de la nueva instancia de procesoMACHINE_TYPE
: tipo de máquina, predefinido o personalizado, de la nueva instancia de proceso. Para sobreasignar el número de colas, el tipo de máquina debe admitir gVNIC y la red Tier_1.SUBNET_*
: el nombre de la subred a la que se conecta la interfaz de redQUEUE_COUNT
: número de colas de la vNIC, sujeto a las reglas descritas en Asignación de colas personalizadas.
Asignaciones de colas y cambio del tipo de máquina
Las instancias de proceso se crean con una asignación de colas predeterminada o puedes asignar un número de colas personalizado a cada tarjeta de interfaz de red virtual (vNIC) al crear una instancia de proceso con la API de Compute Engine. Las asignaciones de colas de vNIC predeterminadas o personalizadas solo se definen al crear una instancia de proceso. Si tu instancia tiene vNICs que usan recuentos de colas predeterminados, puedes cambiar su tipo de máquina. Si el tipo de máquina al que vas a cambiar tiene un número diferente de vCPUs, se volverán a calcular los recuentos de colas predeterminados de tu instancia en función del nuevo tipo de máquina.
Si tu VM tiene vNICs que usan recuentos de colas personalizados que no son los predeterminados, puedes cambiar el tipo de máquina mediante la CLI de Google Cloud o la API de Compute Engine para actualizar las propiedades de la instancia. La conversión se realiza correctamente si la VM resultante admite el mismo número de colas por NIC virtual que la instancia original. En las VMs que usan la interfaz VirtIO-Net y tienen un recuento de colas personalizado superior a 16 por vNIC, no puedes cambiar el tipo de máquina a un tipo de máquina de tercera generación o posterior, ya que solo usan gVNIC. En su lugar, puedes migrar tu VM a un tipo de máquina de tercera generación o posterior siguiendo las instrucciones que se indican en Trasladar una carga de trabajo a una nueva instancia de computación.
Siguientes pasos
- Consulta más información sobre los tipos de máquinas.
- Más información sobre las instancias de máquina virtual
- Crea y pon en marcha una instancia de VM.
- Configura el rendimiento de red Tier_1 por VM para una instancia de computación.
- Completa la guía de inicio rápido Crea una instancia de máquina virtual de Linux en Compute Engine.
- Completa la guía de inicio rápido Crear una instancia de VM de Windows Server en Compute Engine.