BOLT do Facebook fará parte do LLVM para otimizar binários

Facebook e Instagram ficam sem criptografia de ponta a ponta até 2023
facebook

O projeto BOLT do Facebook para otimizar o desempenho de binários compilados está se aproximando do ponto de ser adicionado à árvore de código-fonte oficial do LLVM com seu repositório mono.

O BOLT é um projeto de engenharia do Facebook há anos que é uma ferramenta de otimização e layout binário para acelerar os binários do Linux. Tem como objetivo otimizar a velocidade de grandes aplicações com base em um perfil de execução coletado, gerado via Linux perf ou similar, melhorando o layout do código para maior eficiência.

O BOLT aproveita o LLVM e, no ano passado, os engenheiros do Facebook queriam fazer o upstream deste otimizador dentro do LLVM. Geralmente, BOLT’ing um aplicativo pode resultar em uma melhoria de vários pontos percentuais no desempenho, enquanto em alguns casos pode até mesmo ser melhorias de dois dígitos. O BOLT é complementar às otimizações LTO e PGO (Profile Guided) de um compilador, mas, como o PGO, exige primeiro a coleta de um perfil no binário para ser otimizado.

BOLT do Facebook fará parte do LLVM para otimizar binários

BOLT do Facebook fará parte do LLVM para otimizar binários

O BOLT foi projetado para funcionar com aplicativos e serviços grandes e complexos. O BOLT já está em uso para grandes cargas de trabalho de produção dentro do Facebook para obter maior desempenho. Em um artigo de 2019, eles relataram um aumento de 7% no desempenho de seus aplicativos de data center além dos ganhos já obtidos por otimizações direcionadas por feedback (FDO) e LTO. Em alguns casos, pode até acelerar os binários em ~ 20% ou até 50% se não estiver usando FDO/LTO.

apresentamos o BOLT, um otimizador post-link construído sobre a estrutura LLVM. Utilizando o perfil baseado em amostra, o BOLT aumenta o desempenho de aplicativos do mundo real, mesmo para binários altamente otimizados construídos com otimizações orientadas por feedback (FDO) e otimizações de tempo de link (LTO). Demonstramos que as melhorias de desempenho pós-link são complementares às otimizações de compilador convencionais, mesmo quando as últimas são feitas em um nível de programa completo e na presença de informações de perfil. Avaliamos o BOLT nas cargas de trabalho do data center do Facebook e nos compiladores de código aberto. Para aplicativos de datacenter, o BOLT atinge acelerações de desempenho de até 7,0% além do reordenamento de função guiada por perfil e LTO. Para os compiladores GCC e Clang, nossa avaliação mostra que o BOLT acelera seus binários em até 20,4% em cima de FDO e LTO.

O que está acontecendo agora está chegando ao ponto de o BOLT ser adicionado à árvore de código-fonte do LLVM na forma de seu repositório mono. Este tópico da lista de e-mails começou a trabalhar através de tecnicalidades remanescentes e garantindo que nenhum outro problema pendente permanecesse antes de ser finalmente mesclado. Parece que o pouso do BOLT dentro do repositório LLVM acontecerá em breve. O Facebook espera que o BOLT upstream incentive mais contribuições para essa ferramenta. Atualmente, o BOLT não funciona no Windows.

Via Phoronix