This article examines virtualization and consolidation from the standpoint of an entire system image; it explores emulation technologies and considers two popular virtualization solutions—IBM’s z/VM and VMware’s line of VMware server products.
The type of virtualization discussed here is full-instance virtualization, which presents an entire system image running as a hosted process or set of processes on another system. This differs from other sorts of virtualization, such as storage virtualization, which presents pools of storage as if they were individual disks for a system’s use; and paravirtualization, such as Xen provides, which presents an abstraction of a system, which typically requires modifications to the guest operating system running in the virtual machine.
We’ll focus here on the class of virtual machines that can run an unmodified copy of an operating system and applications designed for a physical system. To present the environment convincingly to the guest operating system, the virtualization solution must make the operating system believe it has the full panoply of hardware that it would have available if running stand-alone. This typically includes processor resources, memory, disk storage, network interfaces, and some sort of operator console.
Emulation isn’t our primary focus here. An emulator isn’t constrained to run on similar architectures; it can run instructions from an entirely different architecture set, translating those into sequences of host architecture instructions.
Many small shops in the mainframe world use emulation. For example, Flex- ES is a commercial emulator that many smaller businesses (particularly in the VSE space) use for their mainframe computing needs. Hercules is an open source emulator that presents S/370, S/390, or z/Architecture capabilities on a Windows, Linux, Unix, or Mac OS X platform. Although it’s generally impossible to license IBM commercial operating systems for use on Hercules, it has become a favored solution for mainframe Linux developers because it’s free.
Emulators also are popular to ease migration as a line of computers moves from one architecture to another. Apple emulated the 680x0 processor in its ’90s move to PowerPC and then the PowerPC with the Rosetta emulator when it moved to Intel. IA64 Linux systems contain an IA32 emulation layer to let them run i386 binaries.
Emulation typically carries a large performance penalty. For instance, Hercules generally requires 50 to 100 x86 instructions to emulate a single S/390 instruction.
Virtualization doesn’t generally emulate instructions. It runs on the same architecture it’s virtualizing and can directly execute the instructions, although with a memory offset and/or a requirement to trap supervisor-mode code. Since the ratio of host-to-guest instructions is close to 1:1, virtualized speed can approach native speed, If the virtualization environment is smart about I/O, virtualized speed sometimes beats native speed. That isn’t infrequently the case for VSE under VM/ESA.