Saltar al contenido

Balanceador de carga del procesador Shenango: cómo funciona

Esquema general de funcionamiento del algoritmo IOKernel y del sistema Shenango

Estamos hablando de un equilibrador de carga de los ingenieros del MIT que planean usar en el centro de datos. En el artículo – sobre los principios del trabajo y las posibilidades de solución.

Objetivo de desarrollo

Los analistas de un proveedor líder en la nube dicen que los centros de datos del mundo utilizan un tercio de sus recursos informáticos. En casos excepcionales, esta cifra puede crecer hasta un 60%. Debido al uso ineficiente de la capacidad, los llamados servidores zombies aparecen en las salas de computadoras. No hacen un trabajo útil (estoy en estado de «coma») y solo desperdician electricidad. Según el Uptime Institute, alrededor de 10 millones de servidores están sin trabajo (30% de todas las máquinas). Cuesta $ 30 mil millones al año mantener su desempeño.

Los ingenieros del Instituto de Tecnología de Massachusetts (MIT) decidieron arreglar la situación. Han desarrollado un equilibrador de carga que, en teoría, aumentará la eficiencia del uso de la CPU hasta en un 100%. El sistema se llamó Shenango.

Cómo funciona el equilibrador

Shenango es una biblioteca de Linux escrita en el lenguaje de programación C (hay enlaces en Rust y C ++). Supervisa el búfer de actividad de la CPU y distribuye los procesos en los núcleos libres.

El sistema se basa en el algoritmo IOKernel. Se ejecuta en un núcleo de procesador independiente y gestiona las solicitudes a la CPU desde la NIC. Para estos fines, IOKernel utiliza el marco del Kit de desarrollo de plano de datos (DPDK). El marco brinda a las aplicaciones la capacidad de «comunicarse» directamente con los adaptadores de red.

Cuando llega una nueva actividad al procesador, IOKernel elige de forma independiente a qué núcleo (o núcleo) transferirla. En este caso, para cada proceso, se asignan los núcleos principal (garantizado) y auxiliar (expandible); estos últimos se conectan solo si el número de solicitudes aumenta significativamente.

El algoritmo comprueba el búfer de tareas a intervalos de 5 µs. Busque procesos «congelados» que la CPU no haya podido procesar durante mucho tiempo. Si se encuentran, se asignan inmediatamente a núcleos libres (u otros servidores en el centro de datos). Se da prioridad a los kernels que ya han ejecutado un proceso similar y parte de la información sobre cuál ha permanecido en la caché.

Para mejorar la eficiencia del equilibrio, Shenango también utiliza el método de robo de trabajo. Los kernels que trabajan con una aplicación eliminan automáticamente parte de la carga entre sí si completan sus tareas antes que el resto.

El esquema general de trabajo del algoritmo IOKernel y el sistema Shenango se puede representar de la siguiente manera:

Puede encontrar el código del proyecto y las aplicaciones de muestra en el repositorio oficial de GitHub.

Oportunidad

Los desarrolladores afirman que Shenango es capaz de manejar 5 millones de solicitudes por segundo. El tiempo medio de respuesta es de 37 μs. Los expertos en TI señalan que el sistema ayudará a optimizar el rendimiento de las aplicaciones web, como las tiendas en línea. Según las estadísticas, un retraso en la carga de una segunda página reduce la cantidad de visitas en un 11%, lo que puede ser crítico durante los días de ventas. El equilibrio de carga eficiente lo ayudará a atender a más clientes.

Los ingenieros del MIT están trabajando actualmente para corregir los defectos y ampliar la funcionalidad de su solución. Hasta ahora, Shenango no sabe cómo trabajar con sistemas NUMA multiprocesador. En ellos, los chips están conectados a diferentes módulos de memoria y no pueden comunicarse entre sí directamente. Este enfoque complica el equilibrio de carga: IOKernel puede controlar el funcionamiento de un solo grupo de procesadores, pero no todos los dispositivos del servidor.

Quién más desarrolla balanceadores de carga de CPU

MIT no es el único que desarrolla balanceadores de carga de procesadores. Otro ejemplo es el sistema Arachne, una biblioteca C ++ para Linux (el código está en GitHub, la documentación de la API se puede encontrar en el sitio oficial). Arachne calcula el número de núcleos que necesita una aplicación en particular y asigna el número requerido al iniciar el proceso correspondiente.

¿Quién más desarrolla balanceadores de carga de CPU?/ foto Brian Kostiuk Unsaplsh

Otro ejemplo de equilibrio de carga es ZygOS, un sistema operativo especializado que utiliza estructuras de datos de memoria compartida, NIC de múltiples colas e interrupciones entre procesadores para distribuir la carga entre los núcleos. Al igual que Shenango (a diferencia de Arachne), la solución también utiliza un enfoque de robo de trabajo. El código del proyecto se puede encontrar en GitHub.

Los centros de datos modernos son cada vez más grandes. Ya se han construido más de cuatrocientos centros de datos a hiperescala en todo el mundo. En un futuro próximo, su número crecerá otro 30%. Las tecnologías de equilibrio de carga pueden ayudarlo a utilizar los recursos informáticos de manera más eficiente. Por lo tanto, soluciones como Shenango, ZygOS y Arachne tendrán cada vez más demanda, ya que ahora están siendo implementadas por grandes empresas.

Qué más leer en nuestro blog sobre el tema:

Califica el artículo