En esta página, se proporciona orientación para configurar tu entorno de Lustre administrado de Google Cloud y obtener el mejor rendimiento.
Especificaciones de rendimiento
Los siguientes números de rendimiento son valores máximos aproximados.
IOPS
La cantidad máxima de IOPS se ajusta de forma lineal por TiB de capacidad de instancia aprovisionada.
| Nivel de capacidad de procesamiento | IOPS de lectura (por TiB) | IOPS de escritura (por TiB) |
|---|---|---|
125 MBps per TiB |
725 | 700 |
250 MBps per TiB |
1,450 | 1,400 |
500 MBps per TiB |
2,900 | 2,800 |
1000 MBps per TiB |
5,800 | 5,600 |
Operaciones con metadatos
Aumento máximo de las operaciones de metadatos en pasos por cada 72 GB/s de capacidad de procesamiento aprovisionada.
| Estadísticas de archivos | Creación de archivos | Eliminaciones de archivos | |
|---|---|---|---|
| Por cada 72 GBps | 410,000 por segundo | 115,000 por segundo | 95,000 por segundo |
Rendimiento después de aumentar la capacidad
Aumentar la capacidad de almacenamiento de una instancia existente incrementa su capacidad de procesamiento y sus IOPS máximas, y posiblemente su rendimiento de metadatos.
El rendimiento de la capacidad de procesamiento de lectura mejora gradualmente a medida que se escriben y redistribuyen datos nuevos en el almacenamiento adicional. El rendimiento de la capacidad de procesamiento de escritura aumenta de inmediato.
Unidad de transmisión máxima (MTU) de la red de VPC
Cuando crees tu red de VPC, establecer el valor de mtu (unidad de transmisión máxima o el tamaño del paquete IP más grande que se puede transmitir en esta red) en el valor máximo permitido de 8896 mejora el rendimiento hasta en un 10% en comparación con el valor predeterminado de 1460 bytes.
Puedes ver el valor de MTU actual de tu red con el siguiente comando:
gcloud compute networks describe NETWORK_NAME --format="value(mtu)"
El valor de MTU de una red se puede actualizar después de que se crea la red, pero hay consideraciones importantes. Consulta Cambia la MTU de una red para obtener más detalles.
Tipos de máquina de Compute Engine
La capacidad de procesamiento de la red puede verse afectada por el tipo de máquina que elijas. En general, para obtener la mejor capacidad de procesamiento, haz lo siguiente:
- Aumentar el número de CPU virtuales Por lo general, el ancho de banda de salida máximo por instancia es de 2 Gbps por CPU virtual, hasta el máximo del tipo de máquina.
- Selecciona una serie de máquinas que admita límites de entrada y salida más altos. Por ejemplo, las instancias C2 con redes de nivel 1 admiten un ancho de banda de salida de hasta 100 Gbps. Las instancias C3 con redes de nivel 1 admiten hasta 200 Gbps.
- Habilita el rendimiento de redes Tier_1 por VM con tipos de máquinas más grandes.
- Usa la NIC virtual de Google (gVNIC). La gVNIC es la única opción para los tipos de máquinas de la generación 3 y posteriores. Se requiere gVNIC cuando se usan redes Tier_1.
Para obtener información detallada, consulta Ancho de banda de red.
Configuración de varias NIC
Con la capacidad integrada de múltiples carriles de Lustre, los clientes pueden segmentar el tráfico de red en varias tarjetas de interfaz de red (varias NIC). Esto agrega ancho de banda para saturar instancias de Managed Lustre de alta capacidad.
Para configurar varias NIC, debes hacer lo siguiente:
- Selecciona un tipo de máquina con varias NIC físicas.
- Crea una subred para cada NIC y asigna cada NIC a su subred.
- Sigue los pasos para varias NIC cuando te conectes desde Compute Engine o GKE.
Verifica el balanceo del tráfico
Una vez que hayas configurado varias NIC, verifica que los datos se balanceen correctamente.
Compute Engine
Verifica el balanceo de datos directamente en la VM supervisando las interfaces de red configuradas (por ejemplo, eth0 y eth1) con nload mientras generas tráfico hacia el backend de Managed Lustre:
nload -m eth0 eth1
En una configuración multi-NIC exitosa, las tasas de bits salientes deberían ser aproximadamente equivalentes en todas las interfaces configuradas.
GKE
Para confirmar que el tráfico de red de tu carga de trabajo se balancea en varias NIC, implementa un Pod de depurador de red temporal en el nodo en el que se programa tu carga de trabajo:
Identifica el nodo en el que se programó tu carga de trabajo:
kubectl get pod POD_NAME -o wideReemplaza POD_NAME por el nombre del Pod. En el resultado del comando, anota el nombre en la columna
NODE.Inicia el depurador de red en ese nodo:
kubectl run multi-nic-debug --rm -i --tty --image=nicolaka/netshoot \ --overrides='{"spec": {"hostNetwork": true, "nodeSelector": {"kubernetes.io/hostname": "NODE_NAME"}, "tolerations": [{"key": "nvidia.com/gpu", "operator": "Exists", "effect": "NoSchedule"}]}}' \ -- /bin/bash -c "apk update && apk add nload && nload -m eth0 eth1"Reemplaza NODE_NAME por el nombre del nodo del paso anterior.
En el resultado, analiza las tasas de bits de la columna Saliente para
eth0yeth1. Si la configuración se realiza de forma correcta, las tasas de bits son aproximadamente equivalentes. El resultado es similar a lo siguiente:Device eth0 [10.1.0.50] (1/2): ========================================================================== Incoming: Outgoing: Curr: 1.63 MBit/s Curr: 1.46 GBit/s Avg: 1.60 MBit/s Avg: 1.44 GBit/s Min: 1.40 MBit/s Min: 1.25 GBit/s Max: 1.64 MBit/s Max: 1.47 GBit/s Ttl: 590.94 GByte Ttl: 405.19 GByte Device eth1 [172.16.15.5] (2/2): ========================================================================== Incoming: Outgoing: Curr: 1.64 MBit/s Curr: 1.47 GBit/s Avg: 1.62 MBit/s Avg: 1.44 GBit/s Min: 1.42 MBit/s Min: 1.26 GBit/s Max: 1.66 MBit/s Max: 1.47 GBit/s Ttl: 587.68 GByte Ttl: 406.36 GBytePresiona Ctrl+C para salir del depurador.
Cómo medir el rendimiento de un solo cliente
Para probar el rendimiento de lectura y escritura desde un solo cliente de Compute Engine, usa la herramienta de línea de comandos fio (Flexible I/O tester).
Instala fio:
Rocky 8
sudo dnf install fio -yUbuntu 20.04 y 22.04
sudo apt update sudo install fioEjecuta el comando siguiente:
fio --ioengine=libaio --filesize=32G --ramp_time=2s \ --runtime=5m --numjobs=16 --direct=1 --verify=0 --randrepeat=0 \ --group_reporting --directory=/lustre --buffer_compress_percentage=50 \ --name=read --blocksize=1m --iodepth=64 --readwrite=read
La prueba toma aproximadamente 5 minutos en completarse. Cuando termine, se mostrarán los resultados. Según tu configuración, puedes esperar una capacidad de procesamiento de hasta la velocidad máxima de red de tu VM y miles de IOPS por TiB.