From ArchWiki
Revision as of 09:49, 29 October 2016 by Graysky (talk | contribs) (More about MuQSS: typo)
Jump to navigation Jump to search


General package details

Linux-ckAUR is a package available in the AUR and in the unofficial linux-ck repo that allows users to run a kernel/headers setup patched with Con Kolivas' ck patchset, including MuQSS (Multiple Queue Skiplist Scheduler) which is pronounced "mux" and has replaced the legacy Brain Fuck Scheduler (BFS). Many Archers elect to use this package for its excellent desktop interactivity and responsiveness under any load situation.

Release cycle

Linux-ck roughly follows the release cycle of the official ARCH kernel. The following are requirements for its release:

  • Corresponding ARCH kernel base must be in [core] or else the corresponding modules such as nvidia, nvidia-304xx, nvidia-340xx, and vbox will not be available to users and will cause version conflicts.
  • CK's patchset.

Package defaults

There are three modifications to the config files:

  1. The options that the ck patchset enable/disable.
  2. The tickrate is set to 100 Hz (CK's recommendation).
  3. The extra CPU types optionally available to compile thanks to the GCC patch.

All other options are set to the ARCH defaults outlined in the main kernel's config files. Users are of course free to modify them! The linux-ck package contains an option to switch on the nconfig config editor (see section below).

Long-Term Support (LTS) CK releases

In addition to the linux-ck package, there are the following LTS kernel releases patched with the above patchsets, with the previously mentioned modifications to the config files:

  • linux-lts-ckAUR - The current ArchLinux LTS kernel patched with the CK patchset
  • linux-lts310-ckAUR - The 3.10 LTS kernel patched with the CK patchset
  • linux-lts312-ckAUR - The 3.12 LTS kernel patched with the CK patchset

These three packages are maintained by clfarron4. Pre-packaged versions will not be found in the unofficial ck repo.

Installation options

Note: As with any additional kernel, users will need to manually update their boot loader's config file to make it aware of the new kernel images. For GRUB, see GRUB#Generate the main configuration file. For other boot loaders it may be necessary to add a custom entry.

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 customize the linux-ck package via tweaks 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's .config file.
  • Optionally set the BFQ I/O scheduler as default.

More details about these options are provided in the PKGBUILD itself via line comments. Be sure to read them if compiling from the AUR!

Note: There are related PKGBUILDs in the AUR for other common modules unique to linux-ck. For example nvidia-ckAUR, nvidia-304xx-ckAUR, nvidia-340xx-ckAUR, and broadcom-wl-ckAUR to name a few.

Use pre-compiled packages

If users would rather not spend the time to compile on their own, an unofficial repo maintained by graysky is available to the community. For details, see: Repo-ck.

How to enable the BFQ I/O Scheduler

Note: Do not confuse MuQSS (Multiple Queue Skiplist Scheduler) with BFQ (Budget Fair Queueing). MuQSS is a CPU scheduler and is enabled by default whereas BFQ is an I/O scheduler and must explicitly be enabled in order to use it.

Budget Fair Queueing is a disk scheduler which allows each process/thread to be assigned a portion of the disk throughput. Its creator has released results of many benchmarks (results and video) which shows some pretty amazing latency performance.

Due to CK's patchset, BFQ is built into linux-ck, but the scheduler must be enabled manually. Users have several options to do so.

Enable BFQ for all devices

If compiling from the AUR, simply set the BFQ flag to "y" in the PKGBUILD prior to building


Users of repo-ck or those who have not modified the PKGBUILD prior to building may appened elevator=bfq to the kernel parameters.

Enable BFQ for only specified devices

An alternative method is to direct the kernel to use BFQ on a device-by-device basis. For example, to enable it for /dev/sda simply:

# echo bfq > /sys/block/sda/queue/scheduler

To confirm:

# cat /sys/block/sda/queue/scheduler
noop deadline cfq [bfq] 

Note that doing it this way will not survive a reboot. To make the change automatically at the next system boot, create the following tmpfile where sdX is the desired device:

w /sys/block/sdX/queue/scheduler - - - - bfq


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 packages 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)

Note: As of 17-Oct-2012, Repo-ck users can enjoy these modules as pre-compiled packages in the repo itself. If you built your linux-ck from the AUR you cannot use the repo as all packages in the repo are matched groups.

See the Repo-ck article to set up for pacman to use directly.

The virtualbox-ck-host-modules package (recommended if linux-ck is built by you from the AUR)

Install the virtualbox-ck-host-modulesAUR package and then install virtualbox package.

Use DKMS (more complicated, recommended with LTS releases)

Install virtualbox with the virtualbox-host-dkms package. Then setup dkms as follows:

# pacman -S virtualbox virtualbox-host-dkms
# dkms install vboxhost/4.3.12
Note: Make sure to substitute the correct version number of virtualbox in the second command. At the time of writing, 4.3.12 is current.


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-

Forum support

Always feel free to open a thread in the forums for support. Be sure to give the thread a descriptive title to draw attention to the fact that the post relates to the Linux- ck package.

More about MuQSS

See the LKML announcement posted by CK.

Check if 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.

BFS myths

BFS patched kernels CAN in fact use systemd

It is a common mistake to think that BFS does not support cgroups. It does support cgroups, just not all the cgroup features (e. g. CPU limiting will not work).

Further Reading on BFS and CK Patchset