Ingo Molnar ha presentato oggi gli aggiornamenti dello scheduler destinati al kernel Linux 6.5. Le modifiche più evidenti con le modifiche allo scheduler della CPU stanno migliorando il bilanciamento del carico SMP (Hyper Threading) per le CPU Intel Core di un design ibrido con un mix di core P ed E.
I miglioramenti dello scheduler a vantaggio delle CPU ibride Intel servono a evitare migrazioni di attività non necessarie. La richiesta pull di oggi riassume elegantemente la situazione come segue:
Evita migrazioni non necessarie all’interno di domini SMT su sistemi ibridi.
Problema:
su sistemi CPU ibridi (processori con una combinazione di core SMT a frequenza più alta e core non SMT a frequenza più bassa), con il vecchio codice le CPU con priorità inferiore estraevano le attività dal core con priorità più alta se più di un fratello SMT era occupato, con il risultato di molte migrazioni di attività non necessarie.
Soluzione:
Il nuovo codice migliora il bilanciamento del carico per riconoscere i core SMT con più di un fratello occupato e consente alle CPU con priorità inferiore di eseguire il pull delle attività, il che evita migrazioni superflue e consente ai core con priorità inferiore di ispezionare tutti i fratelli SMT per la coda più occupata.
Questo è solo uno dei tanti miglioramenti al kernel Linux che gli ingegneri Intel hanno apportato negli ultimi anni a vantaggio di Alder Lake e dei processori più recenti con il design ibrido. Nel complesso, Alder Lake e i successivi sono stati in buona forma su Linux, ma occasionalmente possono esserci alcuni strani comportamenti del core P/E insieme alla ricerca senza fine di Intel per ottimizzare ulteriormente le loro prestazioni sotto Linux.
Il pull dello scheduler aggiunge anche una nuova funzione di potenziamento eseguibile per Energy Aware Scheduling (EAS) per considerare la contesa della CPU nella frequenza, l’utilizzo massimo di EAS e la selezione della CPU più trafficata per il bilanciamento del carico. A sua volta, questo potenziamento eseguibile può migliorare l’utilizzo della CPU per determinati carichi di lavoro.