Tvrtko Ursulin, della free software consultancy Igalia, ha recentemente inviato una serie di patch come “richiesta di commenti” per lavorare su una policy di pianificazione a scadenza (deadline scheduling) per il DRM scheduler, utilizzato nei diversi driver grafici del kernel Linux basati su Direct Rendering Manager. Il “DRM sched” è un gestore comune nato inizialmente dal codice del pianificatore AMDGPU. Tuttavia, ora è utilizzato anche da Intel e altri driver grafici del kernel.
Dopo discussioni e feedback da parte di altri sviluppatori di driver DRM Linux, Ursulin sta esplorando la possibilità di introdurre una politica di pianificazione a scadenza per il DRM scheduler, valutando anche se potrebbe sostituire il modello attuale basato sul First In First Out (FIFO). Come riportato da Ursulin: “sostituire FIFO con un tipo di pianificazione basata sulle scadenze e rimuovere il round-robin. Collegare lo scheduler con le scadenze DMA-Fence. Una prima bozza e i test con diversi driver e feedback sarebbero carini. Sono riuscito a testarlo solo con amdgpu. Altri driver potrebbero anche non compilare“.
Linux: i vantaggi della deadline scheduling policy
La politica di scadenza per lo scheduler DRM Linux è spiegata dettagliatamente nella patch della policy. Come si legge: “La deadline scheduling policy è una versione più equa del modello FIFO, con due vantaggi principali. Innanzitutto, può collegarsi naturalmente con le scadenze delle dma-fence. In secondo luogo, consente l’utilizzo di più code di esecuzione per ciascun scheduler. Il vantaggio in termini di equità deriva proprio da questo approccio. L’attuale politica FIFO tende a penalizzare le entità a bassa priorità, favorendo quelle a priorità più alta. La deadline scheduling traccia tutte le entità eseguibili in un’unica coda e assegna loro delle scadenze basate sulle priorità. I lavori vengono ordinati in base alle scadenze anziché alle priorità. Ciò consente, ad esempio, a una richiesta di alta priorità di superare una precedente a priorità inferiore. Tuttavia, garantisce comunque che, anche i lavori a bassa priorità vengano eseguiti, evitando che vengano continuamente ignorati“.
In precedenza, si è già discusso di una deadline scheduling policy per la pianificazione DRM dei driver grafici Linux. Tuttavia, sorgono alcuni dubbi sulla qualità di questa implementazione e sulla sua utilità. Come dichiara ancora Ursulin: “Quindi ho giocato un po’ con il codice dello scheduler e ho trovato qualcosa che almeno sembra non bloccarsi. Se ci siano o meno vantaggi significativi a parte forse il consolidamento e la riduzione del codice è la cosa principale da determinare“. Per maggiori dettagli è possibile consultare la serie di patch RFC pubblicata sulla pagina dedicata.