- El consumo eléctrico de los centros de datos en Estados Unidos representó aproximadamente el 4% de la electricidad nacional en 2023, y se espera que aumente al 12% para 2028
- Un equipo de investigación de la Universidad de Waterloo desarrolló una forma de reducir hasta 30% el consumo energético de los centros de datos mediante mejoras en la forma en que el kernel de Linux procesa la red
- La clave es el control dinámico del busy polling, que cambia automáticamente entre interrupciones y polling según la situación del tráfico
- Este cambio se implementó con solo unas 30 líneas de código modificadas y fue incorporado oficialmente en el kernel Linux 6.13
- Existe amplio potencial de adopción en centros de datos y servidores web basados en Linux, y se destaca la necesidad de recuperar una filosofía de desarrollo de software centrada en la eficiencia
El consumo eléctrico de los centros de datos podría reducirse hasta un 30% con apenas 30 líneas de código en el kernel de Linux
Preocupación por el aumento del consumo eléctrico
- La mayor parte del tráfico web mundial pasa por centros de datos, que sirven de base para aplicaciones de alto consumo energético como los servicios de IA
- En Estados Unidos, los centros de datos usaron cerca del 4% de la electricidad en 2023, y se proyecta que esa cifra suba hasta el 12% en 2028
El núcleo del problema: cómo procesa la red el kernel de Linux
- El kernel de Linux usa en paralelo interrupciones y polling para procesar paquetes de red
- Interrupciones: cuando llega un paquete nuevo, la CPU interrumpe su tarea actual para procesarlo
- busy polling: para reducir la latencia, revisa periódicamente si hay paquetes aunque no los haya → ineficiente
La solución: cambiar busy polling de forma dinámica
- El equipo del profesor Martin Karsten de la Universidad de Waterloo propuso que, según el tráfico de red:
- Cuando hay mucho tráfico: usar busy polling
- Cuando hay poco tráfico: cambiar al modo por interrupciones
- El resultado es una reducción del consumo innecesario de energía y una mayor flexibilidad
Modificación del código y estado de adopción
- Se implementó en colaboración con el ingeniero de Fastly Joe Damato, reorganizando el código existente del kernel
- Sin escribir código nuevo, se logró con alrededor de 30 líneas modificadas mediante cambios en la estructura existente
- Fue incluido oficialmente en el kernel Linux 6.13 (lanzado en enero de 2025)
→ commit del kernel
Impacto en el ahorro de energía
- En aplicaciones centradas en red, se logró hasta 30% de ahorro energético
- En aplicaciones generales, la reducción puede ser menor
- Como se adapta automáticamente a los cambios de tráfico, resulta adecuado para centros de datos
- También puede extenderse a servidores web basados en Linux como nginx y Apache
Expansión en la comunidad e impacto en el open source
- Damato planea aplicar esta técnica también en el servidor H2O de Fastly
- Al tratarse de código de kernel open source, otros desarrolladores de servidores web también pueden tomarlo como referencia
- Se espera que funcione como catalizador para restaurar una cultura de desarrollo centrada en la eficiencia energética
El significado filosófico de la investigación
- “En los años 90, optimizar recursos era una base de la ingeniería informática”, pero en los últimos 20 años el enfoque en el rendimiento ha desplazado la eficiencia
- Esta investigación muestra que “una pequeña mejora de código puede traducirse en un enorme ahorro de energía” y sugiere una dirección para el desarrollo de software sostenible
2 comentarios
Comentarios de Hacker News
Linux agregó una función de sondeo activo para redes de alto rendimiento. La mayor parte del software de Linux no la usa, pero el software utilizado en centros de datos resulta ineficiente en términos de energía cuando el sistema no está ocupado. Este parche permite desactivarla cuando el sistema no está ocupado y recuperar la eficiencia energética.
Gran parte del trabajo de alto rendimiento en centros de datos en realidad no pasa por el stack de red del kernel de Linux.
Se pueden ver más detalles sobre este cambio en https://lwn.net/Articles/1008399/.
Es un cambio realmente genial. Como especialista en computación de alto rendimiento, a menudo me pregunto cuánta energía se desperdicia por código ineficiente, y qué tan grande se vuelve ese problema a medida que la computación a escala planetaria sigue creciendo.
En cambio, Meta tiene un hack para mantener ocupadas las GPU y así hacer que el consumo de energía sea más estable durante el entrenamiento de LLM. Por ejemplo, no quieren una gran caída de energía durante la sincronización de lotes.
¿Significa esto que la "adaptive interrupt moderation" ya no se usa en el kernel? Hace más de unos 15 años que no trabajo en esto, pero el kernel solía adaptarse usando interrupciones cuando la velocidad de red era baja, y apagándolas para usar sondeo una vez superado cierto punto.
Cuando una frase incluye "Up To", literalmente cualquier cosa es posible.
No viene al caso, pero me alegra volver a leer algo sobre Joe Damato. Me trae recuerdos. Después de leer por primera vez el post de James Gollick sobre tcmalloc y enterarme de packagecloud.io, terminé encontrando los increíbles textos de Joe.
Párrafo clave:
Este artículo me hizo recordar esto: https://didgets.substack.com/p/finding-and-fixing-a-billion-bug
Oh~ qué curioso. Da un poco la impresión de que todavía no existe el software perfecto.