scx-upstream/INSTALL.md
Fredrik Lönnegren 888172f432
Add openSUSE installation notes
Adds a section how to install scx and sched-ext patched kernel on
openSUSE Tumbleweed.

Signed-off-by: Fredrik Lönnegren <fredrik.lonnegren@suse.com>
2024-05-24 14:50:26 +02:00

5.2 KiB

Install Instructions by Distro

Ubuntu

Experimental sched_ext support for Ubuntu is provided by the following launchpad project:

https://launchpad.net/~arighi/+archive/ubuntu/sched-ext

Upgrading to 24.04 (NobleNumbat)

Currently, only the 24.04 release is supported. You can upgrade to 24.04 using the following command:

$ sudo do-release-upgrade -d

Installing the Kernel and Schedulers

$ 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.

Setting up Dev Environment

$ apt source scx
$ sudo apt build-dep scx

Arch Linux

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

Adding the Repository

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

Installing the Kernel and Schedulers

$ sudo pacman -Sy cachyos/linux-sched-ext cachyos/linux-sched-ext-headers cachyos/scx-scheds

⚠️ The kernel installs as /boot/vmlinuz-linux-sched-ext along with the matching initramfs. Update the bootloader configuration to add the boot entry for the new kernel.

Setting Up Dev Environment

In addition to the packages from the previous step, install the following.

$ sudo pacman -Sy meson cargo bpf pahole

Using Debug Kernel

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

Fedora

Experimental sched_ext support for Fedora is provided by the following copr project:

https://copr.fedorainfracloud.org/coprs/jordalgo/fedora-6.8-sched_ext/

Installing the Kernel

$ sudo dnf copr enable jordalgo/fedora-6.8-sched_ext
$ sudo dnf --disablerepo="*" --enablerepo="copr:copr.fedorainfracloud.org:jordalgo:fedora-6.8-sched_ext" upgrade kernel
$ sudo reboot

Then select the kernel containing the name "schedext".

Installing the Schedulers

Example:

$ sudo dnf install scx_rusty
$ sudo scx_rusty
$ sudo dnf install scx_c_schedulers
$ sudo scx_simple

Setting up Dev Environment

No additional steps needed here other than what is mentioned in the main README.md.

Nix

(Chaotic Nyx)[https://github.com/chaotic-cx/nyx] is maintaining the linux-cachyos kernel and scx-scheds package in a flake.

Integrate the repository using 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
        ];
      };
    };
  };
}

Add this to your configuration to install the kernel


{
  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.

openSUSE Tumbleweed

Experimental sched_ext support for openSUSE Tumbleweed is provided by the following OBS project:

https://build.opensuse.org/project/show/home:flonnegren:sched-ext

Adding the Repository

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

Installing the Kernel

$ sudo zypper install --repo sched-ext --force kernel-default-base
$ sudo reboot

Then the new kernel should be booted by default.

Installing the Schedulers

All schedulers are provided in the scx package

Example:

$ sudo zypper install scx
$ sudo scx_rusty

Setting up Dev Environment

No additional steps needed here other than what is mentioned in the main README.md.