Linux prova Infinity Scheduler per migliorare la gestione della CPU

Infinity Scheduler punta a rendere Linux più reattivo sotto carico, dando priorità ai processi interattivi e limitando quelli che consumano CPU senza pause.
Linux prova Infinity Scheduler per migliorare la gestione della CPU

Un computer può avere una CPU potente e, allo stesso tempo, sembrare meno reattivo del previsto. Succede quando troppi processi in esecuzione chiedono attenzione nello stesso momento: il browser con molte schede aperte, una videochiamata, l’ambiente grafico, un rendering in corso, magari anche un gioco o un’applicazione pesante. In questi casi il problema non è solo “quanta potenza” c’è a disposizione, ma come il sistema operativo decide a chi concederla. Su Linux il nuovo Infinity Scheduler prova a intervenire proprio su questo punto.

L’obiettivo è rendere qualunque distribuzione Linux più pronta nelle situazioni reali: se un programma sta occupando la CPU senza sosta, Infinity Scheduler tende a ridurne progressivamente il turno di esecuzione; se invece un’applicazione si risveglia per rispondere a un input dell’utente, a un evento audio o a una breve operazione interattiva, prova a darle la precedenza. In pratica, lo scheduler cerca di distinguere chi sta “macinando risorse” da chi deve rispondere subito.

Perché lo scheduler conta così tanto su Linux e sugli altri sistemi

Lo scheduler è una di quelle parti del sistema operativo che l’utente non vede mai, ma che lavora in continuazione “dietro le quinte”.

Quando il mouse scatta mentre il computer sta svolgendo un’attività pesante, quando l’audio gracchia sotto carico, quando una finestra risponde in ritardo, spesso il problema non dipende da una singola applicazione. Dipende dal modo in cui il sistema distribuisce il tempo CPU tra decine o centinaia di thread.

Una CPU moderna cambia attività migliaia di volte al secondo: ogni processo riceve un turno, poi cede spazio a un altro. L’aspetto cruciale consiste nel decidere quanto deve durare quel turno e quale processo deve subentrare. Un’applicazione che comprime file, compila codice o esegue un calcolo pesante può appesantire la CPU per lunghi periodi. Un’applicazione interattiva, invece, spesso resta dormiente e si risveglia solo per pochi istanti: un clic, un input da tastiera, un pacchetto di rete, un buffer audio da riempire.

Se il sistema tratta questi comportamenti in modo troppo simile, l’esperienza peggiora. Il computer continua a lavorare, ma l’utente percepisce un ritardo evidente.

Che cosa cambia rispetto agli altri scheduler Linux

Per anni Linux si è affidato in larga parte a CFS (Completely Fair Scheduler), scheduler pensato per distribuire il tempo della CPU in modo equo tra i processi. Poi il kernel ha iniziato ad adottare EEVDF (Earliest eligible virtual deadline first scheduling), con una logica più attenta alle scadenze virtuali e alla latenza.

Parallelamente, sched_ext (recentemente oggetto di critiche piovute direttamente da Linus Torvalds per via della struttura dei sorgenti) ha aperto la strada agli scheduler sperimentali basati su BPF. Con Infinity Scheduler si sceglie una direzione diversa con alcune modifiche incentrate sul kernel Linux.

Il nuovo scheduler non si limita a osservare Linux dall’esterno: agisce direttamente nei meccanismi con cui il sistema aggiorna il tempo di esecuzione dei processi, i risvegli delle attività sospese, le code dei task pronti a partire e le priorità assegnate nel tempo.

Il meccanismo centrale di Infinity Scheduler usa una media mobile esponenziale: il kernel tiene conto del comportamento recente di ogni processo. Se un task usa la CPU in modo continuo, il suo valore cresce; se resta spesso in attesa e si sveglia solo per brevi operazioni, quel valore resta più basso.

L’informazione è utile per adattare il turno di esecuzione: i task più pesanti possono vedere ridotta la loro finestra d’uso della CPU fino a un limite di 400 microsecondi. È un valore molto basso, ma non significa che quei processi ne risultino bloccati; la conseguenza, piuttosto, è questi stessi processi siano chiamati a cedere il processore più spesso, lasciando spazio ai task che hanno bisogno di una risposta immediata.

Una buona idea, ma non ancora una scelta per tutti

Infinity Scheduler mira a migliorare le prestazioni dei sistemi Linux e a far apparire più pronto il sistema quando l’utente ha davvero la necessità di interagirvi.

L’approccio proposto è senza dubbio molto interessante ma non va sottovalutato che Infinity modifica parti sensibili del kernel e deve ancora dimostrare, con test indipendenti, di migliorare abbastanza situazioni reali senza creare regressioni altrove.

Per ora conviene considerarlo come un progetto da seguire con attenzione, soprattutto per chi compila kernel personalizzati, sperimenta distribuzioni ottimizzate o lavora sulla latenza desktop. Non è ancora il tipo di modifica da consigliare a chi vuole soltanto un sistema stabile e prevedibile.

Ti consigliamo anche

Link copiato negli appunti