- Huge Pages Support: KVM guests can now utilize 1MB pages. As this removes one layer of address translation for the guest backing, less page-faults need to be processed, and less translation lookaside buffer (TLB) entries are needed to hold translations. This, as well as the TLB improvements in z14, will improve KVM guest performance.
To use:
Create config file /etc/modprobe.d/kvmhpage.conf file with the following content to enable huge pages for KVM:
options kvm hpage=1
Furthermore, add the following line to /etc/sysctl.conf to reserve N huge pages:
vm.nr_hugepages = N
Alternatively, append the following statement to the kernel parameter line in case support is compiled into the kernel: kvm.hpage=1 hugepages=N.
Note that means to add hugepages dynamically after boot exist, but with effects like memory fragmentation, it is preferable to define huge pages as early as possible.
If successful, the file /proc/sys/vm/nr_hugepages should show N huge pages. See here for further documentation.
Then, to enable huge pages for a guest, add the following element to the respective domain XML:
<memoryBacking>
<hugepages/>
</memoryBacking>
The use of huge pages in the host is orthogonal to the use of huge pages in the guest. Both will improve the performance independently by reducing the number of page faults and the number of page table walks after a TLB miss.
The biggest performance improvement can be achieved by using huge pages in both, host and guest, e.g. with libhugetlbfs, as this will also make use of the larger 1M TLB entries in the hardware.
Requires Linux kernel 4.19. - vfio-ap: The Adjunct Processor (AP) facility is an IBM Z cryptographic facility comprised of three AP instructions and up to 256 cryptographic adapter cards. Each adapter card is partitioned into up to 85 domains, each of which provides cryptographic services. An AP queue is the means by which AP messages are sent to and received from an AP adapter. Each AP queue is connected to a particular domain within a particular adapter. vfio-ap enables assignment of a subset of AP adapters and domains to one or more guests such that each guest has exclusive access to a discrete set of AP queues.
Here is a small sample script illustrating host setup:
# load vfio-ap device driver
modprobe vfio-ap
# reserve domain 7 for use by KVM guests
echo -0x7 > /sys/bus/ap/aqmask
# to reserve all domains of an adapter, use the following
# line instead (by uncommenting it), and replace NN with the
# adapter number:
# echo -0xNN > /sys/bus/ap/apmask
# create a mediated device (mdev) to provide userspace access
# to a device in a secure manner UUID=e926839d-a0b4-4f9c-95d0-c9b34190c4ba
echo $UUID > /sys/devices/vfio_ap/matrix/mdev_supported_types/ \
vfio_ap-passthrough/create
# assign adapter, domain and control domain
echo 0x3 > /sys/devices/vfio_ap/matrix/${UUID}/assign_adapter
echo 0x7 > /sys/devices/vfio_ap/matrix/${UUID}/assign_domain
echo 0x7 > /sys/devices/vfio_ap/matrix/${UUID}/ \
assign_control_domain
To make use of the AP device in a KVM guest, add the following element to the respective domain XML:
<hostdev mode='subsystem' type='mdev' managed='no' model='vfio-ap'>
<source>
<address uuid='e926839d-a0b4-4f9c-95d0-c9b34190c4ba'/>
</source>
</hostdev>
Once complete, use the passthrough device in a KVM guest just like a regular crypto adapter.
Requires Linux kernel 4.20 and libvirt 4.9, and is also available in RHEL 8, Ubuntu 18.04 and SLES 15 SP1.
Monday, December 17, 2018
QEMU v3.1 released
QEMU v3.1 is out. Besides a number of small enhancements, some items that we would like to highlight from a KVM on Z perspective:
Thursday, December 13, 2018
SLES 12 SP4 released
SLES 12 SP4 is out! See the announcement and their release note with Z-specific changes.
It ships the following code levels:
See previous blog entries on Linux kernel 4.8 and 4.11 for details on new features becoming available through the kernel update, e.g. nested virtualization support.
An additional feature in this release is the availability of STHYI information in LPAR environments. Requires qclib v1.3 or later. See this blog post for general information on qclib.
Note: With this feature, live guest migration back to a KVM instance that does not yet support CPU models (e.g. SLES 12 SP3) will not work anymore.
It ships the following code levels:
- Linux kernel 4.12 (SP3: 4.4),
- QEMU v2.11 (SP3: v2.9), and
- libvirt v4.0 (SP3: v3.3).
See previous blog entries on Linux kernel 4.8 and 4.11 for details on new features becoming available through the kernel update, e.g. nested virtualization support.
An additional feature in this release is the availability of STHYI information in LPAR environments. Requires qclib v1.3 or later. See this blog post for general information on qclib.
Note: With this feature, live guest migration back to a KVM instance that does not yet support CPU models (e.g. SLES 12 SP3) will not work anymore.
Subscribe to:
Posts (Atom)