[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH 0/3] The 'null' Scheduler
Hello, This patch series implements what I call the 'null' scheduler. It's a very simple, very static scheduling posicy that always schedules the same vCPU(s) on the same pCPU(s). That's it. If there are less vCPUs than pCPUs, some of the pCPUs are _always_ idle. If there are more, some vCPUs _never_ run. That is not entirely true, as there is some logic to make sure that waiting to run vCPUs are executed, for instance, on a new pCPU that enters the cpupool, and things like that. The demand for this cames from Xen on ARM people and the embedded world in general (Hey, Stefano! :-P), where it is not uncommon to have super static systems that perceives an advanced general purpose scheduler just as pure overhead. As a matter of fact, this may turn out useful in less embedded scenario, like High Performace Computing (where, again, scheduling is, often, unnecessary overhead), but even some of our much more classic Xen use case (like consolidation, Cc-ing Jonathan and Marcus who said they were interested in it). The scheduler is really simple, and especially the hot paths --i.e., sleep, wakeup and schedule-- are super lean and quick, in 99% of the cases. All the slightly more complicated logic for dealing with pCPUs coming and going from a cpupool that uses this scheduler resides in functions that handle insertion, removal and migration of vCPUs, which are only called when such configuration changes happens (so, typically, "offline", in most of the embedded usecases). I implemented support for hard affinity in order to provide at least a rudimental interface for interacting with the scheduler and affect the placement (it's called assignment within the code) of vCPUs on pCPUs. I've tested the scheduler both inside a cpupool (using both Credit1 and Credit2 as boot schedulers) and as default, choosing it at boot and using it for Dom0 and a few other domains. In the latter case, you probably want to limit the number of Dom0's vCPUs too, or there will be very few to experiment with! :-P I haven't done any performance or overhead measurements so far, but I will soon enough. I also consider this to be experimental, and I'll also write a feature document ASAP. Thanks and Regards, Dario --- Dario Faggioli (3): xen: sched: introduce the 'null' semi-static scheduler xen: sched_null: support for hard affinity tools: sched: add support for 'null' scheduler docs/misc/xen-command-line.markdown | 2 tools/libxl/libxl.h | 6 tools/libxl/libxl_sched.c | 24 + tools/libxl/libxl_types.idl | 1 xen/common/Kconfig | 11 xen/common/Makefile | 1 xen/common/sched_null.c | 837 +++++++++++++++++++++++++++++++++++ xen/common/schedule.c | 2 xen/include/public/domctl.h | 1 9 files changed, 884 insertions(+), 1 deletion(-) create mode 100644 xen/common/sched_null.c -- <<This happens because I choose it to happen!>> (Raistlin Majere) ----------------------------------------------------------------- Dario Faggioli, Ph.D, http://about.me/dario.faggioli Senior Software Engineer, Citrix Systems R&D Ltd., Cambridge (UK) _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx https://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |