December 23, 2025
Move fast, schedule things
LAVD: Meta's New Default Scheduler [pdf]
Meta’s new server “traffic cop” sparks nerd skirmish
TLDR: Meta unveiled LAVD, a new default scheduler to juggle massive servers, pinned tasks, and noisy interrupts. The crowd split between praising pragmatic engineering and mocking bespoke complexity, loudly demanding real benchmarks before believing it matters.
Meta just dropped LAVD, a new default scheduler—the traffic cop that decides which apps get CPU time on its mega‑machines. The pitch: split giant cache groups into smaller “virtual neighborhoods,” use tiered task‑stealing to avoid expensive cross‑town moves, give pinned tasks (jobs stuck to one core) their own per‑core queues, and deduct noisy interrupt time so critical work gets the fast lane. Translation: their servers are huge, messy, and busy, so LAVD tries to keep everything from crashing into everything else. They even admit measuring scheduler speed is hard, so benchmarks are “a topic for another day.”
Cue the community fireworks. Builders cheer the gritty, real‑world tuning; purists roll their eyes at “yet another bespoke scheduler” that’s hard to maintain, demanding receipts before hype. Jokes flew—“50 CPUs and it still lags,” “pinned like a butterfly”—while a bigger fight erupted: should Meta fix Linux’s main scheduler upstream, or ship private hacks to survive bursty chaos? Erlang fans love the sub‑1ms promise; ops folks worry the knobs will never stop turning. The meme of the day: “Move fast and schedule things.” And yes, the thread spawned more threads—see this HN link for the spillover.
Key Points
- •Meta introduces LAVD as a default scheduler to cover diverse services beyond specialized schedulers like scx_layered.
- •LAVD virtualizes CCX/LLC domains to reduce contention and improve cache locality, avoiding overly small domains that harm work conservation.
- •Tiered task stealing discourages cross-LLC/CCX steals, balances at enqueue across physical domains, and tunes steal rates by virtual domain size.
- •For pinned tasks, LAVD uses per-CPU DSQs and dynamically reduces time slices to meet sub-1ms latency expectations (e.g., Erlang erts_sched).
- •Work-in-progress IRQ handling deducts IRQ time from task quotas and moves latency-critical tasks to higher-capacity cores; benchmarking remains challenging.