Joined: 15 Aug 2002
Location: Gainesville, Florida
|Posted: Mon Dec 12, 2016 7:47 pm Post subject: MuQSS CPU scheduler v0.15 for linux-4.9(Con Kolivas)
|For those interested, this applies cleanly to 4.9.0-gentoo-sources. I Thought BFQ would likely take several weeks to get into 4.9.x (usually the time for most new versions), and saw this.
I used the Kolivas "ck" patches (and the later BFS versions) for desktops years ago, and liked them, so figured this was worth a try.
| amd64 wrc # cd /usr/src/linux-4.9.0-gentoo
amd64 linux-4.9.0-gentoo # patch -p1 < 4.9-sched-MuQSS_150.patch
patching file Documentation/scheduler/sched-BFS.txt
patching file Documentation/scheduler/sched-MuQSS.txt
patching file Documentation/sysctl/kernel.txt
patching file arch/powerpc/platforms/cell/spufs/sched.c
patching file arch/x86/Kconfig
patching file fs/proc/base.c
patching file include/linux/init_task.h
patching file include/linux/ioprio.h
patching file include/linux/sched.h
patching file include/linux/sched/prio.h
patching file include/linux/skip_list.h
patching file include/uapi/linux/sched.h
patching file init/Kconfig
patching file init/main.c
patching file kernel/Makefile
patching file kernel/delayacct.c
patching file kernel/exit.c
patching file kernel/kthread.c
patching file kernel/sched/Makefile
patching file kernel/sched/MuQSS.c
patching file kernel/sched/MuQSS.h
patching file kernel/sched/cpufreq.c
patching file kernel/sched/cpufreq_schedutil.c
patching file kernel/sched/cputime.c
patching file kernel/sched/idle.c
patching file kernel/sched/sched.h
patching file kernel/sched/stats.c
patching file kernel/skip_list.c
patching file kernel/sysctl.c
Hunk #2 succeeded at 288 (offset 18 lines).
Hunk #3 succeeded at 305 (offset 18 lines).
Hunk #4 succeeded at 474 (offset 18 lines).
Hunk #5 succeeded at 1039 (offset 18 lines).
patching file kernel/time/clockevents.c
patching file kernel/time/posix-cpu-timers.c
patching file kernel/time/timer.c
patching file kernel/trace/trace_selftest.c
amd64 linux-4.9.0-gentoo #
|MuQSS CPU scheduler v0.15 for linux-4.9
Announcing an updated stable version of the Multiple Queue Skiplist Scheduler,
the successor to BFS, version 0.150 for linux-4.9.
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
A multiple runqueue strict fairness earliest effective virtual deadline first
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.
From: Con Kolivas <firstname.lastname@example.org> 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
Main box- AsRock x370 Gaming K4
Ryzen 7 3700x, 3.6GHz, 16GB GSkill Flare DDR4 3200mhz
Samsung SATA 1000GB, Radeon HD R7 350 2GB DDR5
Gentoo ~amd64 plasma, glibc-2.30-r6, gcc-9.3.0 kernel-5.5.11-gentoo USE=experimental
Joined: 20 Dec 2005
Location: Vienna, Austria; Germany; hello world :)
Joined: 28 Nov 2006
|Posted: Mon Dec 26, 2016 8:38 pm Post subject:
|Got a lot of freezes with ck, unfortunately. Switching to vanilla solved it. Maybe because of closed Nvidia drivers.
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum