[PATCH 0/5] xen/sched: rtds: add per-cpupool admission control
Furkan Caliskan <[email protected]>
| Newsgroups | gmane.comp.emulators.xen.devel |
|---|---|
| Message-ID | <[email protected]> |
RTDS currently has no admission control: nothing stops the sum of all admitted units' (budget/period) reservations in a cpupool from exceeding what its pCPUs can actually provide. Once that happens, the global-EDF deadline guarantees the scheduler is built around no longer hold for any unit sharing that pool. This series adds admission control to prevent that, tracks and report utilization, and makes the check toggleable per cpupool so an operator can disable it if they intentionally want to overcommit. Patch 1 introduces the core mechanism: a running utilization total per cpupool, a fixed-point representation of a unit's (budget/period), and a capacity check enforced in rt_alloc_udata()/rt_free_udata() - the lifecycle hooks that catch every new unit's default reservation. Patch 2 extends the same check to domctl, so growing an existing reservation via xl sched-rtds is checked too. Patch 3 reports a cpupool's admitted utilization agains its capacity via the 'r' debug key. Patch 4 makes admission control itself toggleable per cpupool (enabled by default) via sysctl. Patch 5 wires that toggle through libxl and adds -s/-a to xl sched-rtds, and documents it. Furkan Caliskan (5): xen/sched: rtds: add global-EDF utilization admission control xen/sched: rtds: enforce admission control in xl sched-rtds xen/sched: rtds: report utilization and cap via debug key xen/sched: rtds: make admission control cpupool-wide toggleable tools: expose admission control toggle via xl sched-rtds docs/man/xl.1.pod.in | 20 +++ tools/golang/xenlight/helpers.gen.go | 23 +++ tools/golang/xenlight/types.gen.go | 4 + tools/include/libxl.h | 4 + tools/include/xenctrl.h | 6 + tools/libs/ctrl/xc_rt.c | 40 ++++++ tools/libs/light/libxl_sched.c | 46 ++++++ tools/libs/light/libxl_types.idl | 5 + tools/xl/xl_cmdtable.c | 8 +- tools/xl/xl_sched.c | 103 +++++++++++++- xen/common/sched/rt.c | 205 ++++++++++++++++++++++++++- xen/include/public/sysctl.h | 5 + 12 files changed, 463 insertions(+), 6 deletions(-) -- 2.34.1