Managing Kernels & Sched-ext with CachyOS Kernel Manager
CachyOS Kernel Manager
The CachyOS Kernel Manager makes it simple to install and manage kernels from the repository. It also provides a comprehensive overview of all installed kernels.
Installing a Kernel from the Repository
To install a kernel, simply launch the CachyOS Kernel Manager application and choose the desired kernel from a list of available options. Then, simply click the “execute” button to complete the installation.
Configuring and Building a Kernel
The CachyOS Kernel Manager also makes it easy to configure and build custom kernels. To get started, simply open the application and click the “configure” button. Then, you can adjust various settings, such as the scheduler, performance governor, tick rate, and more. Once you have made your desired changes, simply click the “execute” button to begin building your custom kernel.
Available configuration options include:
- Custom package name
- Scheduler (sched-ext, BORE, ECHO, RC, RT)
- Enable CachyOS config
- Tweak Configuration via nconfig, menuconfig, xconfig, or gconfig
- Enable/Disable NUMA
- Enable/Disable Modprobed-db
- KBUILD CFLAGS (-O3 or -O2)
- Performance governor as default
- Enable BBR3
- Tick rate selection (100Hz, 250Hz, 300Hz, 500Hz, 600Hz, 750Hz, 1000Hz)
- Tickless mode (idle, periodic, full)
- Preemption (Full, Voluntary or Server)
- Transparent Hugepages (Always or Madvise)
- Enable/Disable DAMON
- Enable/Disable Automatic CPU arch detection
- Apply kernel optimization for specific CPU architectures
- Enable LTO (Full, Thin, No)
- Build ZFS Module
- Build NVIDIA Closed Module
- Build NVIDIA Open Module
- Include vmlinux with debug information/symbols
- Load/Save Kernel Manager config preset
- Kernel Patches Management (Remote and Local support)
Once the kernel is built, it will be installed automatically. You can find the package in $HOME/.cache/cachyos-km
.
Sched-ext GUI
The Kernel Manager also offers a GUI for managing and controlling the sched-ext schedulers on the sched-ext scheduler config button.
You can switch between the different scx schedulers, enable the service and check which scheduler is currently running, set schedulers flags and a profile. Currently only bpfland and lavd have support for profiles.
What are those “profiles” for?
Basically they’re presets for the scheduler by modifying their flags from (Already tested & proven) combinations in order to achieve more effectiveness in said use case e.g “Gaming”.
Scheduler Profiles
Bpfland
-
Low Latency: As the name implies, this profile is meant to be used when latency is critical. Enabling this option can be beneficial in soft real-time scenarios, such as audio processing, multimedia etc.
-
Gaming: Bpfland is going to try it’s best to achieve the highest performance on the game and if you’re in a Intel CPU with a mix of P/E Cores then it will prioritize P Cores over E Cores, same goes for Ryzen X3D CPUs and their CCD with stacked L3 X3D cache.
-
Power Save: In order to achieve more savings in power consumption, Bpfland will adjust itself to prioritize less performant cores such as E Cores on Intel meaning the P cores are going to be avoided when possible.
LAVD
-
Power Save: The primary goal of this profile is to save power consumption while providing reasonable performance. It tries to use the minimum number of cores serving the compute demand. Notably, hybrid processor architectures (e.g., P/E cores in Intel Alder Lake or big/LITTLE cores in ARM) choose energy-efficient cores (E or LITTLE cores) to save energy. Similarly, when hyper-threading is enabled, the scheduler prefers using hyper-threads to minimize the number of physical cores and power consumption. The power saving profile will be useful when your laptop’s battery is low or if u want to reduce power usage when performance is not a priority.
-
Gaming & Low Latency: LAVD aims to maximize performance without taking in consideration power consumption. With the performance profile, LAVD always utilizes all the cores while still preferring to schedule tasks on performant, physical cores over energy-efficient, hyper-twin cores. Also, when the sched_util scaling governor is used, LAVD lies to the underlying CPU driver, stating that the workload requires maximum performance no matter the demand.
List of flags used in the profiles:
Bpfland
- Low Latency:
--lowlatency
- Gaming:
-k -m performance
- Power Save:
-m powersave
LAVD
- Low Latency:
--performance
- Gaming:
--performance
- Power Save:
--powersave