Virtualization isn't perfect, but SLAT minimizes hypervisor overhead

Processor technology improvements, such as Second Level Address Translation, have improved virtualization performance by reducing hypervisor overhead.

Virtualization is a core technology for many data centers, but the software layer introduced by a hypervisor imposes computing overhead that reduces the resources available to virtual machines. The addition of processor extensions for virtualization (such as Intel-VT and AMD-V) vastly lowered the overhead of virtualization, but new processor technologies are appearing that continue to reduce hypervisor overhead and improve virtual machine scalability.

How SLAT improves server virtualization

Second Level Address Translation (SLAT) is the generic name for a technology designed to simplify hypervisor memory management and reduce hypervisor CPU overhead. This eases the hypervisor performance overhead on host systems and improves virtual machine (VM) performance. Intel calls this technology Extended Page Tables (EPT), which was introduced in processors based on the Nehalem core. AMD refers to the technology as Rapid Virtualization Indexing (RVI), which appeared in Opteron processors based on the Barcelona core.

Remember that physical computing resources must be presented to VMs as virtualized resources -- this is the essence of abstraction that insulates workloads from the underlying computing hardware. But a major source of hypervisor overhead occurs when the processor must translate virtual memory addresses to physical memory addresses, often maintaining large, memory-intensive translation tables that shadow the guest OS page mappings.

SLAT basically adds a cache in the processor called a Translation Lookaside Buffer (TLB) that holds recent page table mappings generated by the hypervisor. When a virtual-to-physical address translation is requested, the hypervisor queries the TLB for mapping information first. If there's a match, the physical address is returned to the hypervisor -- without the memory and CPU overhead needed to perform the translation. This is the "second level" of address translation. If there is no match, the hypervisor will check the traditional page table and perform the normal address translation. The hypervisor will then save the new translation to the TLB for future reference. The addition of this cache (like any cache) can speed performance by eliminating repetitive work.

The benefits of SLAT vary depending on the workload. For example, Microsoft RDS claims that SLAT-enabled processors allowed between 1.6 to 2.5 times more RDS connections on a Windows Server 2008 R2 platform running Hyper-V. Overall, Microsoft documentation suggests the hypervisor overhead drops from about 10% to about 2% and frees about 1 MB of memory for each hosted VM. Individual businesses should benchmark their virtualized platforms before enabling or deploying SLAT in order to obtain more concrete performance data.

SLAT processor support

Generally, any AMD-based server with Opteron processors based on the Barcelona core or any Intel-based server with Nehalem, Westmere or Sandybridge cores (numbered E5500 and later) should support SLAT. Remember that Intel-VT processors will call this EPT while AMD-V processors will call this feature RVI or Nested Page Tables (NPT).

Although current technology refresh purchases should include processors that support SLAT, there are tools available that can help IT professionals determine CPU support for SLAT. Microsoft suggests using the CoreInfo tool (version 3.2 or later available from TechNet) which detects EPT and NPT support on the CPU. Boot the server to a command line without a hypervisor running and execute the tool from the command line using a –v switch such as:

coreinfo.exe -v

The tool will return a small series of virtualization-related information such as:

HYPERVISOR      -    Hypervisor is present
VMX             *    Supports Intel hardware-assisted virtualization
EPT             *    Supports Intel extended page tables

The dash means "no" and the asterisk means "yes," so the report above means the hypervisor is disabled (necessary for this test) and the CPU supports virtualization and extended page tables. The system in this example should provide better virtualization performance with SLAT.

Firmware, BIOS and SLAT support

The server's BIOS is an essential mechanism for setting up and operating the server's hardware.
It also forms the interface that connects the operating system to the hardware. A BIOS normally exerts control over many of the system's components and features. As an example, the BIOS can typically control a processor's use of virtualization technology by allowing technicians to toggle virtualization support on or off, along with I/O virtualization and other discrete attributes of virtualization.

Consider the report results from a tool like CoreInfo. If the tool reports that hardware-assisted virtualization is not being supported, or that features like EPT or NPT are not supported, it may mean that the server's BIOS has disabled virtualization support (or another attribute more specific to SLAT). Remember that BIOS options can be confusing because of the many versions and variations available, so always refer to the documentation that accompanies your specific server for more BIOS setup details.

If the CPU is recent enough that it should support SLAT and the BIOS is enabled, but tools like CoreInfo still suggest that SLAT is unavailable, look for BIOS upgrades or updates that may correct firmware errors and allow SLAT to function as expected.

A processor uses SLAT to cache the virtual-to-physical address mappings that take place in a virtualized system. When a translation is already in the cache (a cache hit), the processor doesn't need to perform the translation again, speeding performance and saving some physical memory which might otherwise be needed for page tables. The latest server-class processors will support SLAT, so obtaining the feature in new systems should be easy. But IT professionals may need to check for SLAT support on existing systems and enable support in the BIOS to boost the systems' performance a bit more.

Dig Deeper on Server hardware and virtualization