mirror of
https://github.com/xen-project/xen.git
synced 2026-10-28 02:01:24 +01:00
Pandoc deliberately (and contrary to markdown) doesn't treat underscores in
the middle of normal text as emphasis markers, as this is almost always the
unhelpful interpretation.
For text which is emphasised using _, an underscore in the middle is
interpreted, but the emphasis marker can be switched to * instead.
One problem case is where we use {} globbing with identifier names, as it
counts as a word break. Therefore, we do need to retain the escaped
underscore immediately following a closing brace.
No change in content - only formatting. This results in the text being easier
to read and grep.
Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
Acked-by: Ian Jackson <ian.jackson@eu.citrix.com>
123 lines
4.7 KiB
Plaintext
123 lines
4.7 KiB
Plaintext
% RTDS Scheduler
|
|
% Revision 1
|
|
|
|
\clearpage
|
|
|
|
# Basics
|
|
---------------- ----------------------------------------------------
|
|
Status: **Experimental**
|
|
|
|
Component: Hypervisor
|
|
---------------- ----------------------------------------------------
|
|
|
|
# Overview
|
|
|
|
RTDS is one of the virtual CPU (vCPU) scheduler available in the Xen
|
|
hypervisor.
|
|
|
|
RTDS is a real-time scheduler, so its purpose is enabling
|
|
**deterministic** scheduling of the virtual machine's vCPUs. It has
|
|
been originally developed in the context of the RT-Xen project.
|
|
|
|
# User details
|
|
|
|
RTDS 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=rtds`
|
|
|
|
Once the system is live, for creating a cpupool with RTDS 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=\"pool-rt\" sched=\"rtds\" cpus=[4,5,6,8]
|
|
|
|
For checking or changing a VM's scheduling parameters from xl, do
|
|
as follows:
|
|
* `xl sched-rtds -d vm-rt -v all`
|
|
* `xl sched-rtds -d vm-rt -v all -p 10000 -b 2500`
|
|
|
|
It is possible, for a multiple vCPUs VM, to change the parameters of
|
|
each vCPU individually:
|
|
* `xl sched-rtds -d vm-rt -v 0 -p 20000 -b 10000 -e 1 -v 1 -p 45000 -b 12000 -e 0`
|
|
|
|
# Technical details
|
|
|
|
Implementation entirely lives in the hypervisor. Xen has a pluggable,
|
|
hook based, architecture for schedulers. Thanks to this, RTDS code
|
|
is all contained in `xen/common/sched_rtds.c`.
|
|
|
|
In libxl, the availability of the RTDS scheduler is advertised by
|
|
the presence of the LIBXL_HAVE_SCHED_RTDS symbol. The ability of
|
|
specifying different scheduling parameters for each vcpu has been
|
|
introduced later, and is available if the following symbols are defined:
|
|
* LIBXL_HAVE_VCPU_SCHED_PARAMS,
|
|
* LIBXL_HAVE_SCHED_RTDS_VCPU_PARAMS,
|
|
* LIBXL_HAVE_SCHED_RTDS_VCPU_EXTRA.
|
|
|
|
# Limitations
|
|
|
|
RTDS is a special purpose scheduling. This is by design, and not at
|
|
all a limitation, but it is certainly something to keep in mind when
|
|
thinking about using it. The purpose of the scheduler is enabling
|
|
deterministic and statically analyzable behavior (as per the
|
|
real-time academic literature), according to the scheduling parameters
|
|
assigned to each vCPU.
|
|
|
|
Using RTDS a the Xen scheduler, and/or for general purpose workloads
|
|
is definitely possible, but the vCPU scheduling parameters (of both
|
|
Domain0 and of the various VMs) would probably require tweaking, with
|
|
respect to their default values.
|
|
|
|
# Testing
|
|
|
|
Any change done in RTDS must be tested by doing the following:
|
|
|
|
* create a cpupool with RTDS as its scheduler,
|
|
* create a few virtual machines a move them in and out of the pool,
|
|
* create a few virtual machines, directly inside the pool, and verify
|
|
that they boot and can run some basic workload (e.g., login into them
|
|
and run simple commands),
|
|
* shutdown/reboot the virtual machines,
|
|
|
|
The fact that the system boots fine when passing `sched=rtds` to Xen
|
|
should also be verified.
|
|
|
|
Finally, to check that the scheduler is working properly (although only
|
|
at a macroscopic level), the following should be done:
|
|
|
|
* create a VM with 1 vCPU and put it in the RTDS cpupool,
|
|
* set the scheduling parameters such as it has a 50% reservation, with
|
|
`xl sched-rtds -d vm -v all -p 100000 -b 50000`,
|
|
* run a CPU-burning process inside the VM (e.g., `yes`),
|
|
* check with `xentop` (in Domain0) that the VM is getting no more than
|
|
50% pCPU time.
|
|
|
|
# Areas for improvement
|
|
|
|
* performance assessment, especially focusing on what level of real-time
|
|
behavior the scheduler enables.
|
|
|
|
# Known issues
|
|
|
|
* OSSTest reports occasional failures on ARM.
|
|
|
|
# References
|
|
|
|
* "RT-Xen: Real-Time Virtualization" [XPDS14 Presentation](http://events.linuxfoundation.org/sites/events/files/slides/2014_Xen_Developer_Summit_0.pdf)
|
|
* "Scheduling in Xen" [XPDS15 Presentation](http://events.linuxfoundation.org/sites/events/files/slides/Faggioli_XenSummit.pdf)
|
|
* [RT-Xen Project](https://sites.google.com/site/realtimexen/)
|
|
* [RTDS-Based-Scheduler](https://wiki.xenproject.org/wiki/RTDS-Based-Scheduler)
|
|
* "The RTDS Scheduler" [on the Xen-Project wiki](https://wiki.xenproject.org/wiki/RTDS-Based-Scheduler)
|
|
* "Xen Project Schedulers" [on the Xen-Project wiki](https://wiki.xenproject.org/wiki/Xen_Project_Schedulers)
|
|
|
|
# History
|
|
|
|
------------------------------------------------------------------------
|
|
Date Revision Version Notes
|
|
---------- -------- -------- -------------------------------------------
|
|
2016-10-14 1 Xen 4.8 Document written
|
|
2017-08-31 2 Xen 4.10 Revise for work conserving feature
|
|
---------- -------- -------- -------------------------------------------
|