The Problem
Linux CPU scheduling is a black art of heuristics, cgroups, and latency targets. Tuning it for a mixed workload—interactive shells, batch compiles, network I/O—requires either deep kernel expertise or acceptance of generic defaults. scxhoroscope replaces those heuristics with a deterministic, observable priority model: planetary positions and zodiac signs.
What This Does
This is a working schedext scheduler. It loads a BPF program (main.bpf.c) into the kernel via src/bpf.rs and communicates with a userspace daemon (src/main.rs) that computes astrological state. The kernel-side logic classifies tasks by domain (CPU, network, interactive) and applies time-slice multipliers based on real planetary data from the astro crate, computed in src/astrology/planets.rs. The priority formula and retrograde penalties are defined in src/astrology/scheduler.rs.
The mapping is concrete: the Sun rules PID 1, Mars rules CPU-heavy tasks, Mercury rules network I/O. Elemental affinities (Fire boosts CPU 1.5x) and retrograde detection (50% time slice penalty) are applied dynamically. The scheduler uses the scxrustlandcore framework for kernel-userspace communication, so this is not a simulation—it genuinely schedules processes.
How To Use It
Setup: Build with cargo build --release. A build.rs compiles the BPF object. No other dependencies are documented.
Running: Execute the resulting binary as root. It loads the scheduler into the kernel and takes over CPU scheduling until terminated. The README does not document CLI flags, a config file, or a way to select task domains—those are inferred from the code, not exposed.
cargo build --release sudo ./target/release/scxhoroscope
The repo lacks a --help or usage documentation beyond the README's brief mention. For a real deployment, you'd want to verify the binary's runtime options directly.
Real-World Use
A developer workstation with mixed workloads—editors, a database, a compiler, a browser—is the target. The scheduler would boost the compiler during Fire-sign periods and penalize network tasks during Mercury retrograde. In practice, this is a demonstration of schedext's extensibility rather than a production tuning tool. Use it to explore how a domain-specific priority model can be expressed in BPF, or as a starting point for a scheduler with more conventional inputs.
Code Health & Issues
Med - No tests - No test files exist. The astrological calculations in src/astrology/ are pure logic and untested, which is a risk for a scheduler that affects system performance. Med - No CI/CD - No GitHub Actions or CI config. There is no automated build or test gate; the project compiles or it doesn't. Med - No LICENSE - Usage and redistribution rights are unclear. This is a blocker for any commercial use. Low - Single-purpose demo - The scheduler is tightly coupled to astrological inputs. Adapting it to other priority models requires modifying the core scheduling logic in src/astrology/scheduler.rs. Low - Documentation gap - ASTROLOGY.md exists, but the README's usage section is truncated ("### Runnin"). Runtime flags and configuration are undocumented.
The Bottom Line
A technically credible demonstration of schedext's power, wrapped in a deliberately absurd premise. The BPF integration and real scheduling logic are substantive, but the project is a proof-of-concept, not a production tool. Use it to learn schedext or to make a point at a conference; do not put it on a production server.