Announcing an updated stable version of the Multiple Queue Skiplist Scheduler,
the successor to BFS, version 0.150 for linux-4.9.
Download:
http://ck.kolivas.org/patches/muqss/4.0/4.9/4.9-sched-MuQSS_150.patch
Git tree:
https://github.com/ckolivas/linux/tree/4.9-muqss
---
Patch summary:
The MuQSS (Multiple Queue Skiplist Scheduler - pronounced mux) v0.150 by
Con Kolivas.
This is a multiple runqueue skiplist evolution of the Brain Fuck Scheduler,
designed to provide excellent latency, throughput and scalability to any
number of CPUs, with primary emphasis on latency for interactivity and
responsiveness.
A multiple runqueue strict fairness earliest effective virtual deadline first
design.
Runqueue insertion is O(log(n)), lookup is O(1), removal is amortised O(1).
Interactive mode is enabled by default but can be disabled for improved
throughput at the expense of deterministic low latency.
echo 0 > /proc/sys/kernel/interactive
Features SCHED_IDLEPRIO and SCHED_ISO scheduling policies as well.
You do NOT need to use these policies for good performance, they are purely
optional for even better performance in extreme conditions.
To run something idleprio, use schedtool like so:
schedtool -D -e make -j4
To run something isoprio, use schedtool like so:
schedtool -I -e amarok
Includes configurable SMT-nice support for better nice level and scheduling
policy support across SMT (aka hyperthread) sibling CPUs.
Includes accurate sub-tick accounting of tasks so userspace reported
cpu usage may be very different if you have very short lived tasks.
-ck
>From 0ce996c80e2c547e8bc9cfb23f028d80f34a5210 Mon Sep 17 00:00:00 2001
From: Con Kolivas <[email protected]>
Date: Sat, 10 Dec 2016 13:37:55 +1100
Subject: [PATCH 01/19] Multiple Queue Skiplist Scheduler version 0.15
---
Documentation/scheduler/sched-BFS.txt | 351 ++
Documentation/scheduler/sched-MuQSS.txt | 345 ++
Documentation/sysctl/kernel.txt | 37 +
arch/powerpc/platforms/cell/spufs/sched.c | 5 -
arch/x86/Kconfig | 18 +-
fs/proc/base.c | 2 +-
include/linux/init_task.h | 76 +-
include/linux/ioprio.h | 2 +
include/linux/sched.h | 69 +-
include/linux/sched/prio.h | 12 +
include/linux/skip_list.h | 33 +
include/uapi/linux/sched.h | 9 +-
init/Kconfig | 25 +-
init/main.c | 3 +-
kernel/Makefile | 2 +-
kernel/delayacct.c | 2 +-
kernel/exit.c | 2 +-
kernel/kthread.c | 30 +-
kernel/sched/Makefile | 13 +-
kernel/sched/MuQSS.c | 8033 ++++++++++++++++++++++++++++
+
kernel/sched/MuQSS.h | 348 ++
kernel/sched/cpufreq.c | 4 +
kernel/sched/cpufreq_schedutil.c | 16 +
kernel/sched/cputime.c | 27 +-
kernel/sched/idle.c | 14 +-
kernel/sched/sched.h | 25 +
kernel/sched/stats.c | 4 +
kernel/skip_list.c | 148 +
kernel/sysctl.c | 52 +-
kernel/time/clockevents.c | 5 +
kernel/time/posix-cpu-timers.c | 10 +-
kernel/time/timer.c | 7 +-
kernel/trace/trace_selftest.c | 5 +
33 files changed, 9670 insertions(+), 64 deletions(-)
create mode 100644 Documentation/scheduler/sched-BFS.txt
create mode 100644 Documentation/scheduler/sched-MuQSS.txt
create mode 100644 include/linux/skip_list.h
create mode 100644 kernel/sched/MuQSS.c
create mode 100644 kernel/sched/MuQSS.h
create mode 100644 kernel/skip_list.c
--
-ck