Skip to content

add tests against distro kernels - #3700

Open
likewhatevs wants to merge 3 commits into
sched-ext:mainfrom
likewhatevs:distro-tests
Open

add tests against distro kernels#3700
likewhatevs wants to merge 3 commits into
sched-ext:mainfrom
likewhatevs:distro-tests

Conversation

@likewhatevs

@likewhatevs likewhatevs commented Jul 10, 2026

Copy link
Copy Markdown
Contributor

I've been working on this for a while now and I think I'm starting to be happy with how it works so tagging folks to provide awareness of where schedulers do/do not verify.

This PR adds a non-blocking CI job which runs schedulers against a battery of topologies in VMs rapidly, against both for-next and misc distro kernels I think we care about.

It runs layered against fedora/gke/for-next, cosmos against ubuntu/for-next, and lavd against steamos/for-next.

CleanShot 2026-07-29 at 23 40 22@2x

I'll keep iterating on this slowly but I think this is how we want CI/scheduler guardrails to work. I've had luck reproducing production issues with this framework, and the churn on this PR was me getting (massive) oversubscription to work right (i.e. retaining the ability to break schedulers in the way they break in prod without requiring 1 host per scenario and multiple hours of runtime).

LMK thoughts or if I can help clear anything up about this!

To run the new tests on this PR locally, install the tool which runs these tests cargo install ktstr --locked, fill in kernels you wish to test in the command ci uses here, and the same thing on ci will be ran locally.

Add ktstr verifier legs in .github/workflows/ci-new.yml that boot
scx_layered across topology presets on tj's sched_ext for-next and
prebuilt distro kernels — Fedora and GKE (COS) — checking its BPF
verifies, attaches, and dispatches. This exercises the scheduler on
shipped distro kernels, whose BTF can be incompatible with scx's BPF;
the legs are non-blocking (continue-on-error) so a distro failure
reports without gating CI. Each leg verifies all its kernels in one
run, so a distro kernel costs no extra toolchain setup or build;
ktstr's GKE support is x86_64-only, so only the scx-x64 leg carries
gke.

Drop scx_layered from cargo veristat; the verifier now checks its BPF on
for-next and distro kernels instead. The declaration is gated behind a
new optional `ktstr-tests` feature so normal builds are unaffected;
scx_layered needs a layer config, so it runs --run-example.

Signed-off-by: Pat Somaru <patso@likewhatevs.io>
Add ktstr verifier legs that boot scx_lavd across topology presets,
checking its BPF verifies, attaches, and dispatches: the scx-x64 leg
runs tj's sched_ext for-next and a prebuilt SteamOS kernel, and since
SteamOS publishes x86_64 kernels only, the scx-arm64 leg verifies
for-next alone. The verifier is non-blocking (continue-on-error) so a
distro failure reports without gating CI.

Drop scx_lavd from cargo veristat; the verifier now checks its BPF on
for-next and a distro kernel instead. The declaration is gated behind
the optional `ktstr-tests` feature so normal builds are unaffected;
scx_lavd attaches with defaults, so it needs no extra scheduler args.

Signed-off-by: Pat Somaru <patso@likewhatevs.io>
Add a ktstr verifier leg that boots scx_cosmos across topology presets
on tj's sched_ext for-next and a prebuilt Ubuntu LTS HWE kernel,
checking its BPF verifies, attaches, and dispatches. The verifier is
non-blocking (continue-on-error) so a distro failure reports without
gating CI.

Drop scx_cosmos from cargo veristat; the verifier now checks its BPF on
for-next and a distro kernel instead. The declaration is gated behind
the optional `ktstr-tests` feature so normal builds are unaffected;
scx_cosmos attaches with defaults, so it needs no extra scheduler args.

Signed-off-by: Pat Somaru <patso@likewhatevs.io>
@likewhatevs
likewhatevs marked this pull request as ready for review July 30, 2026 03:56
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant