Google Cloud incluye el ancho de banda por instancia de máquina virtual (VM), no por interfaz de red virtual (NIC) o dirección IP. El tipo de máquina de una VM define su tasa de salida máxima posible; sin embargo, solo puedes alcanzarla en situaciones específicas.
En esta página, se describen las expectativas que son útiles para planificar las implementaciones. Se clasifica el ancho de banda con dos dimensiones:
- Salida o entrada: Como se usa en esta página, la salida y la entrada siempre se generan desde la perspectiva de una VM de Google Cloud:
- Los paquetes enviados desde una VM de Google Cloud componen el tráfico de salida (saliente).
- Los paquetes enviados a una VM de Google Cloud componen el tráfico de entrada (entrante).
- Cómo se enruta el paquete: un paquete se puede enrutar desde una VM de envío o hacia una VM de recepción a través de rutas cuyos próximos saltos se encuentren dentro de una red de VPC o de rutas fuera de una red de VPC.
Ni las interfaces de red virtuales (vNIC) adicionales ni las direcciones IP adicionales por vNIC aumentan el ancho de banda de entrada o salida de una VM. Por ejemplo, una VM C3 con 22 CPU virtuales está limitada a un ancho de banda de salida total de 23 Gbps. Si configuras la VM C3 con dos vNIC, la VM aún está limitada a un ancho de banda de salida total de 23 Gbps, no a un ancho de banda de 23 Gbps por NIC.
Toda la información de esta página se aplica a las VMs de Compute Engine y a los productos que dependen de estas. Por ejemplo, un nodo de Google Kubernetes Engine es una VM de Compute Engine.
Resumen del ancho de banda
En la siguiente tabla, se ilustran las expectativas de ancho de banda según si un paquete se envía desde (salida) o si lo recibe una (entrada) VM, y el método de enrutamiento de paquetes.
salida
Expectativas del ancho de banda | |
---|---|
Enrutamiento dentro de una red de VPC |
|
Enrutamiento fuera de una red de VPC |
|
Entrada
Expectativas del ancho de banda | |
---|---|
Enrutamiento dentro de una red de VPC |
|
Enrutamiento fuera de una red de VPC |
|
Ancho de banda de salida
Google Cloud limita el ancho de banda saliente (salida) mediante tarifas máximas de salida por VM según el tipo de máquina de la VM que envía el paquete, y si se puede acceder al destino del paquete mediante rutas dentro de una red de VPC o rutas externas por cada red de VPC. El ancho de banda saliente incluye los paquetes que emiten todas las NIC de la VM y los datos transferidos a todos los discos persistentes conectados a la VM.
Ancho de banda de salida máximo por VM
Por lo general, el ancho de banda de salida es de 2 Gbps por CPU virtual, pero existen algunas diferencias y excepciones, según la serie de máquinas. En la siguiente tabla, se muestra el rango de límites máximos para el ancho de banda de salida en el tráfico enrutado dentro de una red de VPC solo para el nivel de red estándar, no para el rendimiento de herramientas de redes de nivel de VM 1.
Series de máquinas | El límite máximo de salida por VM más bajo sin las herramientas de redes de Tier_1 | Límite máximo de salida por VM sin redes de Tier_1 |
---|---|---|
E2 | 1 Gbps | 16 Gbps |
C3 | 23 Gbps | 100 Gbps |
C3D | 20 Gbps | 100 Gbps |
T2D | 10 Gbps | 32 Gbps |
N2, C2, N2D y C2D | 10 Gbps | 32 Gbps |
N4 | 10 Gbps | 50 Gbps |
H3 | No disponible | 200 Gbps |
Z3 | 23 Gbps | 100 Gbps |
N1 (excluye VMs con 1 CPU virtual) | 10 Gbps | 32 Gbps en la plataforma de CPU Intel Skylake 16 Gbps en plataformas de CPU anteriores a Intel Skylake |
Tipos de máquina N1 con 1 CPU virtual, f1-micro y g1-small | 2 Gbps | 2 Gbps |
A3, A2 y G2 | No disponible | Según el tipo de GPU |
Puedes encontrar el ancho de banda de salida máximo por VM para cada tipo de máquina que aparece en su página específica de la familia de máquinas:
- Familia de máquinas de uso general
- Familia de máquinas optimizada para almacenamiento
- Familia de máquinas optimizada para procesamiento
- Familia de máquinas con optimización de memoria
- Familia de máquinas con optimización de acelerador
El ancho de banda de salida máximo por VM no es una garantía. El ancho de banda de salida real puede reducirse según factores como los de la siguiente lista no exhaustiva:
- Controlador Ethernet invitado: gVNIC ofrece un mejor rendimiento que la interfaz de red de VirtIO
- Tamaño del paquete
- Sobrecarga del protocolo
- La cantidad de flujos
- la configuración del controlador de Ethernet del SO invitado de la VM, como la descarga de la suma de verificación y la descarga de segmentación de TCP (TSO)
- Congestión en la red
- En una situación en la que los discos persistentes compiten con otro tráfico de salida de red, el 60% del ancho de banda máximo de la red se otorga a las operaciones de escritura de discos persistentes, lo que deja un 40% para otro tráfico de salida de red. Para obtener más detalles, consulta Factores que afectan el rendimiento del disco en la documentación de Persistent Disk.
Para obtener el mayor ancho de banda de salida máximo posible por VM, sigue estos pasos:
- Habilita el rendimiento de las herramientas de redes por Tier_1 de VM con tipos de máquinas optimizados para procesamiento y de uso general 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. Las MTU más grandes pueden reducir la sobrecarga del encabezado del paquete y aumentar la capacidad de procesamiento de datos de la carga útil.
Salida a destinos enrutables dentro de una red de VPC
Desde la perspectiva de una VM 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 con estas reglas:
- Ancho de banda de salida máximo por VM: Es el ancho de banda de salida máximo por VM que se describe en la sección Ancho de banda de salida máximo por VM.
- Ancho de banda de salida interregional por proyecto: Si una VM emisora y un destino interno o su siguiente salto están en regiones diferentes, Google Cloud aplica un límite de ancho de banda de salida interregional máximo. Es poco probable que la mayoría de los clientes alcancen este límite. Para responder preguntas sobre este límite, presenta un caso de asistencia.
- Límites de Cloud VPN y Cloud Interconnect: Cuando se envía tráfico desde una VM a un destino de dirección IP interna enrutable por un túnel de Cloud VPN o un adjunto de VLAN de Cloud Interconnect, el ancho de banda de salida es limitado por:
- Frecuencia de paquetes máxima y ancho de banda por túnel de Cloud VPN
- Frecuencia de paquetes máxima y ancho de banda por adjunto de VLAN
- Para usar por completo el ancho de banda de varios túneles de Cloud VPN o de adjuntos de VLAN de Cloud Interconnect con el enrutamiento de ECMP, debes usar varias conexiones TCP (tuplas de 5 únicas).
Los destinos que se pueden enrutar dentro de una red de VPC incluyen todos los destinos siguientes, cada uno de los cuales es accesible desde la perspectiva de la VM de envío mediante una ruta cuyo siguiente salto no es la puerta de enlace de Internet predeterminada:
- Direcciones IPv4 internas regionales en rangos de direcciones principales de IPv4 y subredes secundarias de subred, incluidos los rangos de direcciones IPv4 privadas y públicas de uso privado, que usan estos recursos de destino:
- La dirección IPv4 interna principal de la interfaz de red (NIC) de una VM receptora. (Cuando una VM emisora se conecta a la NIC de otra VM)externa Dirección IPv4, los paquetes se enrutan mediante una puerta de enlace de Internet predeterminada de próximo salto, por lo que la Salida a destinos fuera de una red de VPC se aplica en su lugar).
- Una dirección IPv4 interna en un rango de alias de IP de la NIC de una VM receptora.
- Una dirección IPv4 interna de una regla de reenvío interna para el reenvío de protocolos o un balanceador de cargas de red de transferencia interno.
- Direcciones IPv4 internas globales para estos recursos de destino:
- Rangos de direcciones IPv6 internos de subred que usan estos recursos de destino:
- Una dirección IPv6 del rango de direcciones IPv6
/96
asignado a una NIC de pila doble que recibe la VM. - Una dirección IPv6 del rango de direcciones IPv6
/96
de una regla de reenvío interno para el reenvío de protocolos o un balanceador de cargas de red de paso interno.
- Una dirección IPv6 del rango de direcciones IPv6
- Rangos de direcciones IPv6 externos que usan estos recursos de destino cuando los paquetes se enrutan a través de rutas de subred o rutas de subred de intercambio de tráfico dentro de la red de VPC o mediante rutas personalizadas dentro de rutas Red de VPC que no usa el próximo salto de puerta de enlace de Internet predeterminado:
- Una dirección IPv6 del rango de direcciones IPv6
/96
asignado a una NIC de pila doble que recibe la VM. - Una dirección IPv6 del rango de direcciones IPv6
/96
de una regla de reenvío externa para un reenvío de protocolos o un balanceador de cargas de red de paso externo.
- Una dirección IPv6 del rango de direcciones IPv6
- Otros destinos a los que se puede acceder a través de las siguientes rutas de red de VPC:
- Rutas dinámicas
- Rutas estáticas excepto las que usan un próximo salto de puerta de enlace de Internet predeterminado
- Rutas personalizadas de intercambio de tráfico
En la siguiente lista, se clasifica el tráfico desde el envío de VMs hacia destinos internos, desde el ancho de banda más alto posible hasta el más bajo:
- Entre VM en la misma zona
- Entre VM en diferentes zonas de la misma región
- Entre VMs en diferentes regiones
- Desde una VM a las APIs y los servicios de Google a través del Acceso privado a Google o el acceso a las APIs de Google desde una dirección IP externa de una VM. Esto incluye los extremos de Private Service Connect para las APIs de Google.
Salida a destinos fuera de una red de VPC
Desde la perspectiva de una VM de envío y para las direcciones IP de destino fuera de una red de VPC, Google Cloud limita el tráfico saliente a cualquiera de las siguientes tasas que se alcance primero:
Ancho de banda de salida por VM: El ancho de banda máximo de todas las conexiones desde una VM hacia destinos fuera de una red de VPC es el Ancho de banda de salida máximo por VM menor y una de estas tasas:
- 25 Gbps, si las herramientas de redes de Tier_1 están habilitadas
- 7 Gbps, si las herramientas de redes de Tier_1 no están habilitadas
- 1 Gbps para VM H3
- 7 Gbps por NIC físico para las series de máquinas que admiten varias NIC físicas, como la A3.
Por ejemplo, aunque una instancia
n2-standard-16
tiene un ancho de banda de salida máximo por VM de 32 Gbps, el ancho de banda de salida por VM de una instancian2-standard-16
a destinos externos es de 25 Gbps o 7 Gbps, según si las Herramientas de redes de Tier_1 están habilitadas.Tasa de salida máxima por flujo: El ancho de banda máximo de cada conexión única de 5 tuplas, desde una VM hasta un destino fuera de una red de VPC, es 3 Gbps, excepto en H3, donde es de 1 Gbps.
Ancho de banda de salida de Internet por proyecto: se define el ancho de banda máximo de todas las conexiones desde las VMs en cada región de un proyecto a destinos fuera de una red de VPC según las cuotas de ancho de banda de salida de Internet del proyecto.
Los destinos fuera de una red de VPC incluyen todos los siguientes destinos, cada uno de los cuales es accesible por una ruta en la red de VPC de la VM emisora, cuyo próximo salto es la puerta de enlace de Internet predeterminada:
- Direcciones IPv4 e IPv6 externas globales para balanceadores de cargas de red de proxy y de aplicaciones externos
- Direcciones IPv4 externas regionales para los recursos de Google Cloud, incluidas las direcciones IPv4 externas de la NIC de la VM, las direcciones IPv4 externas para el reenvío de protocolos externos, los balanceadores de cargas de red de traspaso externos y los paquetes de respuesta a las puertas de enlace de Cloud NAT.
- Direcciones IPv6 externas regionales en subredes de doble pila con Rangos de direcciones IPv6 externos que usan las direcciones IPv6 externas de VM de pila doble, el reenvío de protocolos externos y los balanceadores de cargas de red de traspaso externos, siempre y cuando la subred esté ubicada en una red de VPC independiente que no intercambia tráfico y la dirección IPv6 de destino sea accesible al rango a través de una ruta en la red de VPC de la VM emisora cuyo próximo saltosea la puerta de enlace de Internet predeterminada. Si una subred de doble pila con un rango de direcciones IPv6 externo se encuentra en la misma red de VPC o en una red de VPC con intercambio de tráfico, consulta Salida a destinos enrutables dentro de una red de VPC.
- Otros destinos externos a los que se puede acceder mediante una ruta estática en la red de VPC de la VM de envío siempre que el próximo salto para la ruta sea la puerta de enlace de Internet predeterminada.
Para obtener más detalles sobre qué recursos de Google Cloud usan qué tipos de direcciones IP externas, consulta Direcciones IP externas.
Ancho de banda de entrada
Google Cloud controla el ancho de banda entrante (de entrada) según la forma en que el paquete entrante se enruta a una VM receptora.
Entrada a destinos enrutables dentro de una red de VPC
Una VM receptora puede manejar todos los paquetes entrantes que su tipo de máquina, sistema operativo y otras condiciones de red permiten. Google Cloud no implementa ninguna restricción de ancho de banda intencional en los paquetes entrantes entregados a una VM si el paquete entrante se entrega mediante rutas dentro de una red de VPC:
- Rutas de subred en la red de VPC de la VM receptora
- Rutas de subred de intercambio de tráfico en una red de VPC con intercambio de tráfico
- Rutas en otra red cuyos próximos saltos son túneles de Cloud VPN, adjuntos de Cloud Interconnect (VLAN) o VMs de dispositivo de router ubicados en la red de VPC de la VM de recepción
Los destinos de los paquetes enrutados dentro de una red de VPC incluyen lo siguiente:
- La dirección IPv4 interna principal de la interfaz de red (NIC) de la VM receptora. Las direcciones IPv4 internas principales son direcciones IPv4 internas regionales que provienen de un rango de direcciones IPv4 principal de una subred.
- Una dirección IPv4 interna de un rango de alias de IP de la NIC de la VM receptora. Los rangos de IP de alias pueden provenir de un rango de direcciones IPv4 principal de una subred o de uno de los rangos de direcciones IPv4 secundarios.
- Una dirección IPv6 del rango de direcciones IPv6
/96
asignado a una NIC de pila doble que recibe la VM. Los rangos de IPv6 de las VMs pueden provenir de estos rangos de IPv6 de subredes:- Un rango de direcciones IPv6 internas.
- Un rango de direcciones IPv6 externas cuando el paquete entrante se enruta de forma interna a la VM receptora mediante una de las rutas de red de VPC que se mencionaron antes en esta sección.
- Una dirección IPv4 interna de una regla de reenvío que se usa en el reenvío de protocolos internos a la VM de recepción o en el balanceador de cargas de red interno en el que la VM de recepción es un backend del balanceador de cargas. Las direcciones IPv4 de la regla de reenvío interno provienen del rango de direcciones IPv4 principal de una subred.
- Una dirección IPv6 interna del rango
/96
IPv6 de una regla de reenvío que el reenvío de protocolos interno usa a la VM de destino o el balanceador de cargas de red de transferencia interno en el que la VM de recepción es un backend del balanceador de cargas. Las direcciones IPv6 de la regla de reenvío interno provienen del rango de direcciones IPv6 interno de una subred. - Una dirección IPv6 externa del rango IPv6
/96
de una regla de reenvío que el reenvío de protocolos externo usa con la VM receptora o el balanceador de cargas de red de transferencia externo, en el que la VM receptora es un backend del balanceador de cargas cuando el paquete entrante se enruta dentro de la red de VPC mediante una de las rutas que se mencionaron antes en esta sección. Las direcciones IPv6 de las regla de reenvío externas provienen del rango de direcciones IPv6 externo de una subred. - Una dirección IP dentro del rango de destino de una ruta estática personalizada que usa la VM receptora como una VM de próximo salto (
next-hop-instance
onext-hop-address
) - Una dirección IP dentro del rango de destino de una ruta estática personalizada mediante un próximo salto de balanceador de cargas de red de transferencia interno (
next-hop-ilb
), si la VM es un backend para ese balanceador de cargas
Entrada a destinos fuera de una red de VPC
Google Cloud implementa las siguientes restricciones de ancho de banda para los paquetes entrantes que se entregaron a una VM receptora mediante rutas fuera de una red de VPC. Cuando se involucra el balanceo de cargas, los límites del ancho de banda se aplican de forma individual a cada VM receptora.
Para las series de máquinas que no admiten varias NICs físicas, la restricción de ancho de banda entrante aplicable se aplica de forma colectiva a todas las NICs virtuales. El límite es la primera de las siguientes tasas que se alcance:
- 1,800,000 paquetes por segundo
- 30 Gbps
Para las series de máquinas que admiten varias NICs físicas, como A3, la restricción de ancho de banda entrante aplicable se aplica de forma individual a cada NIC física. El límite es la primera de las siguientes tasas que se alcance:
- 1,800,000 pps (paquetes por segundo) por NIC físico
- 30 Gbps por NIC físico
Los destinos de los paquetes que se enrutan mediante rutas fuera de una red de VPC incluyen lo siguiente:
- Una dirección IPv4 externa asignada en una configuración de acceso de NAT uno a uno en una de las interfaces de red (NIC) de VM receptoras.
- Una dirección IPv6 externa del rango de direcciones IPv6
/96
asignado a una NIC de una VM receptora de pila doble cuando el paquete entrante se enruta mediante una ruta fuera de la red de VPC de la VM receptora. - Una dirección IPv4 externa de una regla de reenvío que usa el reenvío de protocolos externos a la VM de recepción o el balanceador de cargas de red de transferencia externo en el que la VM receptora es un backend del balanceador de cargas.
- Una dirección IPv6 externa del rango IPv6
/96
de una regla de reenvío que el reenvío de protocolos externo usa con la VM receptora o el balanceador de cargas de red de transferencia externo, en el que la VM receptora es un backend del balanceador de cargas cuando el paquete entrante se enruta a través de una ruta fuera de una red de VPC. - Las respuestas entrantes establecidas que procesa Cloud NAT
Marcos jumbo
Para recibir y enviar marcos jumbo, configura la red de VPC que usan tus VMs. Establece la unidad de transmisión máxima (MTU) en un valor mayor, hasta 8896.
Los valores de MTU más altos aumentan el tamaño del paquete y reducen la sobrecarga del encabezado del paquete, lo que aumenta la capacidad de procesamiento de los datos de carga útil.
Para usar marcos jumbo con el controlador gVNIC, debes usar la versión 1.3 o posterior del controlador. No todas las imágenes públicas de Google Cloud incluyen esta versión del controlador. Para obtener más información sobre la compatibilidad del sistema operativo para los marcos jumbo, consulta la pestaña Funciones de herramientas de redes en la página Detalles del sistema operativo. Las versiones con imágenes que indican la compatibilidad total con los marcos jumbo, incluyen el controlador de gVNIC actualizado, incluso si el SO invitado muestra la versión de controlador gve como 1.0.0
.
Si usas una imagen de SO que no tiene compatibilidad total con los marcos jumbo, puedes instalar de forma manual la versión del controlador de gVNIC v1.3.0 o una posterior. Google recomienda instalar la versión del controlador gVNIC marcada como Latest
para beneficiarse de funciones adicionales y correcciones de errores. Puedes descargar los controladores de gVNIC desde GitHub.
Para actualizar de forma manual la versión del controlador gVNIC en tu SO invitado, consulta Uso en sistemas operativos no compatibles.
Recibe y transmite colas
A cada NIC de VM se le asigna una cantidad de colas de recepción y transmisión para procesar paquetes de la red.
- Cola de recepción (RX): Cola para recibir paquetes. Cuando el vNIC recibe un paquete de la red, elige 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 adjunta a una CPU virtual. central mediante una interrupción. Si la cola de RX está llena y no hay un búfer disponible para colocar un paquete, el paquete se descarta. Por lo general, esto puede suceder si una aplicación usa en exceso un núcleo de CPU virtual que también está conectado a la cola de paquetes elegida.
- 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. Luego, la NIC procesa el descriptor y transmite el paquete.
Asignación de colas predeterminada
A menos que asignes recuentos de colas para NIC de forma explícita, puedes modelar el algoritmo que usa Google Cloud para asignar una cantidad fija de colas de RX y TX por NIC de esta manera:
Usa uno de los siguientes métodos, según el tipo de interfaz de red:
- VirtIO: Divide la cantidad de CPUs virtuales por la cantidad de NICs y descarta el resto: [
[number of vCPUs/number of NICs]
]. - gVNIC: Divide la cantidad de CPUs virtuales por la cantidad de NICs y, luego, divide el resultado por 2 y descarta el resto: [
[number of vCPUs/number of NICs/2]
].
Este cálculo siempre da como resultado un número entero (no una fracción).
- VirtIO: Divide la cantidad de CPUs virtuales por la cantidad de NICs y descarta el resto: [
Si el número calculado es menor que 1, asigna a cada vNIC una cola.
Determina si el número calculado es mayor que el número máximo de colas por NIC. El número máximo de colas por cada NIC depende del tipo de controlador:
En los siguientes ejemplos, se muestra cómo calcular la cantidad predeterminada de colas:
Si una VM usa VirtIO y tiene 16 CPU virtuales y 4 NIC, el número calculado es
[16/4] = 4
. Google Cloud asigna cuatro colas a cada vNIC.Si una VM usa gVNIC y tiene 128 CPU virtuales y dos NICs, el número calculado es
[128/2/2] = 32
. Google Cloud asigna a cada vNIC la cantidad máxima de colas posible por NIC. Google Cloud asigna16
colas por vNIC.
En los sistemas Linux, puedes usar ethtool
para configurar una NIC con menos colas que la cantidad de colas que asigna Google Cloud por NIC.
Asignación de colas personalizada
En lugar de la asignación de cola predeterminada, puedes asignar un recuento de colas personalizado (total de RX y TX) a cada NIC cuando crees una VM nueva mediante la API de Compute Engine.
La cantidad de colas personalizadas que especifiques debe cumplir con las siguientes reglas:
El recuento mínimo de colas que puedes asignar por NIC es de uno.
El recuento máximo de colas que puedes asignar a cada vNIC es el menor entre el recuento de CPU virtuales o el recuento máximo de colas por vNIC, según el tipo de controlador:
Si asignas recuentos de colas personalizadas a todas las NICs de la VM, la suma de las asignaciones de recuento de colas debe ser menor o igual que la cantidad de CPUs virtuales asignada a la instancia de VM.
Puedes exceder la suscripción del recuento de colas personalizadas para tus NIC. En otras palabras, puedes tener una suma de recuentos de colas asignados a todas las NIC de tu VM, que sea mayor que la cantidad de CPU virtuales para tu VM. Para exceder la suscripción del recuento de colas personalizadas, debes cumplir con las siguientes condiciones:
- Usar gVNIC como el tipo de vNIC para todas las NIC configuradas para la VM.
- Que tu VM use un tipo de máquina de las series de máquinas N2, N2D, C2 y C2D.
- Haber habilitado las redes Tier_1 para la VM.
- Haber especificado un recuento de colas personalizado para todas las NIC configuradas para la VM.
Con el exceso de suscripciones a una cola, el recuento máximo de colas para la VM es 16 veces la cantidad de NIC. Por lo tanto, si tienes 6 NIC configuradas para una VM con 30 CPU virtuales, puedes configurar un máximo de (16 * 6) o 96 colas personalizadas para tu VM.
Ejemplos
Si una VM tiene 8 CPUs virtuales y 3 NICs, el recuento máximo de colas para la VM es la cantidad de CPUs virtuales u 8. Puedes asignar 1 cola a
nic0
, 4 colas anic1
y 3 colas anic2
. En este ejemplo, no puedes asignar 4 colas anic2
mientras se mantienen las otras dos asignaciones de cola de NIC porque la suma de colas asignadas no puede exceder la cantidad de CPU virtuales (8).Si una VM tiene 96 CPU virtuales y 2 NIC, puedes asignar a cada NIC hasta 32 colas si usas el controlador virtIO, o hasta 16 colas a cada una si usas el controlador gVNIC. En este ejemplo, la suma de colas asignadas siempre es menor que la cantidad de CPU virtuales.
También es posible asignar un recuento de colas personalizado para solo algunas NIC, lo que permite que Google Cloud asigne colas a las NIC restantes. La cantidad de colas que puedes asignar por vNIC sigue sujeta a las reglas que se mencionaron antes. Puedes modelar la viabilidad de tu configuración y, si la configuración es posible, la cantidad de colas que Google Cloud asigna a las NIC restantes mediante este proceso:
Calcula la suma de colas de las NIC mediante la asignación de colas personalizadas. Para una VM de ejemplo con 20 CPU virtuales y 6 NIC, supongamos que asignas 5 colas
nic0
, 6 colasnic1
, 4 colasnic2
y dejas que Google Cloud asigne colas paranic3
,nic4
ynic5
. En este ejemplo, la suma de colas asignadas de forma personalizada es5+6+4 = 15
.Resta la suma de colas asignadas de forma personalizada de la cantidad de CPU virtuales. Si la diferencia no es, al menos, igual a la cantidad de NIC restantes para las que Google Cloud debe asignar colas, Google Cloud mostrará un error. Continúa con la VM de ejemplo de 20 CPU virtuales y una suma de
15
colas asignadas de forma personalizada, Google Cloud tiene20-15 = 5
colas para asignar a las NIC restantes (nic3
,nic4
ynic5
).Divide la diferencia del paso anterior por la cantidad de NIC restantes y descarta el resto:
⌊(number of vCPUs - sum of assigned queues)/(number of remaining NICs)⌋
. 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 NIC restante un recuento de colas que coincide con el número calculado, siempre que el número calculado no sea mayor que el número máximo de colas por NIC. El número máximo de colas por cada NIC depende del tipo de controlador:- Usando virtIO o un controlador personalizado, si la cantidad calculada de colas para cada NIC restante es mayor que
32
, Google Cloud asigna las colas32
de NIC restantes a cada una. - En gVNIC, si la cantidad calculada de colas para cada NIC restante es mayor que
16
, Google Cloud asigna cada cola16
de NIC restante.
- Usando virtIO o un controlador personalizado, si la cantidad calculada de colas para cada NIC restante es mayor que
Configura recuentos de colas personalizados
Para crear una VM que use un recuento de colas personalizado para uno o más vNIC, completa los siguientes pasos.
gcloud
- Si aún no tienes una red de VPC con una subred para cada interfaz de vNIC que planeas configurar, créalas.
- Usa el
comando
gcloud compute instances create
para crear la VM. Repite la marca--network-interface
en cada vNIC que desees configurar para la VM y, luego, incluye la opciónqueue-count
.
gcloud compute instances create VM_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
Reemplaza lo siguiente:
VM_NAME
: un nombre para la VM nuevaZONE
: Es la zona en la que se creará la VM.MACHINE_TYPE
: el tipo de máquina de la VM. El tipo de máquina que especifiques debe ser compatible con las redes gVNIC y Tier_1.NETWORK_NAME
: el nombre de la red que se creó antes.SUBNET_*
: el nombre de una de las subredes creadas antesQUEUE_SIZE
: la cantidad de colas para vNIC, sujeta a las reglas que se analizan en Asignación de colas personalizada.
Terraform
- Si aún no tienes una red de VPC con una subred para cada interfaz de vNIC que planeas configurar, créalas.
Crea una VM con recuentos de colas específicos para las vNIC a través del recurso
google_compute_instance
. Repite el parámetro--network-interface
en cada vNIC que desees configurar para la VM y, luego, 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"" } }
Reemplaza lo siguiente:
VM_NAME
: un nombre para la VM nuevaPROJECT_ID
: ID del proyecto en el que se creará la VM A menos que uses una red de VPC compartida, el proyecto que especifiques debe ser el mismo en el que se crearon todas las subredes y las redes.DEVICE_NAME
: el nombre que se asociará al disco de arranque en el SO invitado.IMAGE_NAME
: el nombre de una imagen, por ejemplo,"projects/debian-cloud/global/images/debian-11-bullseye-v20231010"
.DISK_SIZE
: el tamaño del disco de arranque, expresado en GiBDISK_TYPE
: el tipo de disco que se usará para el disco de arranque, por ejemplo,pd-standard
MACHINE_TYPE
: el tipo de máquina de la VM. El tipo de máquina que especifiques debe ser compatible con las redes gVNIC y Tier_1.ZONE
: Es la zona en la que se creará la VM.QUEUE_COUNT
: la cantidad de colas para la vNIC, sujeta a las reglas que se analizan en Asignación de colas personalizada.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 vNIC que planeas configurar, créalas.
Crea una VM con recuentos de colas específicos para las NIC a través del 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" } ], }
Reemplaza lo siguiente:
PROJECT_ID
: ID del proyecto en el que se creará la VMZONE
: Zona en la que se creará la VMVM_NAME
: Nombre de la VM nuevaMACHINE_TYPE
: Es el tipo de máquina, predefinido o personalizado de la VM nueva.SUBNET_*
: el nombre de la subred a la que se conecta la interfaz de redQUEUE_COUNT
: la cantidad de colas para vNIC, sujeta a las reglas que se analizan en Asignación de colas personalizada.
Asignaciones de cola y cambio del tipo de máquina
Las VMs se crean con una asignación de cola predeterminada, o puedes asignar un recuento de colas personalizado a cada tarjeta de interfaz de red virtual (vNIC) cuando creas una VM nueva mediante la API de Compute Engine. Las asignaciones de colas de vNIC predeterminadas o personalizadas solo se establecen cuando creas una VM. Si la VM tiene vNICs que usan recuentos de colas predeterminados, puedes cambiar su tipo de máquina. Si el tipo de máquina al que deseas cambiar tiene una cantidad diferente de CPU virtuales, los recuentos de colas predeterminados de la VM se vuelven a calcular en función del tipo de máquina nuevo.
Si tu VM tiene vNICs que usan recuentos de colas personalizados y no predeterminados, puedes cambiar el tipo de máquina mediante Google Cloud CLI o la API de Compute Engine para actualizar las propiedades de la instancia. La conversión se realiza de forma correcta si la VM resultante admite el mismo recuento de colas por vNIC que la VM original. Para las VMs que usan la interfaz de 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, que solo usa gVNIC. En su lugar, puedes migrar tu VM a un tipo de máquina de tercera generación si sigues las instrucciones en Migra tu carga de trabajo de una VM existente a una nueva.
¿Qué sigue?
- Tipos de máquinas
- Instancias de máquina virtual
- Crea y, luego, inicia una instancia de VM
- Configura el rendimiento de red Tier_1 por VM
- Guía de inicio rápido sobre cómo usar una VM de Linux
- Guía de inicio rápido sobre cómo usar una VM de Windows