Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

scx_rustlite: simple vtime-based scheduler written in Rust #38

Merged
merged 1 commit into from
Dec 21, 2023

Commits on Dec 21, 2023

  1. scx_rustlite: simple user-space scheduler written in Rust

    This scheduler is made of a BPF component (dispatcher) that implements
    the low level sched-ext functionalities and a user-space counterpart
    (scheduler), written in Rust, that implements the actual scheduling
    policy.
    
    The main goal of this scheduler is to be easy to read and well
    documented, so that newcomers (i.e., students, researchers, junior devs,
    etc.) can use this as a template to quickly experiment scheduling
    theory.
    
    For this reason the design of this scheduler is mostly focused on
    simplicity and code readability.
    
    Moreover, the BPF dispatcher is completely agnostic of the particular
    scheduling policy implemented by the user-space scheduler. For this
    reason developers that are willing to use this scheduler to experiment
    scheduling policies should be able to simply modify the Rust component,
    without having to deal with any internal kernel / BPF details.
    
    Future improvements:
    
     - Transfer the responsibility of determining the CPU for executing a
       particular task to the user-space scheduler.
    
       Right now this logic is still fully implemented in the BPF part and
       the user-space scheduler can only decide the order of execution of
       the tasks, that significantly restricts the scheduling policies that
       can be implemented in the user-space scheduler.
    
     - Experiment the possibility to send tasks from the user-space
       scheduler to the BPF dispatcher using a batch size, instead of
       draining the task queue completely and sending all the tasks at once
       every single time.
    
       A batch size should help to reduce the overhead and it should also
       help to reduce the wakeups of the user-space scheduler.
    
    Signed-off-by: Andrea Righi <[email protected]>
    Andrea Righi committed Dec 21, 2023
    Configuration menu
    Copy the full SHA
    086c6df View commit details
    Browse the repository at this point in the history