| Status: | Supported |
| Component: | Hypervisor |
Credit2 is one of the 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, with respect to Credit1.
Credit2 is not in use by default. In order to use it as the Xen scheduler the following parameter should be passed to the hypervisor at boot:
`sched=credit2`
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 -sxl sched-credit2 -s -p pool1xl sched-credit2 -s -r 100xl sched-credit2 -d vm1xl sched-credit2 -d vm1 -w 1024Implementation 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 | 1 2 | Xen 4.8 Xen 4.10 | Document written Soft-affinity and caps implemented |