FERRAMENTAS LINUX: Seguindo a LTO, os patches do kernel do Linux foram atualizados para o PGO para obter um desempenho mais rápido

sexta-feira, 15 de janeiro de 2021

Seguindo a LTO, os patches do kernel do Linux foram atualizados para o PGO para obter um desempenho mais rápido


Confira !!


O Clang LTO para o kernel Linux está para fornecer otimizações de tempo de link para produzir binários de kernel de maior desempenho (mais suporte Clang CFI) parece que vai pousar no Linux 5.12. Com esse recurso de otimização do compilador aparecendo totalmente, os engenheiros do Google também estão trabalhando no suporte do Clang PGO para o kernel Linux para explorar otimizações guiadas por perfil para melhorar ainda mais o desempenho do kernel.

Os engenheiros do Google postaram na terça-feira seus patches mais recentes, fornecendo a infraestrutura de kernel necessária em torno das Otimizações guiadas por perfil Clang (PGO). Isso é mais complicado do que o suporte LTO, pois com a funcionalidade PGO do compilador, ela depende primeiro da coleta de perfis durante o tempo de execução para, então, fornecer esse feedback de volta ao compilador a fim de gerar um binário mais otimizado com base nesse perfil / feedback de tempo de execução real.

O PGO pode ser um grande benefício para melhorar o desempenho do tempo de execução, conforme mostrado por empresas como o Mozilla Firefox que oferecem suporte a compilações PGO. Mas o PGO em geral não é muito usado por projetos upstream de código-fonte aberto devido à necessidade de efetivamente exigir duas compilações de compilador e também de perfis precisos coletados que sejam representativos de fluxos de trabalho do mundo real. Sem perfis precisos, os benefícios de desempenho do PGO são bastante reduzidos.






O trabalho do Google no suporte ao Clang PGO acaba sendo mais de mil linhas de novo código do kernel. A exposição de contadores PGO para o kernel é tratada e pode ser coletada via / sys / kernel / debug / pgo / profraw . Esses dados de perfil de kernel podem ser processados ​​usando a ferramenta llvm-profdata do LLVM para alimentá-los de volta ao Clang durante a construção otimizada para PGO.

Embora o atual suporte Clang LTO do Google seja sobre AArch64, até agora o suporte PGO apenas se concentrou em x86 / x86_64. Este suporte deve funcionar para outras arquiteturas e será habilitado assim que receber testes suficientes.

Esses patches mais recentes do Clang PGO para o kernel do Linux estão disponíveis para revisão na lista de discussão .

Será divertido experimentar um kernel do Clang PGO quando a infraestrutura estiver otimizada, mas ainda é improvável que seja amplamente utilizada devido às complexidades envolvidas e à necessidade de perfis precisos que representem o fluxo de trabalho de um determinado usuário. Portanto, é principalmente um recurso de nicho, mas deve compensar aqueles que executam cargas de trabalho de servidor especializadas e dedicadas.

Esta infraestrutura é apenas para suporte PGO do Clang e não (atualmente) suporta a funcionalidade GCC PGO.


Até a próxima !!

Nenhum comentário:

Postar um comentário