Um novo conjunto de patches foi postado hoje para habilitar o agendamento de cluster para CPUs híbridas x86. Por sua vez, a última tentativa de agendamento de cluster para CPUs Core modernas de Alder Lake e mais recentes está gerando alguns pequenos benefícios de desempenho em relação ao código atual.
O agendamento de cluster foi tentado anteriormente por engenheiros da Intel para Linux, mas acabou causando regressões… Destaquei o problema em 2021 com o novo agendamento de cluster do Linux 5.16 está causando regressão, prejudicando ainda mais Alder Lake. Agora, embora este último agendamento de cluster x86 para CPUs híbridas deva estar em melhor forma.
O engenheiro da Intel, Tim Chen, postou a série de patches de hoje e comentou lá:
“O domínio de agendamento de cluster não está ativado em CPUs híbridas x86, pois a lógica é falta fazer o balanceamento de carga adequado entre um cluster com CPUs SMT em um único núcleo e um cluster com várias CPUs Atom.
Ricardo apresentou recentemente uma série de patches que melhorou muito a lógica de balanceamento de carga entre P-cores e E-cores em CPUs híbridas x86.
https://lore.kernel.org/lkml/[email protected]/T/#m16ebc8de64dbf4c54adebab701b42b47805105f4No entanto, essa série de patches não é suficiente para permitir a ativação do agendamento de cluster em CPUs híbridas x86. Esta série de patches fornece algumas correções adicionais necessárias para balanceamento de carga entre cluster grupo sched que consiste em CPUs SMT de núcleos grandes e grupo sched de cluster que consiste em CPUs Atom. Com esses patches aplicados sobre a série de patches de Ricardo, a carga é devidamente balanceada entre os clusters P-core e E-core. As CPUs ociosas são usadas na ordem correta:
1) CPU SMT em um P-core ocioso,
2) E-core ocioso,
3) CPU SMT não utilizada com um irmão ocupado.”
Com esses novos patches, o engenheiro da Intel encontrou uma pequena melhoria percentual com seu teste de CPU híbrida P/E:
“Eu testei alguns benchmarks de thread único em Pacote Phoronix que anteriormente mostrava regressões quando o agendamento de cluster foi ativado pela primeira vez. O agendamento de cluster usando esta série de patches funciona tão bem quanto o kernel vanilla.
Single Threaded 6.3-rc5 com cluster Melhoria
Agendamento de referência em desempenho
(desvio de execução a execução)
——————————————————————————————
tjbench (+/-0,08%) (+/-0,23%)-0,23%
PhPbench (+/-0,31%) (+/-0,89%)-0,39%
flac (+/-0,58%) (+/-0,22%) +0,17%
pybench (+/-3,16%) (+/-0,27) %) +2,55%Para benchmarks multi-threaded, tentei o kernel build e o tensor flow lite. O agendamento de cluster foi melhor para o caso de 10 threads em que 6 threads são executados nos P-cores, 2 threads em um cluster Atom e 2 threads no outro cluster Atom. Enquanto o kernel vanilla terá 6 threads nos P-cores, 4 threads em um cluster Atom. Embora as diferenças sejam pequenas e caiam dentro das variações de execução.
Multi Threaded 6.3-rc5 com cluster Melhoria
Agendamento de referência em desempenho
(-#threads) (desvio de execução)
——————————————————————————————-
Kbuild-8 (+/-2,90%) (+/-1,16%)-0,76%
Kbuild-10 (+/-3,08%) (+/-3,09%) +0,64%
Kbuild-12 (+/-3,28%) (+/-3,55%) +0,91%
Tensor Lite-8 (+/-4,84%) (+/-4,61%)-0,23%
Tensor Lite-10 (+/-0,87%) (+/-1,45%) +0,47%
Tensor Lite-12 (+/-1,37%) (+/-1,04%)-0,12%”
Será interessante ver como essa nova tentativa de agendamento de cluster se desenrola, embora seja tarde demais para ver no ciclo v6.4, então não seria mantido agora até pelo menos v6.5. De qualquer forma, como tenho tempo para testar os novos patches, vou dar uma chance a eles em Alder Lake e Raptor Lake para ver como isso está afetando o desempenho do Linux em uma ampla gama de cargas de trabalho.
Consulte este tópico da lista de discussão do kernel se estiver interessado neste último trabalho de agendamento de cluster para CPUs híbridas Intel.