Status: | Supported |
Component: | Hypervisor |
Credit2 is the default virtual CPU (vCPU) scheduler available in the Xen hypervisor.
Credit2 was designed as a general purpose scheduler, with particular focus on improving handling of mixed workloads, scalability and support for low latency applications inside VMs.
Xen supports multiple schedulers. As said, Credit2 is the default, so it is used automatically, unless the sched=$SCHED
(with $SCHED
different than credit2
) parameter is passed to Xen via the bootloader.
Other parameters are available for tuning the behavior of Credit2 (see docs/misc/xen-command-line.markdown
for a complete list and for their meaning).
Once the system is live, for creating a cpupool with Credit2 as its scheduler, either compile a cpupool configuration file, as described in docs/man/xlcpupool.cfg.pod.5
(and as exemplified in tools/examples/cpupool
), or use just xl
directly:
xl cpupool-create name=\"pool1\" sched=\"credit2\" cpus=[1,2]
Two kind of interactions with the scheduler are possible:
xl sched-credit2 -s
xl sched-credit2 -s -p pool1
xl sched-credit2 -s -r 100
xl sched-credit2 -d vm1
xl sched-credit2 -d vm1 -w 1024
Implementation entirely lives in the hypervisor. Xen has a pluggable, hook based, architecture for schedulers. Thanks to this, Credit2 code is all contained in xen/common/sched_credit2.c
.
Global scheduling parameters, such as context switching rate limiting, is only available from Xen 4.8 onward. In libxl, the LIBXL_HAVE_SCHED_CREDIT2_PARAMS symbol is introduced to indicate their availability.
Any change done in Credit2 wants to be tested by doing at least the following:
sched=credit2
,Ideally, all the above steps should also be performed in a configuration where Credit2 is used as the scheduler of a cpupool, and by also doing the following:
sched_credit2_migrate_resist
, credit2_balance_over
, credit2_balance_under
)Date | Revision | Version | Notes |
---|---|---|---|
2016-10-14 2017-11-6 2019-02-7 | 1 2 3 | Xen 4.8 Xen 4.10 Xen 4.12 | Document written Soft-affinity and caps implemented Made the default scheduler |