- O consumo de energia dos data centers nos EUA foi de cerca de 4% da eletricidade nacional em 2023, com previsão de subir para 12% até 2028
- Uma equipe de pesquisa da Universidade de Waterloo desenvolveu uma forma de reduzir em até 30% o consumo de energia de data centers por meio de melhorias na forma como o kernel Linux processa rede
- O ponto central é o controle dinâmico do busy polling, alternando automaticamente entre interrupções e polling de acordo com a situação do tráfego
- A mudança foi implementada com a modificação de apenas cerca de 30 linhas de código e foi oficialmente incorporada ao kernel Linux 6.13
- Há ampla possibilidade de aplicação em data centers e servidores web baseados em Linux, reforçando a importância de uma filosofia de desenvolvimento de software centrada em eficiência
Consumo de energia de data centers pode cair até 30% com apenas 30 linhas de código no kernel Linux
Preocupações com o aumento do consumo de energia
- A maior parte do tráfego web mundial passa por data centers, que sustentam aplicações de alto consumo energético, como serviços de IA
- Nos EUA, os data centers consumiram cerca de 4% da eletricidade em 2023, e a projeção é que isso chegue a 12% até 2028
O cerne do problema: a forma como o kernel Linux processa rede
- O kernel Linux combina interrupções e polling no processamento de pacotes de rede
- Interrupção: quando chega um novo pacote, a CPU interrompe o trabalho atual para processá-lo
- busy polling: para reduzir a latência, faz verificações periódicas independentemente da existência de pacotes → ineficiente
A solução: alternar o busy polling dinamicamente
- A equipe do professor Martin Karsten, da Universidade de Waterloo, propôs que, de acordo com o tráfego de rede:
- quando o tráfego é alto: usar busy polling
- quando o tráfego é baixo: mudar para o modo de interrupção
- Com isso, reduz-se o consumo desnecessário de energia e aumenta-se a flexibilidade
Alterações no código e status de adoção
- A implementação foi feita em colaboração com o engenheiro da Fastly, Joe Damato, por meio de um rearranjo do código existente no kernel
- Sem escrever código novo, foi possível aplicar a mudança com cerca de 30 linhas modificadas na estrutura existente
- Foi oficialmente incluída no kernel Linux 6.13 (lançado em janeiro de 2025)
→ commit do kernel
Efeito na economia de energia
- Em aplicações centradas em rede, a economia de energia pode chegar a 30%
- em aplicações gerais, a taxa de redução pode ser menor
- Como se adapta automaticamente às mudanças no tráfego, é especialmente adequado para data centers
- Também pode ser expandido para servidores web baseados em Linux, como nginx e Apache
Disseminação na comunidade e impacto no open source
- Damato pretende aplicar a tecnologia também ao servidor H2O da Fastly
- Como se trata de código de kernel open source, desenvolvedores de outros servidores web também podem usá-lo como referência
- Espera-se que isso funcione como um catalisador para restaurar uma cultura de desenvolvimento focada em eficiência energética
O significado filosófico da pesquisa
- “Nos anos 90, a otimização de recursos era a base da ciência da computação”, mas, nos últimos 20 anos, o foco excessivo em desempenho deixou a eficiência em segundo plano
- Esta pesquisa mostra que pequenas melhorias no código podem levar a enormes economias de energia e aponta uma direção para o desenvolvimento de software sustentável
2 comentários
Comentários do Hacker News
O Linux adicionou um recurso de busy polling para redes de alto desempenho. A maior parte do software Linux não usa isso, mas o software usado em datacenters é ineficiente em termos de energia quando o sistema não está ocupado. Este patch permite desligar isso quando o sistema não está ocupado e recuperar a eficiência energética.
Grande parte das cargas de trabalho de datacenter de alto desempenho na prática não passa pela pilha de rede do kernel Linux.
Mais detalhes sobre essa mudança podem ser encontrados em https://lwn.net/Articles/1008399/.
É uma mudança realmente muito legal. Como especialista em computação de alto desempenho, muitas vezes me pergunto quanta energia é desperdiçada por código ineficiente e quão grande esse problema se torna à medida que a computação do planeta se expande.
Em contraste, a Meta tem um hack para manter as GPUs ocupadas e tornar o consumo de energia mais estável durante o treinamento de LLMs. Por exemplo, eles não querem uma grande queda de energia na sincronização de lotes.
Isso significa que a "adaptive interrupt moderation" não é mais usada no kernel? Faz mais de uns 15 anos que não trabalho com isso, mas o kernel costumava se adaptar usando interrupções quando a velocidade da rede era baixa e, ao passar de certo ponto, desligava as interrupções e usava polling.
Quando uma frase inclui "Up To", literalmente qualquer coisa é possível.
Fora do tema, mas fiquei feliz em reler algo sobre Joe Damato. Trouxe lembranças. No passado, primeiro li o texto de James Gollick sobre tcmalloc e conheci a packagecloud.io, depois acabei encontrando os textos incríveis do Joe.
Parágrafo principal:
Este texto me fez reviver memórias: https://didgets.substack.com/p/finding-and-fixing-a-billion-bug
Nossa, que curioso.
Também faz a gente pensar que software perfeito realmente não existe.