12 pontos por GN⁺ 2025-04-22 | 2 comentários | Compartilhar no WhatsApp
  • 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
  • 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

 
GN⁺ 2025-04-22
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.

    • O título do artigo é um pouco enganoso. Parece que isso também se aplicaria a cargas de trabalho de desktop, mas na verdade é voltado para datacenters. Se tivessem acrescentado "in datacenters" ao título, teriam evitado a confusão.
  • Grande parte das cargas de trabalho de datacenter de alto desempenho na prática não passa pela pilha de rede do kernel Linux.

    • Em vez disso, usam DPDK, XDP ou pilhas em espaço de usuário como Onload ou VMA. Muitas vezes, SmartNICs fazem offload em hardware. Nesses casos, este patch não se aplica.
    • No entanto, este patch claramente ajuda em configurações nas quais o kernel está no caminho de dados (CDNs, nós de ingress, VMs, sistemas Linux embarcados etc.). Não deve ter muito impacto em cargas de trabalho que já contornam o kernel por razões de desempenho ou latência. A manchete de economia de 30% de energia deve variar bastante conforme o contexto.
  • 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.

    • Pessoalmente, sinto uma obrigação moral de tornar o código o mais eficiente possível. Especialmente quando um trabalho roda por meses em centenas de CPUs.
  • 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.

    • O problema que se tentava resolver eram mudanças súbitas e dramáticas no tráfego. Por exemplo, quando um loop era introduzido no switching e surgia a correspondente tempestade de pacotes. Nesse caso, as interrupções chegavam rápido demais e não davam ao sistema tempo suficiente fora de interrupção para conseguir desativá-las. Então, a solução era fazer com que o roteador Linux tivesse mais núcleos do que a interface de rede.
  • 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:

    • "Há uma ressalva para essa economia de energia. 'Os 30% são o melhor caso para a pilha de rede ou a parte de comunicação', explica Karsten. 'Se a aplicação faz principalmente isso, você pode ver uma melhora de 30%. Se a aplicação faz muitas outras coisas e só usa a rede ocasionalmente, esses 30% vão se transformar em um número menor.'"
  • Este texto me fez reviver memórias: https://didgets.substack.com/p/finding-and-fixing-a-billion-bug

 
semanticist 27 일 전

Nossa, que curioso.
Também faz a gente pensar que software perfeito realmente não existe.