Chapter 15. Virtualization

KVM processor performance improvement

Virtual CPU timeslice sharing
Virtual CPU timeslice sharing is a performance enhancing feature at the Linux scheduler level, where an idle virtual CPU can hand the remainder of its timeslice to another virtual CPU before yielding the CPU. This feature addresses an inherent lock holder preemption issue that exists in SMP systems, that can affect performance in virtual CPUs. This feature provides stable performance in multi-processor guests. This feature is supported on both Intel and AMD processors, and is called Pause Loop Exiting (PLE) on Intel processors, and Pause Filter on AMD processors.
KVM network performance improvements

KVM network performance is a critical requirement for Virtualization and cloud based products and solutions. Red Hat Enterprise Linux 6.2 provides a number of network performance optimizations to improve the KVM network para-virtualized driver performance in various setups.

Improved small message KVM performance
Red Hat Enterprise Linux 6.2 improves the KVM small message performance to satisfy a variety of networking workloads that generate small messages (< 4K).
Wire speed requirement in KVM network drivers
Virtualization and cloud products that run networking work loads need to run wire speeds. Up until Red Hat Enterprise Linux 6.1, the only way to reach wire speed on a 10 GB Ethernet NIC with a lower CPU utilization was to use PCI device assignment (passthrough), which limits other features like memory overcommit and guest migration
The macvtap/vhost zero-copy capabilities allows the user to use those features when high performance is required. This feature improves performance for any Red Hat Enterprise Linux 6.x guest in the VEPA use case. This feature is introduced as a Technology Preview.
UDP checksum optimization for KVM network drivers
UDP checksum optimization eliminates the need for the guest to validate the checksum if it has been validated by host NICs. This feature speeds up UDP external-to-guest traffic on 10 GB Ethernet cards with Red Hat Enterprise Linux 6.2 guests and hosts. The UDP checksum optimization is implemented in the virtio-net driver.
Improved I/O path performance when host slower than guest
The Red Hat Enterprise Linux 6.2 KVM network driver has improved I/O path performance, with reduced virtual machine exits and interrupts, that results in faster data delivery. This improvement enables you to run a faster guest on a slower host, without incurring any performance penalties. This enhancement is achieved by an enhanced virtio ring structure, and event index support in virtio and vhost-net.
KVM Systems Management and usability improvements

System monitoring via SNMP
This feature provides KVM support for a stable technology that is already used in data center with bare metal systems. SNMP is the standard for monitoring and is extremely well understood as well as computationally efficient. System monitoring via SNMP in Red Hat Enterprise Linux 6.2 allows the KVM hosts to send SNMP traps on events so that hypervisor events can be communicated to the user via standard SNMP protocol. This feature is provided through the addition of a new package: libvirt-snmp. This feature is introduced as a Technology Preview.
Improved guest debugging capabilities
Users who virtualize their data centers need a way of debugging when a guest OS becomes unresponsive and a crash dump has to be initiated. There are two methods heavily used with physical systems:
  • Triggering a non-maskable interrupt (NMI) in the guest
  • Sending SysRq sequences to the guest
While these capabilities are provided directly with the KVM console, a number of users use KVM through the libvirt API and virsh, where these two features were missing. Red Hat Enterprise Linux 6.2 improves guest debugging capabilities across the KVM stack, thus allowing a user to trigger NMIs in guests and send SysRq key sequences to guests.
Improve virtual machine boot up access
Users who virtualize their data centers need to track the guest boot up process and display the entire BIOS and kernel boot up message from the start. The absence of this feature prevents users from an interactive use of the virsh console, prior to boot up. A new package, sgabios, has been be added to Red Hat Enterprise Linux 6.2, to provide this capability, along with some additions to qemu-kvm.
Multi-processor (NUMA) Tuning Improvements
Red Hat Enterprise Linux 6.2 adds tuning improvements to the libvirt API stack, resulting in improved out-of-the-box performance when performing SPECvirt measurements. Red Hat Enterprise Linux 6.2 is now able to pin the memory associated with a NUMA node when a virtual machine is created.
USB enhancements
The USB 2.0 emulation has been implemented for qemu-kvm. This is available for QEMU directly only. Libvirt support is planned for the next release.
Remote Wakeup support has been added for the USB host controller. Together with the cooperation of the guest OS it allows the stopping of the frequent 1000hz polling mode and putting the device to sleep. It dramatically improves the power utilization and the CPU consumption of virtual machines with a USB mouse emulation (or a tablet) — one of the common devices that every virtual machine has.
Xen improvements

Memory ballooning
Memory ballooning is now supported by Red Hat Enterprise Linux 6 paravirtualized Xen guests.
Domain memory limit
Memory limit for x86_64 domU PV guests has been increased to 128 GB: CONFIG_XEN_MAX_DOMAIN_MEMORY=128.
Time accounting
The xen_sched_clock implementation (which returns the number of unstolen nanoseconds) has been replaced by the xen_clocksource_read implementation.
Virtualization Documentation

The Red Hat Enterprise Linux Virtualization Guide has been divided into several specific guides:


The package spice-protocol has been upgraded to version 0.8.1, providing the following new features:

  • Support for volume change
  • Support for async guest I/O writes and interrupts
  • Support for suspend (S3) related guest I/O writes
  • Support for an interrupt indicating a guest bug
Linux Containers

Linux containers provide a flexible approach to application runtime containment on bare-metal systems without the need to fully virtualize the workload. Red Hat Enterprise Linux 6.2 provides application level containers to separate and control the application resource usage policies via cgroup and namespaces. This release introduces basic management of container life-cycle by allowing creation, editing and deletion of containers via the libvirt API and the virt-manager GUI. Linux Containers are a Technology Preview.

Red Hat Enterprise Virtualization Hypervisor RPM multi-installable

In order to allow side-by-side installs of the rhev-hypervisor package, configure Yum to make rhev-hypervisor an install-only package by editing the /etc/yum.conf file and adding the installonlypkgs option:

This option needs to also include the default list of installonly packages which can be found in the yum.conf man page (man yum.conf 5) in the installonlypkgs option section.