Oracle VM 3.4.1 was just released - a substantial release with multiple new features like storage live migration, support for virtual appliances, FCoE and UEFI boot support, and upgrades to system software components. Please refer to the preceding link and to the What's New page in the Release Notes.
Also, Oracle VM 3.3.4 was recently released. This maintenance release corrects bugs, and also adds new features for performance. Customers who want to stay on the Oracle VM 3.3 release should move to this level for these improvements.
The later software versions provide higher performance and scale, especially for 3.4.1. Substantial performance benefits for CPU, network, and disk have been observed in our testing, simply by converting to the new release.
Additionally, a new feature can improve guest disk I/O performance for Oracle Linux guests by increasing the number of in-flight I/O requests, and increasing the amount of data transfered in each request. This applies to Linux guests, and requires administrative steps in the guest domain.
Guests with paravirtualized drivers (PVM or HVM+PV drivers guests) process disk I/O through a ring buffer shared between domU (guest VMs) and dom0. By default, the ring buffer has 32 entries of 128KB bytes, each representing an in-flight I/O request.
I/O requests larger than the buffer size are split into multiple requests, which decreases performance With Oracle Linux, the maximum size of an I/O request can be controlled by a parameter xen-blkfront.max measured in 4KB units. The maximum value for this setting is 256, which enables I/O requests up to one 1MB (1024KB) (xen-blkfront.max=256) without breaking them into multiple requests. This can improve streaming sequential I/O, in particular if application block size is bigger than the default (iostat in guest could tell, or application knowledge). This parameter can be set on Oracle Linux 6 and Oracle Linux 7.
Another setting xen-blkfront.max_ring_page_order controls the number pages used for the buffers, which permits more in-flight disk I/O operations. Pages for shared ring buffers must be allocated in units of powers of two, and can be adjusted by setting the exponent in 2^N (for 2**N for FORTRAN programmers). xen-blkfront.max_ring_page_order=4 would permit 2^4==16 ring buffers pages, and support as many in-flight operations as fit in that number of pages based on the buffer size. This can improve performance if the storage devices aren't saturated and can handle more concurrent I/O. This is especially for physical disk rather than vdisk from a repository. This feature is available in Oracle Linux 7.2, and requires UEK3 3.8.13-90 or later.
The variables can be set in /etc/modprobe.conf, for example
options xen-blkfront.max=256 or guest kernel boot command line in grub.
The two settings can be combined on the grub kernel line like this (split over lines for illustration)
kernel /vmlinuz-3.8.13-44.1.4.el6uek.x86_64 ro root=LABEL=/ \ SYSFONT=latarcyrheb-sun16 \ LANG=en_US.UTF-8 KEYTABLE=us \ xen-blkfront.max=64 xen-blkfront.max_ring_page_order=4
Oracle VM 3.4.1 is an important release with many new features, and substantially improves performance without additional administrative overhead for all virtual machines, and also for provides better response time in the Oracle VM Manager user interface and increases scale for number of VMs and servers, and the resources the use. Additionally, Oracle Linux customers can tune I/O performance by changing the settings described in this blog from their defaults.
Results will depend on infrastructure and workload. In particular, a fully saturated storage environment won't be made any faster by adding these tuning parameters. However, these changes will help Oracle VM environments fully exploit the capabilities of the underlying hardware and get closer to bare-metal performance.