O site Phoronix informou que Linus Torvalds fez uma grande otimização no kernel para acelerar os tempos de compilação em grandes CPUs. Conheça os detalhes dessa otimização e seu impacto.
Para aqueles que usam o GNU Make em particular como seu sistema de compilação, os tempos de compilação paralelos estão prestes a ser muito mais rápidos, começando no kernel 5.6 para sistemas grandes de contagem de núcleos.
Linus Torvalds fez uma grande otimização no kernel para acelerar os tempos de compilação em grandes CPUs
Esse pouso logo após o lançamento da CPU AMD Threadripper 3990X de 64 núcleos/128 threads é um exemplo de sistema para se beneficiar dessa alteração do kernel ao compilar muito código e fazer uso de muitos trabalhos GNU Make.
O próprio Linus Torvalds mudou o código de canal do kernel para usar esperas exclusivas ao ler ou escrever.
Embora isso não signifique muito para a tubulação de dados tradicional/comum, o servidor de trabalho GNU Make é um grande benfeitor, pois depende de uma tubulação para limitar o paralelismo.
Essa técnica, embora empregada pelo servidor de tarefas GNU Make, é ineficiente com as CPUs de alta contagem atual, pois todos os processos gerados são despertados em vez de um único leitor a ser despertado no lançamento de um escritor.
Em um caso de teste simplificado escrito por Linus Torvalds, esse patch fez com que o número de alternâncias de contexto no programa de teste caísse de 11 milhões para apenas 1,2 milhão.
O tempo consumido do sistema também foi uma fração minúscula do tempo original. Reduzir o número de alternâncias de contexto também é bem-vindo, simplesmente pelo fato de o desempenho da alternância de contexto ter ficado mais lento no lado da Intel como resultado das inúmeras atenuações de segurança.
Além deste pouso de patch agora para o kernel Linux 5.6, o patch foi parcialmente atrasado, pois essa melhoria poderia realmente desencadear uma condição de corrida com o servidor de trabalho GNU Make, que acabou sendo resolvido em 2017, mas só foi lançado com o GNU Make 4.3 e depois portado em algumas distribuições.
Josh Triplett, da Intel, testou o patch com Linus e confirmou:
“Estou praticando seu pipe fix patch (alternando para filas de espera exclusivas) há um mês ou mais, em vários sistemas diferentes, e não tive problemas com ele. O patch * melhora substancialmente os tempos de compilação paralelos em sistemas grandes (~100 CPU), tanto com make paralelo quanto com outras coisas que usam o servidor de tarefas baseado em pipe da make. “
O patch está nesse endereço para aqueles interessados no estado principal do Git de hoje.
Michael Larabel, do site Phoronix, disse que certamente testará esse impacto também no desempenho da compilação baseada em Make como parte do meu benchmarking Linux 5.6.
Será interessante ver o impacto nos projetos baseados no GNU Make, especialmente com muitos projetos nos últimos anos se afastando do Sistema de Compilação GNU devido a reclamações de desempenho lento (além de outros fatores) em relação ao Meson + Ninja, mas pelo menos muitos códigos ainda dependem da alteração do Make for this Linux 5.6+ para se beneficiar.
- Como instalar o driver para o controle do Xbox no Ubuntu
- Como instalar o NeoGeo Pocket Emulator no Linux via Snap
- Como instalar o jogo Space Station 14 no Linux via Flatpak
- Como habilitar o repositório Games no openSUSE