Golang 1.20, lançado há mais de um ano, suporta ProfileGuidedOptimizations (PGO), que desde então foi aprimorado no Go 1.21. A velocidade de execução dos binários Go aumentou de 2 a 7%, graças a este método de otimização também adotado por outros compiladores. Os engenheiros da Cloudflare publicaram uma postagem no blog esta semana elogiando o suporte PGO do Go e a economia de CPU resultante.

acesso:

75% de desconto na NordVPN + 3 mesesHá também o gerenciador de senhas NordPass

O suporte PGO do compilador é muito bom, desde que amostras suficientes sejam retornadas ao compilador como arquivos de configuração para que o compilador possa otimizar o código adequadamente. O compilador pode fazer otimizações mais inteligentes com base no perfil/feedback coletado, mas isso requer etapas extras em comparação com as otimizações do compilador mais fáceis de aplicar. No caso do PGO de Golang, a melhoria pode chegar a 14% para algumas bases de código.

A Cloudflare tem alguns serviços baseados em Go que dependem de milhares de núcleos de CPU em todo o mundo, então recentemente eles começaram a explorar o impacto do PGO de Golang em sua infraestrutura. Os resultados são os seguintes

Isso mostra que após o lançamento estamos usando cerca de 97 núcleos a menos do que antes do lançamento, uma redução de cerca de 3,5%. Isto parece ser consistente com os valores indicados na documentação a montante, entre 2% e 14%.

O segundo número que podemos sentir é o uso no mesmo horário em dias diferentes da semana. O uso médio nos 7 dias anteriores ao lançamento foi de 3.067,83 núcleos, enquanto o uso médio nos 7 dias após o lançamento foi de 2.996,78 núcleos, economizando 71 CPUs. Embora não seja tão bom quanto os 97 CPUs que economizamos, ainda é bastante impressionante! Isso parece provar os benefícios do PGO - sem alterar o código, conseguimos economizar vários servidores de tempo de computação da CPU.

Considerando os custos atuais dos servidores e o custo total de propriedade (incluindo custos de energia e resfriamento), economizar o tempo de CPU de alguns servidores é significativo, um ganho de eficiência alcançado com investimento mínimo. No futuro, eles também explorarão mais perfis e otimizarão ainda mais por meio da otimização BOLT ou LTO e outros ajustes.

Mais detalhes no blog da Cloudflare.