DICA - Scheduling mais inteligente em CPUs híbridos Intel

CPUs Alder Lake e posteriores com arquitetura big.LITTLE (P-cores e E-cores) no Linux não têm um gerenciamento de processos muito bom, o sistema distribui de forma parecida entre todos os núcleos, independentes de serem P-cores ou E-cores.

No Linux 6.16+ foi acrescentado um novo modo de distribuir tarefas pelos núcleos da CPU. Esse método foi feito para arquitetura Lunar Lake, que prioriza economia de energia, porém é possível usá-lo em CPUs mais antigos como os Alder/Raptor/Meteor Lake.

Tenha em mente que o desempengo final multi-thread diminuirá um pouco, a ideia é trocar desempenho por bateria.

1° Passo - Desativar o Hyper-Threading

Os CPUs Lunar Lake não têm suporte ao Hyper-Threading, então para usar esse novo modo é necessário desabilitar o HT em CPUs antigos (Alder, Raptor e Meteor Lake).

Tem 2 modos - ou desabilitar na BIOS (preferível) ou com o argumento para o Kernel nosmt=on.

2° Passo - Passar a argumento intel_pstate=passive para o Kernel.

3° Passo - Provavelmente não será necessário pois com o passo anterior o sistema faz isso automaticamente, mas garanta que o Governor do CPU seja schedutil.

Feito isso, o sistema passa a priorizar os E-cores sempre que possível.

Por exemplo, eu testei assistindo a um vídeo no YouTube, o consumo ficava balanceado igualmente entre os núcleos P e E. Agora com a mudança, os núcleos P ficam na maior parte do tempo em 400mhz e os núcelos E ficam com a frequência mais alta.

Mas tenha em mente que essa mudança foi feita com os CPUs Lunar Lake em mente, e a melhoria dos E-cores do Alder Lake (Gracemont) para os Lunar Lake (Skymont) foi grande - tanto no desempenho quanto no consumo - então pode ser que nos CPUs antigos não tenha tanto incremento na duração da bateria quanto possa parecer.

1 curtida