Seastar’s CPU scheduler divides each shard time between a flat set of scheduling groups proportionally to their shares. This elegant model falls apart as that set grows, since every new group makes the worst-case latency worse. It falls apart for the second time by putting users, who want to configure service-level shares, in direct conflict with developers, who do the same for system-level groups. This talk shows how hierarchical scheduling puts the model back together and keeps it from falling apart further.
