Description of problem:
When creating a guest with libvirt for KVM real-time, we always
drop unneeded devices from the domain's XML leading to a very
minimal hardware support for a guest.
We do this for two reasons:
1. We just don't know at this point which drivers in the guest
may be real-time unfriendly, which could cause latency
spikes during real-time operation (eg. a driver that creates
a polling thread on all CPUs)
2. We know that some hardware does cause problems with real-time
in bare-metal (eg. legacy USB support), but we don't know
whether such hardware will also be problematic in guests
Maybe we'll have some kind of device validation in the future,
but for now we're playing safe and dropping all the unnecessary
devices from the XML.
The list of dropped devices includes:
- All USB support
- All SPICE support and QXL hardware
- virtio serial and guest agent sockets
- Sound card
Needless to say, but we keep some virtio devices like the disk
and the NIC. Having the disk or the NIC as emulated devices
_might_ be OK as long as the real-time thread don't do I/O to
them.
If OpenStack, or another virt stack component, has a specific
request for a missing device we could try to validate it and
include it.
Version-Release number of selected component (if applicable):
OSP8
How reproducible:
Always
Steps to Reproduce:
1. Create a realtime KVM guest, with "unneeded" devices listed above;
2. Observe the presence of these "unneeded" devices in the domain XML.
Actual results:
Inappropriate devices (such as emulated devices) may be included
in the realtime guest. These inappropriate devices may lead to
undesirable latency spikes.
Expected results:
"Unneeded devices" (or inappropriate devices for realtime) should be
removed from the XML.
Additional info:
Sahid is there anything up for this for Ocata? Just attempting to clean up the BZ queue. It's not really clear to me that the list of devices is well defined at this stage.
We do not define such devices automatically in Nova. So I guess we can document somewhere that a host configured for realtime should no be configured to use serial console, usb tablet and spice.
- All USB support
- All SPICE support and QXL hardware
- virtio serial and guest agent sockets
This one is just not supported
- Sound card
Description of problem: When creating a guest with libvirt for KVM real-time, we always drop unneeded devices from the domain's XML leading to a very minimal hardware support for a guest. We do this for two reasons: 1. We just don't know at this point which drivers in the guest may be real-time unfriendly, which could cause latency spikes during real-time operation (eg. a driver that creates a polling thread on all CPUs) 2. We know that some hardware does cause problems with real-time in bare-metal (eg. legacy USB support), but we don't know whether such hardware will also be problematic in guests Maybe we'll have some kind of device validation in the future, but for now we're playing safe and dropping all the unnecessary devices from the XML. The list of dropped devices includes: - All USB support - All SPICE support and QXL hardware - virtio serial and guest agent sockets - Sound card Needless to say, but we keep some virtio devices like the disk and the NIC. Having the disk or the NIC as emulated devices _might_ be OK as long as the real-time thread don't do I/O to them. If OpenStack, or another virt stack component, has a specific request for a missing device we could try to validate it and include it. Version-Release number of selected component (if applicable): OSP8 How reproducible: Always Steps to Reproduce: 1. Create a realtime KVM guest, with "unneeded" devices listed above; 2. Observe the presence of these "unneeded" devices in the domain XML. Actual results: Inappropriate devices (such as emulated devices) may be included in the realtime guest. These inappropriate devices may lead to undesirable latency spikes. Expected results: "Unneeded devices" (or inappropriate devices for realtime) should be removed from the XML. Additional info: