FERRAMENTAS LINUX: Linus Torvalds assume um patch de desempenho: "Eu relaxo brincando com a montagem em linha"

quarta-feira, 28 de junho de 2023

Linus Torvalds assume um patch de desempenho: "Eu relaxo brincando com a montagem em linha"

 

"Algumas pessoas relaxam com uma boa bebida à beira da piscina, eu relaxo brincando com [código de montagem] embutido." Essa bela citação do dia foi explicada por Linus Torvalds depois que ele começou a melhorar um patch de otimização de desempenho que foi proposto para a janela de mesclagem do Linux 6.5 em andamento.

Há um mês atrás, foi lançado um patch para fornecer um grande aumento na taxa de transferência e diminuir a latência para a chamada csum_partial, uma função comumente usada no kernel do Linux para fins de soma de verificação. A função csum_partial é utilizada em sistemas de arquivos e redes para cálculos de soma de verificação. Com o patch proposto, pode haver uma melhoria de 8 a 9% na latência e cerca de 30% na taxa de transferência em certos casos.

Hoje, esse patch de otimização de desempenho para o csum_partial foi enviado por meio da solicitação de pull do x86/misc. Enquanto Linus Torvalds revisava o código, ele comentou na lista de discussão:

"Honestamente, olhando para esse patch, minha reação é 'por que ele foi desenrolado em blocos de 64 bytes, se 40 bytes é o valor mágico?'. Blocos de bytes independentes aumentam o ILP. Portanto, mesmo o caso de 64 bytes não está realmente fazendo um desdobramento de 64 bytes, mas sim dois desdobramentos de 32 bytes em paralelo. Portanto, você tem três valores 'mágicos' e o único que realmente importa é provavelmente o de 40 bytes.

Sim, sim, 64 bytes é o tamanho normal da linha de cache e é 'tradicional' para desenrolar. Mas não há nada realmente mágico nisso aqui. Resultado final: não teria sido bom fazer apenas pedaços de 40 bytes e fazer com que os 'dois blocos de 32 bytes sobrepostos' de 64 bytes sejam dois blocos de 40 bytes.

Algo como o patch anexado (TOTALMENTE NÃO TESTADO!)?

Novamente: isso não foi testado. Dei uma olhada rápida no assembly gerado e parecia mais ou menos o que eu esperava, mas pode ser um lixo completo.

Eu adicionei algumas coisas 'prováveis ()' apenas porque fez o assembly gerado parecer mais natural (ou seja, seguiu a ordem do código-fonte ali), caso contrário, são anotações questionáveis.

Finalmente: eu já mencionei que isso é completamente não testado?"

Depois de enviar essa mensagem, ele percebeu um erro simples em seu código Assembly escrito à mão e acrescentou:

"...Percebi isso olhando o patch mais uma vez. Nenhum teste real aconteceu. Ainda pode ser um lixo com bugs, mesmo com aquele '+r'. É apenas um pouco menos lixo com bugs. Eu vou agora voltar para minha caverna e continuar mexendo nas coisas, eu só precisei fazer outra coisa por um tempo. Algumas pessoas relaxam com uma boa bebida na piscina, eu relaxo brincando com assembly em linha."

Fundindo o patch de otimização csum_partial original enquanto a sua versão passa por mais comentários/discussões.

O engenheiro do Linux da AMD, Borislav Petkov, que gerenciou a solicitação pull x86/misc, respondeu à mensagem de Linus Torvalds com:

"E há um terceiro tipo de pessoa que relaxa à beira da piscina com uma boa bebida, enquanto brinca com assembly em linha. ;-P"

Essa interação entre Linus Torvalds e Borislav Petkov destaca o amor de Linus pela programação e sua dedicação em melhorar o desempenho do kernel Linux. Embora seja uma tarefa desafiadora e exigente, ele encontra prazer em explorar o código de montagem e encontrar maneiras de otimizá-lo. Sua paixão pela programação é evidente em suas palavras e demonstra o compromisso contínuo de melhorar o Sistema Operacional Linux.


Fonte

Até a próxima !!

Nenhum comentário:

Postar um comentário