- 1 General package details
- 2 Installation options
- 3 How to enable the BFQ I/O Scheduler
- 4 More about MuQSS
- 5 Troubleshooting
- 6 See also
General package details
AUR and in the unofficial repo-ck repository that allows users to run a kernel and headers setup patched with Con Kolivas' ck patchset, including a CPU scheduler named MuQSS (Multiple Queue Skiplist Scheduler, pronounced mux) which replaces Brain Fuck Scheduler (BFS), his previous work. Many Arch Linux users choose this kernel for its excellent desktop interactivity and responsiveness under any load situation.AUR is a package available both in
CK patchset is designed for desktop/laptop use but not for servers. It provides low latency environment and works well for 16 CPUs or fewer.
Linux-ck roughly follows the release cycle of the official Arch kernel but not only. The following are requirements for a new package release:
- CK patchset compatible with the current kernel version
- corresponding Arch kernel must be in existence otherwise it will break other packages i.e. nvidia. See git.archlinux.org for the official package
Long-Term Support (LTS) CK releases
In addition to theAUR package, there are LTS kernel releases patched with the above patchsets as well and with the previously mentioned modifications:
- AUR - The current Arch Linux LTS kernel patched with the CK patchset
Users have two options to get these kernel packages.
Compile the package from source
The AUR contains entries for both packages mentioned above.
Users can further customize the linux-ck package via tweaks contained in the PKGBUILD:
- Optional nconfig for user specific tweaking.
- Option to compile a minimal set of modules via a make localmodconfig.
- Option to bypass the standard Arch config options and simply use the current kernel configuration file.
- Optionally set the BFQ I/O scheduler as default.
More details about these options are provided in the PKGBUILD itself. Be sure to read them carefully if compiling from AUR!
Use pre-compiled packages
How to enable the BFQ I/O Scheduler
See the Improving performance#Input/output schedulers section for some background about the different IO schedulers and how to activate BFQ.
More about MuQSS
See the LKML announcement posted by CK.
Check if MuQSS is enabled
This start-up message should appear in the kernel ring buffer when MuQSS in enabled:
$ dmesg | grep -i muqss ... MuQSS CPU scheduler v0.120 by Con Kolivas.
MuQSS patched kernels and systemd
It is a common mistake to think that MuQSS does not support cgroups. It does but not all the cgroup features (e.g. CPU limiting will not work).
Silencing psi: task underflow message
In response to this, some users may notice psi: task underflow! in dmesg/journalctl output. With the release of 4.20.0-3-ck1, is compiled in but disabled by default. Users wanting PSI enabled should boot with the following kernel parameter on their respective bootloader config: psi=1
Running VirtualBox with Linux-ck
VirtualBox works just fine with custom kernels such as Linux-ck without the need to keep any of the official Arch kernel headers package on the system.
Do not forget to add users to the vboxusers group:
# gpasswd -a USERNAME vboxusers
Use the unofficial repo (recommended if Linux-ck is installed from Repo-ck)
See the Unofficial user repositories/Repo-ck to set up it correctly.
Install virtualbox with the virtualbox-host-dkms package. Then setup DKMS as follows:
# pacman -S virtualbox virtualbox-host-dkms
CPUACCT missing in docker
In newer versions of Linux-ck (some experienced with 4.19, 4.20 seems general), a change to the MuQSS was made that disables the
CONFIG_CGROUP_CPUACCT option from the kernel, which makes some usage of docker (
build) to produce the following error:
$ docker run --rm hello-world
docker: Error response from daemon: unable to find "cpuacct" in controller set: unknown.
This error does not seems to affect the docker daemon, just containers. This is due a change where the
CONFIG_CGROUP_CPUACCT kernel option is incompatible with
SCHED_MUQSS when the last is set to
Y, as seen in a recent commit in ck's repository:
@@ -896,6 +913,7 @@ config CGROUP_DEVICE config CGROUP_CPUACCT bool "Simple CPU accounting controller" + depends on !SCHED_MUQSS help Provides a simple controller for monitoring the total CPU consumed by the tasks in a cgroup.
Fixing missed cgroups
To fix the missing cgroups error, update your this PR for more details.to version 1.2.5 or above. See
Users wishing to downgrade to a previous version of Linux-ck, have several options:
- Source archives are available dating back to linux-ck-3.3.7-1.
- AUR.git holds AUR git commits for Linux-ck, dating back to linux-ck-126.96.36.199-1.
Always feel free to open a thread in the forums for support purpose. Be sure to give the thread a descriptive title to draw attention to the fact that the post relates to the Linux-ck package.
There is also an official thread for Linux-ck.