X86 Virtualization
From NeoWiki
x86 virtualization is the method by which x86-based "guest" operating systems are run under another "host" x86 operating system, with little or no modification of the guest OS. The x86 processor architecture did not originally meet the Popek and Goldberg virtualization requirements. As a result, it was very difficult to implement a general virtual machine on an x86 processor. In 2005 and 2006, extensions to their respective x86 architectures by Intel and AMD resolved this and other virtualization difficulties.
Contents |
Software techniques
On February 8, 1999, VMware introduced the first x86 virtualization product, "VMware Virtual Platform", based on earlier research by its founders at Stanford University. VMware filed for a patent on their techniques in October 1998, which was granted as US patent 6,397,242 on May 28, 2002. VMware and similar virtualization software for the x86 must employ very sophisticated techniques to trap and virtualize the execution of certain instructions. These techniques incur some performance overhead as compared to a VM running on a natively virtualizable architecture such as the IBM System/370 or Motorola MC68020.
Kevin Lawton started the Plex86 project (originally called "freemware") to create Free software for x86 virtualization. The focus of this project has since changed to support only Linux as a guest operating system, but prior to that Mr. Lawton published the paper Running multiple operating systems concurrently on an IA32 PC using virtualization techniques, which gives an analysis of what aspects of the x86 architecture are hard to virtualize and some techniques to overcome these difficulties.
Microsoft offers two Windows-based x86 virtualization products, Microsoft Virtual PC and Microsoft Virtual Server, based on technology they acquired from Connectix.
Open source alternatives include QEMU and VirtualBox.
The research systems Denali, L4, and Xen explored ways to provide high performance virtualization of x86 by implementing a virtual machine that differs from the raw hardware. Operating systems are ported to run on the resulting virtual machine, which does not implement the hard-to-virtualize parts of the actual x86 instruction set. This technique is known as paravirtualization.
Hardware support
Intel and AMD have independently developed virtualization extensions to the x86 architecture. They are not directly compatible with each other, but serve largely the same functions. Either will allow a virtual machine hypervisor to run an unmodified guest operating system without incurring significant emulation performance penalties.
Intel VT (IVT)
Intel's virtualization extension for 32-bit and 64-bit x86 architecture is named IVT (short for Intel Virtualization Technology), and is sometimes referred to by the development code name "Vanderpool". The 32-bit or IA-32 IVT extensions are referred to as VT-x[1]. Intel has also published specifications for IVT for the IA-64 (Itanium) processors which are referred to as VT-i [1]; formerly the IA-64 virtualization was code-named "Silvervale". However, since 2005, new Itanium processors no longer implement the x86 instructions in hardware, so x86 virtualization on IA-64, if implemented, will be via emulation.
Intel VT was officially launched at the Intel Developer Forum Spring 2005. It is available on most Pentium 4 6x2 and 6x1, Pentium D 9x0, Xeon 3xxx/5xxx/7xxx [2], Core Duo (excluding T2300E) and Core 2 Duo processors (excluding the T5200, T5500, E4x00). On some implementations, IVT support may be switched off in the BIOS/EFI. This can be determined by checking if the VMX flag is enabled by the Feature Control MSR.
Documentation on the Intel website have stated that VT requires not only support from the processor, but also support from the chipset, BIOS, and perhaps software[3][4].
Intel plans to add a technology named Virtualization for Directed I/O to VT. It will provide what AMD provides with IOMMU.
AMD virtualization (AMD-V)
AMD's virtualization extensions to the 64-bit x86 architecture is named AMD Virtualization, abbreviated AMD-V. It is still referred to as "Pacifica", the AMD internal project code name.
AMD-V is present in K8 AMD processors from stepping "F" onwards.
Software utilizing VT
The following software is known to conditionally make use of virtualization technology features:
- Blue Pill (malware) uses AMD Pacifica
- Kernel-based Virtual Machine (KVM)
- Microsoft Virtual PC — As of Virtual PC 2007 supports both Intel VT-x and AMD AMD-V. VPC 2007 was released on 19 February 2007
- Microsoft Virtual Server — a future version (Virtual Server 2005 R2 SP1, to be released in Q1 2007http://blogs.technet.com/jhoward/archive/2006/04/28/426703.aspx][5]) will support Intel VT and AMD Pacifica extensions.
- Parallels Workstation — lightweight hypervisor with Intel VT-x and AMD AMD-V support (AMD support on Macs is nonexistent as Macs do not use AMD processors)
- TRANGO real-time embedded hypervisor
- VirtualBox supports VT, but does not enable it by default. As with VMware, the developers state that it slows down virtualization, at least for those guest operating systems for which their software virtualization has been optimized.[6]
- VMware — on Intel processors, VMware Workstation 5.5 requires Intel VT to execute 64-bit guests.[7] For 32-bit guests, use of VT is possible but not enabled by default because for normal workloads it's slower.[8][9]
- Virtual Iron - Virtual Iron 3.1 is the first virtualization software that fully supports hardware-assisted virtualization (Intel-VT and AMD-V) to execute unmodified 32 and 64-bit guest operating systems (Windows, RedHat and Suse) with near native performance. Intel and AMD both have contributed support for their extensions to the Virtual Iron open source virtualization, allowing it to execute unmodified guest operating systems. Virtual Iron refers to this architecture as "native virtualization".
- VirtualLogix VLX uses hardware assised virtualization (VT) to run unmodified guest OSs including Linux and Real-Time operating systems.
- Xen — Xen 3.0, open source (GPL) virtualization, uses Intel VT to execute unmodified guest operating systems. Both Intel and AMD have contributed support for their virtualization extensions to the Xen virtual machine monitor, allowing it to execute unmodified guest operating systems.
Performance
Standard Performance Evaluation Corporation (SPEC) has created a working group to address the development of a set of industry standard methods to compare performance of virtualization technologies. Current members of the working group include AMD, Dell, Fujitsu Siemens, Hewlett-Packard, Intel, IBM, Sun Microsystems, and VMWare. SPEC is currently seeking information from the IT community to better understand the types of information that would provide the best industry benchmarks.
See also
- Virtualization
- Virtualization Development
- Virtual machine
- Virtualization Comparison
- Comparison of Application Virtual Machines
- Emulation
- Native virtualization
- Paravirtualization
- Operating system-level virtualization
External links
- General links
- Xen and the Art of Virtualization - Paper on Xen Paravirtualization
- Linux-VServer - OS-Level Virtualization for Linux
- OpenVZ - OS-Level Virtualization for Linux
- VMware - x86 virtual machine software.
- Virtual Iron - Native virtualizaiton, first virtualization to fully leverage VT for 32 and 64-bit operating systems.
- Virtuozzo - OS-Level virtualization software.
- VirtualLogix - Real-Time virtualization
- Trango Systems - Trango, the real-time embedded hypervisor.
- Detecting hardware assisted hypervisor's
- Timing attack to detect presence of hardware assisted VMM
- General current information about x86 Virtualization
- Hardware virtualization VT from Intel
- Official Intel Virtualization Technology website with PowerPoint/PDF documents on the specifications
- Intel Virtualization Technology (VT) Explained
- Intel Virtualization Technology, includes technical specifications in PDF format
- Analysis of the Intel Pentium's Ability to Support a Secure Virtual Machine Monitor (PDF) by John Scott Robin and Cynthia E. Irvine, details the difficulties in virtualizing the traditional x86 architecture
- Keith Adams. VT hits the streets
- Keith Adams. VT Coverage: Predictable and Complete Confusion.
- Alex Vasilevsky. New Approach to Virtualizing x86s.
- Hardware virtualization Pacifica from AMD
- AMD Previews 'Pacifica' Virtualization Technology
- AMD Preps 'Pacifica' Virtualization Technology
- AMD's virtualization solutions
- Virtualization Technology For AMD Architecture
- Coming Soon to VMware, Microsoft, and Xen: AMD Virtualization Technology Solves Virtualization Challenges. A very concise, intuitive introduction.
- Processor-Based Virtualization, AMD64 Style
- (non-x86) Hardware virtualization from IBM
- (non-x86) Hardware virtualization for SPARC
- Blogs discussing virtualization technologies
- http://tarrysingh.blogspot.com/ = Fastest growing blog on Virtualization! =
- http://blog.baeke.info
- http://blog.scottlowe.org/
- http://www.dabcc.com/DABCC/WebApplication/Aspx/news.aspx?intCategoryNews=62
- http://weblog.infoworld.com/virtualization/
- http://www.roudybob.net/
- http://www.vi411.org/
- http://www.virtualiron.com/fusetalk/blog/index.cfm
- http://www.virtualizationdaily.com/
- http://virtualization.info/
- http://virtualize.wordpress.com/
- http://www.vmblog.com/
- http://blogs.vmware.com/vmtn/
Cite error:
<ref>
tags exist, but no <references/>
tag was found