# Rust-ificazione del pianificatore del kernel Linux > [! nota]- > Il contenuto di questa pagina è generato dalla trascrizione audio/video e dalla trasformazione del testo dal contenuto e dai link di questa fonte. Fonte: [https://fosdem.org/2025/schedule/event/fosdem-2025-4620-rust-ifying-the-linux-kernel-scheduler-in-user-space-/](https://fosdem.org/2025/schedule/event/fosdem-2025-4620-rust-ifying-the-linux-kernel-scheduler-in-user-space-/) <video src=“https://video.fosdem.org/2025/ub2252a/fosdem-2025-4620-rust-ifying-the-linux-kernel-scheduler-in-user-space-.av1.webm” controls></video> ## Riepilogo e punti salienti: Questo evento esplora come Rust, sched_ext e BPF possano essere utilizzati per creare pianificatori del kernel personalizzati in user space. **Introduzione alla Schedulazione** Il cuore delle prestazioni di un sistema operativo risiede nel pianificatore della CPU, responsabile della gestione dell'esecuzione dei compiti. Tradizionalmente, la personalizzazione delle politiche di schedulazione è stata riservata a pochi sviluppatori esperti del kernel. **Rust e sched_ext** Con l'uso di sched_ext e BPF, è possibile sviluppare pianificatori dinamici specializzati che possono essere caricati e gestiti come programmi in user space, rendendo la sperimentazione più accessibile. **Implementazione e Vantaggi** L'implementazione di un pianificatore in Rust consente di sfruttare librerie e linguaggi user space, offrendo un ambiente di sviluppo più flessibile e sicuro, senza la necessità di ricompilare il kernel. **Conclusioni e Prospettive Future** La possibilità di creare pianificatori personalizzati in user space apre nuove opportunità per ottimizzare le prestazioni del sistema per carichi di lavoro specifici, contribuendo a una trasformazione eco-sociale attraverso un uso più efficiente delle risorse. ## Significato per una trasformazione eco-sociale Questo sviluppo consente una gestione più efficiente delle risorse di sistema, contribuendo a una trasformazione eco-sociale. La possibilità di personalizzare i pianificatori del kernel in base a specifiche esigenze di carico di lavoro può portare a un uso più sostenibile delle risorse computazionali, riducendo il consumo energetico. Per i designer eco-sociali, strumenti come sched_ext e BPF offrono piattaforme per sperimentare nuove politiche di schedulazione che potrebbero migliorare l'efficienza energetica. Tuttavia, ci sono sfide tecniche e sociali, come la necessità di competenze specialistiche e la resistenza al cambiamento nei processi consolidati. ## Slides: | | | | --- | --- | | ![[FOSDEM 2025/assets/Rustifying-the-Linux-kernel-scheduler-in-user-spac/preview_001.jpg\|300]] | La prima diapositiva introduce il tema della 'Rust-ificazione' del pianificatore del kernel Linux, con l'obiettivo di spostare la logica di schedulazione nel user space, utilizzando Rust. Andrea Righi presenta l'idea di utilizzare Rust per migliorare la flessibilità e la sicurezza della schedulazione. | ![[FOSDEM 2025/assets/Rustifying-the-Linux-kernel-scheduler-in-user-spac/preview_002.jpg\|300]] | L'agenda della presentazione copre i concetti di base della schedulazione, l'uso di sched_ext e BPF, l'implementazione di un pianificatore Linux in Rust e le conclusioni. Questi punti forniscono una struttura chiara per comprendere come Rust possa essere utilizzato per migliorare la gestione dei compiti nel kernel. | ![[FOSDEM 2025/assets/Rustifying-the-Linux-kernel-scheduler-in-user-spac/preview_003.jpg\|300]] | La diapositiva si concentra sulla schedulazione, spiegando l'importanza di un pianificatore nel determinare dove, quando e per quanto tempo un compito deve essere eseguito. Sottolinea le sfide nel creare un pianificatore che funzioni efficacemente su diverse architetture e carichi di lavoro. | ![[FOSDEM 2025/assets/Rustifying-the-Linux-kernel-scheduler-in-user-spac/preview_004.jpg\|300]] | Un pianificatore è una componente del kernel che decide dove, quando e per quanto tempo ogni compito deve essere eseguito. Sebbene sembri semplice concettualmente, la sua implementazione è complessa a causa delle diverse architetture e dei carichi di lavoro. | ![[FOSDEM 2025/assets/Rustifying-the-Linux-kernel-scheduler-in-user-spac/preview_005.jpg\|300]] | Le sfide della schedulazione includono garantire l'equità, ottimizzare l'uso delle risorse di sistema, mantenere un basso overhead e generalizzare per funzionare su tutte le architetture e carichi di lavoro. Questi aspetti complicano la progettazione di un pianificatore universale. | ![[FOSDEM 2025/assets/Rustifying-the-Linux-kernel-scheduler-in-user-spac/preview_006.jpg\|300]] | In Linux, la politica è di mantenere un unico pianificatore per tutti. Questo rende difficile condurre esperimenti e apportare modifiche upstream, poiché richiede di patchare il kernel, ricompilarlo e riavviare il sistema. | ![[FOSDEM 2025/assets/Rustifying-the-Linux-kernel-scheduler-in-user-spac/preview_007.jpg\|300]] | Introduzione a sched_ext e BPF, due tecnologie che consentono di implementare politiche di schedulazione come programmi BPF, facilitando la sperimentazione rapida e sicura senza rischiare di compromettere il kernel. | ![[FOSDEM 2025/assets/Rustifying-the-Linux-kernel-scheduler-in-user-spac/preview_008.jpg\|300]] | sched_ext è una classe di schedulazione estensibile nel kernel Linux che permette di implementare politiche di schedulazione come programmi BPF. Introdotta nella versione 6.12, offre politiche di schedulazione su misura, sperimentazione rapida e sicurezza. | ![[FOSDEM 2025/assets/Rustifying-the-Linux-kernel-scheduler-in-user-spac/preview_009.jpg\|300]] | La diapositiva spiega il funzionamento di sched_ext, che utilizza BPF per reindirizzare i callback del pianificatore a programmi BPF, consentendo di scrivere politiche di schedulazione personalizzate. | ![[FOSDEM 2025/assets/Rustifying-the-Linux-kernel-scheduler-in-user-spac/preview_010.jpg\|300]] | Le limitazioni di sched_ext includono un modello di programmazione limitato, la complessità del verificatore BPF e le restrizioni del kernel, come l'impossibilità di utilizzare librerie user-space o il floating point. | ![[FOSDEM 2025/assets/Rustifying-the-Linux-kernel-scheduler-in-user-spac/preview_011.jpg\|300]] | Implementazione di un pianificatore Linux in Rust, sfruttando sched_ext e BPF per spostare la logica di schedulazione nel user space, migliorando la flessibilità e l'accesso a librerie user-space. | ![[FOSDEM 2025/assets/Rustifying-the-Linux-kernel-scheduler-in-user-spac/preview_012.jpg\|300]] | L'idea è di utilizzare sched_ext e BPF per canalizzare gli eventi di schedulazione nel user space, dove vengono prese tutte le decisioni di schedulazione. Questo approccio semplifica la complessità, consentendo l'accesso a librerie e linguaggi user-space. | ![[FOSDEM 2025/assets/Rustifying-the-Linux-kernel-scheduler-in-user-spac/preview_013.jpg\|300]] | Progettazione di un pianificatore Rust in user space, che sfrutta sched_ext per gestire gli eventi di schedulazione e prendere decisioni nel user space, migliorando la flessibilità e la capacità di sperimentazione. | ![[FOSDEM 2025/assets/Rustifying-the-Linux-kernel-scheduler-in-user-spac/preview_014.jpg\|300]] | scx_rustland è un pianificatore basato su EDF che valuta le scadenze in base al vruntime del compito e al tasso di cambi di contesto volontari. I compiti ricevono un time slice variabile inversamente proporzionale al numero totale di compiti in attesa. | ![[FOSDEM 2025/assets/Rustifying-the-Linux-kernel-scheduler-in-user-spac/preview_015.jpg\|300]] | Dimostrazione dell'esecuzione di un videogioco, Terraria, mentre si compila il kernel, per mostrare le prestazioni del pianificatore Rustland nel gestire carichi di lavoro intensivi. | ![[FOSDEM 2025/assets/Rustifying-the-Linux-kernel-scheduler-in-user-spac/preview_016.jpg\|300]] | Confronto tra il pianificatore EEVDF e scx_rustland utilizzando lo strumento Perfetto, che mostra come il pianificatore Rustland possa migliorare le prestazioni in scenari di lavoro specifici. | ![[FOSDEM 2025/assets/Rustifying-the-Linux-kernel-scheduler-in-user-spac/preview_017.jpg\|300]] | Generalizzazione della schedulazione Rust in user space con il framework Rustland core, che astrae il backend scx_rustland e espone API di schedulazione generiche, disponibili come crate Rust per implementare facilmente politiche di schedulazione Linux. | ![[FOSDEM 2025/assets/Rustifying-the-Linux-kernel-scheduler-in-user-spac/preview_018.jpg\|300]] | Progettazione di scx_rustland_core, che fornisce un backend astratto per implementare politiche di schedulazione in user space utilizzando Rust, facilitando l'integrazione e la sperimentazione. | ![[FOSDEM 2025/assets/Rustifying-the-Linux-kernel-scheduler-in-user-spac/preview_019.jpg\|300]] | Implementazione di un pianificatore FIFO in scx_rustland_core, dimostrando la semplicità e l'efficacia dell'utilizzo di Rust per sviluppare politiche di schedulazione personalizzate. | ![[FOSDEM 2025/assets/Rustifying-the-Linux-kernel-scheduler-in-user-spac/preview_020.jpg\|300]] | Conclusioni sulla possibilità di utilizzare Rust e sched_ext per migliorare la flessibilità e la sperimentazione nella schedulazione del kernel, evidenziando i vantaggi di un approccio user-space. | ![[FOSDEM 2025/assets/Rustifying-the-Linux-kernel-scheduler-in-user-spac/preview_021.jpg\|300]] | Punti chiave: scx_rustland non è un pianificatore migliore in generale, ma facilita la sperimentazione. Rust non rende la schedulazione più veloce, ma offre un rapido ciclo di modifica/compilazione/test e integrazione con componenti user-space. | ![[FOSDEM 2025/assets/Rustifying-the-Linux-kernel-scheduler-in-user-spac/preview_022.jpg\|300]] | Riferimenti principali per il repository scx e il template del pianificatore Rust, fornendo risorse per approfondire e sperimentare con la tecnologia di schedulazione. | ![[FOSDEM 2025/assets/Rustifying-the-Linux-kernel-scheduler-in-user-spac/preview_023.jpg\|300]] | Sessione di domande con Andrea Righi, dove i partecipanti possono approfondire e chiarire dubbi sulla presentazione e sull'implementazione del pianificatore in Rust. ## Link [Video recording (AV1/WebM)](https://video.fosdem.org/2025/ub2252a/fosdem-2025-4620-rust-ifying-the-linux-kernel-scheduler-in-user-space-.av1.webm) [Video recording (MP4)](https://video.fosdem.org/2025/ub2252a/fosdem-2025-4620-rust-ifying-the-linux-kernel-scheduler-in-user-space-.av1.mp4) [Slides](https://fosdem.org/2025/events/attachments/fosdem-2025-4620-rust-ifying-the-linux-kernel-scheduler-in-user-space-/slides/238238/Rust-ifyi_PRcGR8u.pdf)