Proportional share without any randomness. Each job gets a stride, inversely proportional to its tickets, and a running total called its pass value. Whoever has the lowest pass runs next and then advances by its stride, following the Scheduling: Proportional Share chapter of OSTEP (Chapter 9).
Tickets, strides and pass values
job
tickets
stride
pass
ran
stride = 10000 / tickets
Pass values on a line — lowest runs next
One column per time slice: the job that had the lowest pass value.
Keys: → next, ← back, space play or pause, 1–3 switch scenario.
The whole scheduler
Four lines, run once per time slice. No random numbers, and no recalculating anything globally.
This decision
How far off the requested shares are they?
Both schedulers are given the same three jobs. The chart tracks how far each one’s delivered CPU shares are from the shares the tickets asked for, adding up the error across all three jobs after every slice.