FERRAMENTAS LINUX: Limpando uma bagunça: o Kernel Linux 6.9 provavelmente irá refazer o código de topologia da CPU x86

sábado, 17 de fevereiro de 2024

Limpando uma bagunça: o Kernel Linux 6.9 provavelmente irá refazer o código de topologia da CPU x86

 

Uma possível reescrita do texto com outras palavras e aumentando as visualizações é:

Thomas Gleixner, um experiente programador de kernel Linux que trabalha na Linutronix, empresa da Intel, vem dedicando-se a reformular o código do kernel Linux que avalia a topologia das CPUs x86. Seu objetivo é eliminar um código antigo e confuso, bem como corrigir algumas partes do código que não se aplicam mais aos processadores Intel Core híbridos atuais, que combinam núcleos P/E com diferentes configurações de SMT/HT e, assim, desafiam as antigas suposições do kernel. Seu trabalho, que já está na fila em um ramo do TIP hoje, tem chances de entrar no Linux 6.9.

Gleixner começou a melhorar o código de avaliação da topologia das CPUs x86 no kernel Linux no verão passado. Ele percebeu que o código, que foi iniciado há muito tempo, estava complicado e incorreto, considerando os novos designs de processadores híbridos Intel Core. Gleixner explicou na sua carta de apresentação original :

"Um commit recente no analisador CPUID leaf 0xb/0x1f me fez olhar mais de perto a forma como a topologia é avaliada. Essa ‘correção’ é apenas mais um remendo para o sintoma que ignora completamente o desastre por baixo.

A forma como a avaliação da topologia funciona é sobrescrever as variáveis relevantes o máximo possível. Por exemplo, smp_num_siblings é reescrito várias vezes, o que é errado desde o início. A CPU de boot escreve 3 vezes, cada AP duas vezes. O

pior é que isso funciona por sorte em sistemas híbridos porque todos os existentes parecem bootar em um P-Core que tem SMT. Se ele bootasse em um E-Core que não tem SMT, então partes da avaliação inicial da topologia, incluindo a máscara de thread primária que é necessária para trazer CPU paralela seria completamente errada. Reescrevê-lo mais tarde com o valor correto não adianta nada.

O que já está errado hoje com o híbrido é o número de núcleos por pacote. Em um ADL com 8 núcleos P e 8 núcleos E, o o número resultante de núcleos por pacote é avaliado como 12. O que é ainda mais surpreendente porque o analisador CPUID 0xb/0x1f analisa o número de processadores lógicos no nível do núcleo e os divide pelo número de irmãos SMP.

24/2 = 12

Sendo que essa CPU tem claramente 16 núcleos e não 12.

Está claramente documentado no SDM que isso está errado. … Essa frase ‘NÃO usar para avaliação de topologia’ existia antes mesmo do surgimento do híbrido e foi ignorada. O código funcionou por sorte, mas com o híbrido todas as apostas estão fora. O código desaba completamente quando a folha CPUID 0x1f enumera qualquer nível de topologia entre CORE e DIE, mas isso não é uma surpresa.

A coisa certa a fazer é realmente avaliar a topologia completa, incluindo as CPUs não presentes (hotpluggable) baseado nos APICIDs que são fornecidos pelo firmware e um analisador de nível de domínio de topologia adequado. Isso pode dizer exatamente o número de pacotes físicos, pacotes lógicos, etc. _antes mesmo de bootar um único AP. Tudo isso pode ser avaliado antecipadamente.

Além disso, existem muitos lugares que fazem sua própria avaliação de topologia, mas não há nenhum ponto central que possa realmente fornecer todas essas informações de forma consistente. Isso precisa mudar."

Nos últimos seis meses, essa grande série de patches que melhorou o código de avaliação da topologia da CPU Intel / AMD / Hygon / Centaur / Zhaoxin foi revisada seis vezes. Processadores Intel e AMD x86

Com ele agora em boa forma, muitos patches foram enfileirados no branch x86/apic de tip/tip.git . Com ele chegando a um ramo do TIP, é provável que seja enviado para a janela de mesclagem do Kernel Linux 6.9 do próximo mês, a menos que surjam novos problemas ou objeções levantadas por Linus Torvalds.





Fonte 

Até a próxima !!

Nenhum comentário:

Postar um comentário