Oggi è stata pubblicata una nuova serie di patch per abilitare la pianificazione dei cluster per le CPU ibride x86. A sua volta, l’ultimo tentativo di pianificazione del cluster per le moderne CPU Core di Alder Lake e versioni successive sta producendo alcuni piccoli vantaggi in termini di prestazioni rispetto al codice attuale.

La pianificazione dei cluster è stata precedentemente tentata dagli ingegneri Intel per Linux, ma ha finito per causare regressioni… Ho evidenziato il problema nel 2021 con la nuova pianificazione dei cluster di Linux 5.16 che causa regressioni, danneggiando ulteriormente Alder Lake. Ora, però, questa ultima pianificazione del cluster x86 per CPU ibride dovrebbe essere in condizioni migliori.

L’ingegnere Intel Tim Chen ha pubblicato la serie di patch di oggi e ha commentato:

“Il dominio di pianificazione del cluster non è abilitato sulle CPU ibride x86 poiché la logica è Manca un corretto bilanciamento del carico tra un cluster con CPU SMT in single core e un cluster con più CPU Atom.

Ricardo ha recentemente introdotto una serie di patch che ha notevolmente migliorato la logica di bilanciamento del carico tra core P ed E su CPU ibride x86.
https://lore.kernel.org/lkml/[email protected]/T/#m16ebc8de64dbf4c54adebab701b42b47805105f4

Tuttavia, questa serie di patch non è sufficiente per consentire l’abilitazione della pianificazione del cluster sulle CPU x86 ibride. Questa serie di patch fornisce alcune correzioni aggiuntive necessarie per il bilanciamento del carico tra i cluster gruppo sched costituito da CPU SMT di Big core e gruppo sched cluster costituito da CPU Atom. Con queste patch applicate sopra la serie di patch di Ricardo, il carico è adeguatamente bilanciato tra i cluster P-core ed E-core. Le CPU inattive vengono utilizzate nell’ordine corretto:

1) CPU SMT su un P-core inattivo,
2) E-core inattivo,
3) CPU SMT inutilizzata con un fratello occupato.”

Con queste nuove patch, l’ingegnere Intel ha riscontrato miglioramenti fino a pochi punti percentuali con i test della CPU ibrida P/E:

“Ho testato alcuni benchmark a thread singolo in Suite Phoronix che in precedenza ha mostrato regressioni quando la pianificazione del cluster è stata abilitata per la prima volta. La pianificazione del cluster che utilizza questa serie di patch si comporta bene come il kernel vanilla.

Single Threaded 6.3-rc5 con miglioramento del cluster
Pianificazione del benchmark in Performance
(deviazione run-run)
——————————————————————————————-
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%

Per i benchmark multi-thread, ho provato kernel build e tensor flow lite. La pianificazione del cluster ha funzionato meglio per il caso di 10 thread in cui 6 thread vengono eseguiti sui P-core, 2 thread su un cluster Atom e 2 thread sull’altro cluster Atom. Considerando che il kernel vanilla avrà 6 thread sui P-core, 4 thread su un cluster Atom. Sebbene le differenze siano piccole e rientrino nelle variazioni di corsa.

Multi Threaded 6.3-rc5 con miglioramento del cluster
Pianificazione del benchmark nelle prestazioni
(-#thread) (deviazione run-run)
——————————————————————————————-
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%”

Sarà interessante vedere come andrà a finire questo nuovo tentativo di pianificazione del cluster, sebbene sia troppo tardi per vedere nel ciclo v6.4, quindi non verrebbe messo in linea almeno fino alla v6.5. In ogni caso, dato che ho tempo per testare le nuove patch, le proverò su Alder Lake e Raptor Lake per vedere come sta influenzando le prestazioni di Linux su un più ampio arco di carichi di lavoro.

Vedi questo thread della mailing list del kernel se sei interessato a questo ultimo lavoro di pianificazione del cluster per le CPU Intel ibride.

Categories: IT Info