Linux: ulteriori miglioramenti ad AMD Preferred Core

Linux: ulteriori miglioramenti ad AMD Preferred Core

Gli sviluppatori AMD e Linux puntano a rendere il supporto Preferred Core più dinamico nel kernel, per una maggior ottimizzazione.
Linux: ulteriori miglioramenti ad AMD Preferred Core
Gli sviluppatori AMD e Linux puntano a rendere il supporto Preferred Core più dinamico nel kernel, per una maggior ottimizzazione.

Aggiunta in precedenza a Linux 6.9, la funzionalità “Preferred Core” di AMD, dedicata ai processori Zen più recenti, permette di sfruttare al meglio l’uso dei nuclei di elaborazione identificando i core in grado di raggiungere frequenze massime più elevate o che, per altre ragioni, dovrebbero essere privilegiati rispetto agli altri core del sistema per ottimizzare le prestazioni. Di recente, lo sviluppo del supporto nel kernel ha preso una direzione che ha lo scopo di rendere la funzionalità ancora più dinamica, permettendo di modificare la priorità dei core in tempo reale.

Linux rende più dinamica la funzionalità AMD Preferred Core

Dopo l’introduzione iniziale del supporto AMD Preferred Core su Linux, il lavoro degli sviluppatori si è concentrato sull’implementazione di un sistema di classificazione dinamica per alcuni processori Ryzen. Questa classificazione può variare durante l’esecuzione: ad esempio per i core con frequenze più alte o, nel caso dei processori Ryzen X3D, per quelli con accesso a una cache più ampia. Precedenti tentativi di implementare le classifiche dinamiche sul kernel avevano tuttavia incontrato ostacoli, mentre da poco è stata proposta una nuova soluzione che permette di venirne a capo.

Le patch inviate di recente adottano un nuovo approccio per aggiornare dinamicamente le preferenze dei core asimmetrici in base ai cambiamenti di priorità, senza la necessità di ricostruire la gerarchia del dominio dello scheduler, come spiegato dall’ingegnere AMD che ha lavorato al supporto:

“Un sottoinsieme di processori AMD che supportano le classificazioni Preferred Core può subire modifiche in fase di esecuzione per orientare il bilanciamento del carico verso CPU con frequenza più elevata/cache più capiente.

 

Nell’implementazione attuale, la CPU con la priorità asimmetrica più alta, ovvero “asym_prefer_cpu”, viene memorizzata nella cache nella struttura sched_group durante la creazione della gerarchia del dominio sched.

 

Il precedente approccio, che consisteva nel de-caching di “asym_prefer_cpu” e nel suo calcolo durante il bilanciamento del carico, non era popolare in quanto non solo perdeva i vantaggi della memorizzazione nella cache, ma aggiungeva anche un ulteriore overhead in update_sg_lb_stats().

 

All’OSPM’25, Vincent ha suggerito di mantenere “asym_prefer_cpu”, aggiornandolo dinamicamente al variare della priorità asimmetrica, senza dover ricostruire l’intera gerarchia del dominio sched.

 

Introdurre sched_update_asym_prefer_cpu(), che attraversa la gerarchia locale al cambio di priorità e ricalcola “asym_prefer_cpu”. Poiché sched_group per i domini !SD_OVERLAP è condiviso da tutte le CPU in sched_group_span(sg) (vedere get_group() in kernel/sched/topology.c), l’aggiornamento di “asym_prefer_cpu” nei gruppi della gerarchia locale garantisce che tutte le CPU del gruppo vedano il valore aggiornato.”

Non resta che aspettare l’approvazione delle patch da parte degli sviluppatori AMD e quando e se verrà unito alla prossima versione del kernel, vale a dire la 6.16.

Link copiato negli appunti

Ti potrebbe interessare

Pubblicato il
11 apr 2025
Link copiato negli appunti