From 4e439faae55bee33ba534f20c3588a1a82b3a983 Mon Sep 17 00:00:00 2001 From: Vasilito Date: Mon, 4 May 2026 14:45:21 +0100 Subject: [PATCH] docs: add authoritative master implementation plan --- local/docs/IMPLEMENTATION-MASTER-PLAN.md | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/local/docs/IMPLEMENTATION-MASTER-PLAN.md b/local/docs/IMPLEMENTATION-MASTER-PLAN.md index 6c9b4171..bc9bbb87 100644 --- a/local/docs/IMPLEMENTATION-MASTER-PLAN.md +++ b/local/docs/IMPLEMENTATION-MASTER-PLAN.md @@ -303,7 +303,25 @@ No shared block layer exists. Each storage driver reinvents I/O dispatch. Linux: --- -## 13. Total Effort +## 14. Scheduler & Threading Assessment (2026-05-04) + +### Architecture +- **Kernel**: DWRR scheduler (577 lines), 40 priority levels, per-CPU queues, futex (222 lines) +- **Userspace**: proc manager (2,638 lines), pthread (440 lines), signal delivery via proc scheme +- **IPC bridge**: 3 round-trips for thread creation vs Linux's single clone() syscall + +### Strengths +- DWRR with geometric weights, CPU affinity masks, soft-blocking with monotonic timeout +- Full POSIX process model (PID/PGID/SID, job control, orphan detection) +- Futex with physical-address keys for cross-process synchronization + +### Critical Gaps +1. **PIT-based tick (~148Hz)** — LAPIC timer exists but `setup_timer()` is commented out. Should use Periodic/TscDeadline mode at 1000Hz. +2. **Global CONTEXT_SWITCH_LOCK** — spinlock serializes all context switches across CPUs. Should be per-CPU. +3. **No load balancing** — idle CPUs don't steal work from busy CPUs +4. **No RT scheduling** — missing FIFO/RR/Deadline classes +5. **No cgroups** — no CPU bandwidth control or resource limits +6. **Thread creation latency** — 3 IPC hops vs single clone() | Tier | Duration | |------|----------|