What the simulator said
Before writing the service, I simulated this box 5,100 times, an hour of arrivals each (5 scenarios, 3 machine sizes, 17 policies, 20 seeds), calibrated on benchmarks from the server it runs on. The plan was to show that splitting late work with a good forecast and a budget beats splitting on a timer. It does. But a plain pool that hands out ten images at a time, earliest deadline first, beats every splitting policy, and the reason is preemption: the pool reconsiders who gets a core every few seconds, while a worker that owns a task keeps its core until the task is done. That is why the box you press runs a pool, and why the splitting policies are exhibits.
Deadline hit rate on the cage (1.5 CPU, budget 2)
| Policy | calm | skew | neighbour | burst | poison |
|---|---|---|---|---|---|
| never | 44% | 34% | 45% | 44% | 47% |
| static-4 | 56% | 36% | 52% | 54% | 56% |
| pool-10 | 66% | 47% | 58% | 64% | 66% |
| timer+budget | 44% | 31% | 45% | 44% | 47% |
| forecast+budget | 56% | 31% | 52% | 54% | 56% |
| forecast+preempt | 67% | 35% | 57% | 64% | 66% |
| box | 6% | 5% | 8% | 7% | 11% |
| forecast | 4% | 4% | 7% | 5% | 5% |
Share of submitted tasks finished by their deadline, mean of 20 seeds; rejected tasks count as misses. Hover a cell for its 95% interval.