Credit2 Scheduler

Revision 2

1 Basics

Status: Supported
Component: Hypervisor

2 Overview

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.

3 User details

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:


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:

4 Technical details

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.

5 Testing

Any change done in Credit2 wants to be tested by doing at least the following:

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:

6 Areas for improvement

7 Known issues

8 References

9 History

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