Desabilitando / reativando núcleos via kernel em sistemas Threadripper / EPYC [closed]

1

Como parte da minha pesquisa atual, tenho feito testes em que desabilitei / reativei os núcleos ao ecoar 0 ou 1 to /sys/devices/system/cpu/cpuN/online para simular o dimensionamento vertical.

Com o Kernel v4.4.0 (Ubuntu 16.04 LTS), isso funciona perfeitamente em várias máquinas Xeon E3. Recentemente, tive a oportunidade de testar máquinas EPYC 7281 de dois soquetes, também no Ubuntu 16.04, com v4.4.0. Desativar núcleos nesses sistemas funcionou muito bem. Ao reativá-los, no entanto, eles foram mostrados on-line pelo lscpu e htop, mas nenhum trabalho foi agendado novamente até que eu reinicializei a máquina, ou seja, quando enfatizei a máquina, htop mostrou que apenas núcleos que não tinham sido desativados e reativado antes de serem usados.

Em outras palavras: Em uma máquina Xeon, primeiro desativo todos os núcleos, exceto o núcleo # 0, depois reative-os novamente. Depois, tudo funciona normalmente como antes de desativar os núcleos. Nas máquinas EPYC, os núcleos que foram desativados nunca foram usados novamente, mesmo depois de reativá-los e mesmo que eles tenham sido mostrados como disponíveis pelo htop e lscpu.

Eu não consigo mais acessar as máquinas EPYC para testar isso ainda mais (só as tive por 2 semanas e não tive permissão para atualizar para o kernel mais novo), mas estamos pensando em comprar um novo hardware e eu preciso descobrir se o Threadripper / EPYC (Zen em geral) geralmente não pode desabilitar / reativar os núcleos através do kernel, ou se isso é apenas um problema isolado estranho.

Minha (s) pergunta (s) é (são):

  • Poderiam os núcleos não ficar online corretamente como um problema dos antigos 4.4. kernel, então este problema seria corrigido se eu fosse atualizar para um kernel mais novo? Infelizmente, não posso testar isso, pois não tenho mais acesso às máquinas EPYC (caso contrário, este post não estaria aqui :)). Eu teria, no entanto, total controle sobre nosso novo hardware. Então, se esse problema for corrigido por um kernel mais novo, eu ficaria feliz.

  • Se não for devido à versão do kernel, por que os EPYCs se comportariam dessa maneira, e o que eu poderia fazer para remediar isso?

Eu tentei procurar por respostas, mas até agora não encontrei nada de conclusivo, além do fato de que aparentemente existem muitos patches para CPUs baseados em Zen desde o kernel v4.10 e posteriores.

Eu olhei para este link , que fornece alguns detalhes sobre como o processo funciona CPUs Intel, e até links para o código real responsável pela desativação de núcleos. Infelizmente, isso não ajudou muito, pelo menos eu não entendi o suficiente para responder minhas perguntas.

Este não ajudou como eu preciso dimensionar verticalmente os núcleos durante o tempo de execução, sem reinicializar.

Eu também encontrei algumas referências a um novo sistema de gerenciamento de energia em novos kernels, mas isso passou pela minha cabeça: - /

Ou talvez, em vez de cavar e encontrar a raiz do problema, bastaria que alguém que atualmente tenha um sistema Threadripper ou EPYC com um kernel recente possa executar um teste rápido desativando / reativando núcleos e carregando para verificar se estão sendo utilizados adequadamente?

Eu realmente aprecio qualquer ideia e ajudo com este problema!

Estarei aqui para dar mais detalhes, se necessário, não sei o que mais poderia ser necessário para explicar esse comportamento. Além disso, essa é a troca certa para fazer esta pergunta, ou você recomendaria algum outro meio de pedir ajuda?

    
por ghabiger 23.04.2018 / 14:22

1 resposta

1

Ok, apenas para a posteridade, descobri a resposta experimentalmente.

Um colega meu fez um teste rápido em uma máquina EPYC 7281 totalmente carregada com o kernel v4.15, desabilitando 31/32 núcleos e reativando-os novamente. Todos os núcleos desativados foram corretamente utilizados novamente, então o problema que eu tive anteriormente parece ter desaparecido.

Não está claro qual versão inclui essa correção ou se houve outros fatores alterados que possam impactar este resultado, mas por enquanto estou bastante certo de que ter um kernel mais novo permite desativar / ativar núcleos em CPUs baseadas em Zen sem um problema.

    
por 25.04.2018 / 15:08