Mejorando el desempeño de una red Gigabit Ethernet en un cluster Linux Raúl Hormazábal y Mario Medina Depto. Ing. Eléctrica Universidad de Concepción Autores Raúl Hormazábal Ing. Civil Electrónico UdeC Dic. 2007 Actualmente en Claro, S. A. Mario Medina Prof. guía Cluster DIE UdeC Cluster de computadores corriendo Linux Cluster DIE UdeC Cluster de computadores corriendo Linux Cluster DIE UdeC 6 nodos HP Proliant ML110 G2 Pentium 4, 3.2 GHz, 800 MHz FSB 1 GiB RAM, DDR 3200 2 NIC Intel PRO/1000 3 ranuras PCI 32 bits 66MHz 2 discos Seagate Cheetah, 72 GiB, 15K RPM NIC Intel Pro/1000 Tarjeta de red Gigabit Ethernet Par trenzado (1000Base-T) PCI 66 MHz, 32 bits Aprox. US$20 Jumbo frames Hasta 16KB Switch Dell PowerConnect 2716 Gigabit Ethernet, 16 bocas, US$184 Capacidad de conmutación 32 Gbps Tasa de forwarding 23.7 Mpps Soporta 802.3ad (Link Aggregation) 6 grupos, 4 enlaces por grupo Soporta jumbo frames (9000 bytes) Software Ubuntu Linux Kernel 2.6.19 Software de pruebas iperf v 2.0.2 Herramienta para medir ancho de banda NetPIPE v 4.X Herramienta para medir latencia Parámetros de interés Latencia Retardo en la comunicación entre emisor y receptor Throughput Velocidad de transmisión de datos Escalabilidad Aplicabilidad a grandes números de computadores Throughput TCP Throughput TCP depende de MSS: Maximum Segment Size Ligado a MTU de Ethernet RTT: Round-Trip Time Tasa de pérdida de paquetes Throughput TCP En un cluster, tasa de pérdida de paquetes y tiempo de ida-y-vuelta Bajos, pero fuera de nuestro control Aumentar desempeño aumentando el MSS y el MTU! A mayor MSS, mayor es la tasa de pérdidas MTU de Ethernet Ethernet: MTU típico de 1500 bytes Headers TCP + IPv4 = 40 bytes Headers TCP + IPv6 = 60 bytes Todos los nodos en una subred deben tener el mismo MTU Permite compatibilidad entre redes 802.3 (10/100/1000 Mbps), 802.11, 802.5, etc. Jumbo frames MTU = 1500 Diseñado para velocidades bajas y tasas de error altas MTU mayor que 1500? Reduce interrupciones a la CPU Transfiere más datos a menor costo Se ha “estandarizado” a MTU=9000 Aumentando el throughput Usar interfaces de red en paralelo Dividir el tráfico de red NIC teaming Channel bonding Etherchannel Port trunking Link aggregation Channel bonding Método para combinar enlaces físicos de red en un enlace lógico con el fin de aumentar las velocidades de transferencia de datos Beneficios Enlace de alta disponibilidad Tolerancia a fallos Incremento de la capacidad del enlace Reutilización del hardware existente Channel bonding Modos de bonding 0 ó balance-rr 1 ó active-backup 2 ó balance-xor 3 ó broadcast 4 ó 802.3ad 5 ó balance-tlb 6 ó balance-alb Modos de bonding balance-rr: Política Round-Robin Tolerante a fallos y balance de carga active-backup: Sólo un interfaz activa a la vez, las otras actúan como backups Tolerante a fallos balance-xor: Asigna interfaz como función del MAC del destino Tolerante a fallos y balance de carga Modos de bonding broadcast: replica mensajes en todas las interfaces Tolerante a fallos 802.3ad: sigue estándar IEEE 802.3ad (dynamic link aggregation) Divide interfaces en grupos de igual velocidad y modo de transmisión Modos de bonding balance-tlb: balance de carga adaptivo que redistribuye tráfico de salida en la interfaz balance-alb: balance de carga adaptivo que redistribuye tráfico de salida y de entrada a la interfaz Información de entrada via ARP Bonding en Linux Implementado como driver del kernel Activando bonding en Linux Línea de comando linux ifdown eth0 ifdown eth1 modprobe bonding mode=0 miimon=100 ifconfig bond0 192.168.1.100 up ifenslave bond0 eth0 ifenslave bond0 eth1 Configurando el switch Modos active-backup, balance-tlb, balance-alb: switch no varía Modos balance-rr, balance-xor, broadcast: requieren crear grupos de enlaces en el switch Modo 802.3ad: requiere crear grupos en un switch que soporte IEEE802.3ad Efecto del MTU y bonding Parámetros de la red MTU es 1500, 3000 y 9000 bytes 1 y 2 interfaces de red Comando iperf opción -l Efecto de MTU MTU 1500 MTU 3000 MTU 9000 1400 Throughput (Mbps) 1200 1000 800 600 400 200 0 1 2 Interfaces de red Throughout en función de flujos TCP/IP Parámetros de la red MTU es 9000 bytes Entre 1 y 10 flujos de datos 2 y 3 interfaces de red Comando iperf Throughput en función de flujos TCP/IP Buffer de datos Iperf por omisión transfiere datos en bloques de 8KB Aumento de tamaño de buffers envía más datos en paquete TCP a la interfaz NIC recibe paquete TCP y genera frames Ethernet correspondientes Efecto del buffer de datos Parámetros de la red MTU es 9000 bytes 6 flujos de datos 2 y 3 interfaces de red Comando iperf opción -l Efecto del buffer de datos Ventana de TCP Cuántos datos puede enviar el emisor antes de esperar por un ACK del receptor? TCP limita ventana a 64 KB Linux implementa TCP Large Windows Extensions (RFC1323) Permite ventanas de hasta 1 GB Efecto de la ventana de TCP Parámetros de la red MTU es 9000 bytes 6 flujos de datos 2 y 3 interfaces de red Comando iperf opción -w Efecto de ventana de TCP Dónde está el cuello de botella? Ancho de banda no aumenta al Agregar más flujos de TCP/IP Aumentar buffer de datos Agregar más tarjetas de red Dónde está el cuello de botella? Dónde está el cuello de botella? Bus de Entrada/Salida Placa madre utilizada tiene bus PCI 32 bits 66 MHz Límite de 2.1 Gbps Solución? Nuevas tecnologías Buses de entrada/salida Bus PCI Bus PCI 64-bit/100 MHz: 800 MB/s Bus PCI-X 64-bit/133 MHz: 1.066 GB/s Bus PCI Express Bus PCI Express x1: 250 MB/s Bus PCI Express x16: 4 GB/s Bus PCI Express 2.0 x32: 8 GB/s Cuándo usar jumbo frames? En una red LAN cuando el hardware lo permite Para aplicaciones que realizan grandes transferencias de datos Sistema de archivos paralelo PVFS: Parallel Virtual File System SANs con iSCSI Problemas de jumbo frames Aplicabilidad Muchas aplicaciones intercambian mensajes pequeños Para muchas aplicaciones, lo importante es la latencia Jumbo frames puede aumentar latencia Switches con QoS Problemas de jumbo frames Compatibilidad No soportados por estándar 802.11 No soportados por 10/100 Mbps Ethernet Problemas con MTU Path Discovery Se hace via ICMP Muchos routers botan paquetes ICMP Problemas de jumbo frames Desempeño Traslada el cuello de botella al bus de entrada/salida Problemas con CRC-32 de Ethernet Pierde efectividad para frames grandes A futuro Channel bonding Ya se usa en Wi-Fi Super-G 10-Gigabit Ethernet Probablemente con jumbo frames TCP Offloading Engines Infiniband 10-Gigabit Ethernet IEEE Std 802.3-2005 Modo de operación full-duplex No se usa CSMA/CD 57% de los supercomputadores Top500 la usa En el futuro 40-Gigabit ethernet 100-Gigabit ethernet Infiniband Enlaces seriales de comunicación punto-a-punto de alta velocidad Muy usados en computación de alto desempeño (HPC) 30% de los supercomputadores TOP500 usan InfiniBand Linux soporta InfiniBand desde 2006 Infiniband Enlaces de 2.5, 5 ó 10 Gbps Agregados en grupos de 4 ó 12 enlaces Grupo de 12 enlaces Quad-Data-Rate transmite a 96 Gbps Nodos conectados via tramas de switches InfiniBand Precios Tarjeta PCI-Express, 10 Gbps (QDR) 1 puerta: US$130 2 puertas: US$750 Switch HP 4X DDR, 24 puertas, 20 Gbps US$4800 En conclusión Nuestro cluster es usado como banco de pruebas de sistema de archivos paralelo Jumbo frames (MTU = 9000) 2 Interfaces Gigabit Ethernet por nodo