Experimental sched_ext support for Ubuntu is provided by the following launchpad project:
https://launchpad.net/~arighi/+archive/ubuntu/sched-ext
Currently, only the 24.04 release is supported. You can upgrade to 24.04 using the following command:
$ sudo do-release-upgrade -d
$ sudo add-apt-repository -y --enable-source ppa:arighi/sched-ext
$ sudo apt install -y linux-generic-wip scx
$ sudo reboot
After the reboot, the scheduler binaries in /usr/sbin/scx_*
should be usable.
Note: they must be called with sudo
like other BPF programs e.g. sudo scx_simple
.
$ apt source scx
$ sudo apt build-dep scx
Import the gpg key. This can be skipped if the signature checking is disabled.
$ sudo pacman-key --recv-keys F3B607488DB35A47 --keyserver keyserver.ubuntu.com
$ sudo pacman-key --lsign-key F3B607488DB35A47
If you haven't imported the GPG key, append the following line.
SigLevel = Never
Install packages with a list of mirrors and GPG keys
$ sudo pacman -U 'https://mirror.cachyos.org/repo/x86_64/cachyos/cachyos-keyring-20240331-1-any.pkg.tar.zst' 'https://mirror.cachyos.org/repo/x86_64/cachyos/cachyos-mirrorlist-18-1-any.pkg.tar.zst'
Add the following custom repository section to /etc/pacman.conf
.
# cachyos repos
[cachyos]
Include = /etc/pacman.d/cachyos-mirrorlist
$ sudo pacman -Sy cachyos/linux-sched-ext cachyos/linux-sched-ext-headers cachyos/scx-scheds
/boot/vmlinuz-linux-sched-ext
along with
the matching initramfs. Update the bootloader configuration to add the boot
entry for the new kernel.
In addition to the packages from the previous step, install the following.
$ sudo pacman -Sy meson cargo bpf pahole
CachyOS does provide a kernel with an unstripped vmlinux, which can be used for debugging.
$ sudo pacman -Sy linux-cachyos-sched-ext-debug linux-cachyos-sched-ext-debug-headers
Make sure you build the kernel with the right configuration, installation should be easy:
echo 'sys-kernel/scx ~amd64' >> /etc/portage/package.accept_keywords
emerge sys-kernel/scx ~amd64
CachyOS provides a community-maintained copr repository for CachyOS kernels which has sched-ext support.
$ sudo dnf copr enable bieszczaders/kernel-cachyos
$ sudo dnf install kernel-cachyos kernel-cachyos-devel-matched
$ sudo setsebool -P domain_kernel_load_modules on # Necessary for loading kernel modules
$ sudo reboot
The schedulers package is hosted in another copr also maintained by the CachyOS community.
$ sudo dnf copr enable bieszczaders/kernel-cachyos-addons
$ sudo dnf install scx-scheds
Alternatively, we also provide a -git
package that is synced daily to match the upstream repository.
No additional steps needed here other than what is mentioned in the main README.md.
Chaotic Nyx is maintaining the linux-cachyos kernel and scx-scheds package in a flake.
{
description = "My configuration";
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
chaotic.url = "github:chaotic-cx/nyx/nyxpkgs-unstable";
};
outputs = { nixpkgs, chaotic, ... }: {
nixosConfigurations = {
hostname = nixpkgs.lib.nixosSystem {
system = "x86_64-linux";
modules = [
./configuration.nix # Your system configuration.
chaotic.nixosModules.default # OUR DEFAULT MODULE
];
};
};
};
}
{
boot.kernelPackages = pkgs.linuxPackages_cachyos;
environment.systemPackages = [ pkgs.scx ];
}
Then install the package and reboot your system. After you can use all provided example schedulers.
Experimental sched_ext support for openSUSE Tumbleweed is provided by the following OBS project:
https://build.opensuse.org/project/show/home:flonnegren:sched-ext
Add the home:flonnegren:sched-ext repository using:
$ sudo zypper addrepo --name sched-ext --refresh --enable https://download.opensuse.org/repositories/home:flonnegren:sched-ext/standard/home:flonnegren:sched-ext.repo
$ sudo zypper refresh
$ sudo zypper install --repo sched-ext --force kernel-default
$ sudo reboot
Then the new kernel should be booted by default.
All schedulers are provided in the scx package
Example:
$ sudo zypper install scx
$ sudo scx_rusty
No additional steps needed here other than what is mentioned in the main README.md.