scx-upstream/scheds/c-user
David Vernet c953ee47a6
scx_nest: Reset schedulings when a task is dispatched
In scx_nest, we currently count the number of times that a core is
scheduled for compaction before we eventually just eagerly compact the
core. The idea is that the core could thrash between being scheduled and
then "de-scheduled" for compaction if there are a couple of tasks that
are bouncing between cores in the primary nest often enough to kick them
out of being compacted.

We're currently resetting schedulings when a core is eagerly compacted,
but to be precise we should probably also reset the count when a core
consumes a task from the fallback DSQ, at this indicates that the system
is overcommitted and that we likely won't benefit from compacting the
primary nest.

Signed-off-by: David Vernet <void@manifault.com>
2023-12-08 13:16:40 -06:00
..
meson.build scx_nest: Add scx_nest scheduler 2023-12-07 13:28:09 -06:00
README.md scx_nest: Add scx_nest scheduler 2023-12-07 13:28:09 -06:00
scx_nest_stats_table.h scx_nest: Add scx_nest scheduler 2023-12-07 13:28:09 -06:00
scx_nest.bpf.c scx_nest: Reset schedulings when a task is dispatched 2023-12-08 13:16:40 -06:00
scx_nest.c scx_nest: Add scx_nest scheduler 2023-12-07 13:28:09 -06:00
scx_nest.h scx_nest: Add scx_nest scheduler 2023-12-07 13:28:09 -06:00

EXAMPLE SCHEDULERS

Introduction

This directory contains sched_ext schedulers with C user-space components.

This document will give some background on each such scheduler, including describing the types of workloads or scenarios they're designed to accommodate. For more details on any of these schedulers, please see the header comment in their .bpf.c file.

Schedulers

This section lists, in alphabetical order, all of the current example schedulers.


scx_nest

Overview

A scheduler based on the following Inria-Paris paper: OS Scheduling with Nest: Keeping Tasks Close Together on Warm Cores. The core idea of the scheduler is to make scheduling decisions which encourage work to run on cores that are expected to have high frequency. This scheduler currently will only perform well on single CCX / single-socket hosts.

Typical Use Case

scx_nest is designed to optimize workloads that CPU utilization somewhat low, and which can benefit from running on a subset of cores on the host so as to keep the frequencies high on those cores. Some workloads may perform better by spreading work across many cores to avoid thrashing the cache, etc. Determining whether a workload is well-suited to scx_nest will likely require expermentation.

Production Ready?

This scheduler could be used in a production environment, assuming the hardware constraints enumerated above.