Intel® Virtualization Technology (VT) has significantly impacted the way embedded design teams combine many tasks on one processor – whether that processor is a single or multicore design. Running multiple virtualized operating systems on one processor allows one system to replace two or more and adds the ability to partition critical applications on a secure operating system separate from user-interface code and other features that might run on a general-purpose operating system. But virtualization does require a hypervisor layer that can adversely impact performance. Paravirtualization techniques integrated in operating systems can minimize that performance impact.
Before we jump into the paravirtualization topic, I’ll provide a quick reading list for anyone wanting to read more about Intel VT and virtualization in general. We’ve covered the topic a lot here on the community.
- Virtualization shrinks embedded platforms
- Virtualization boosts security for internet-connected devices
- Porting legacy software using virtualization
- Improving system availability using virtualization
- Virtualization – Power of three, or should one prevail?
Only the last of the above links addresses paravirtualization so let’s move along toward that topic. The most common virtualization implementations present an operating system with a virtual machine with software interfaces that mimic the underlying hardware. That virtualization layer is typically implemented in a hypervisor and allows a guest operating system to run unmodified. The software virtual machine impacts performance because it must handle software accesses that would be made directly to hardware in a non-virtual environment.
Paravirtualization requires that an operating system be modified to run in the virtual environment. Critical elements of the operating system execute directly in the host domain with direct access to the hardware rather than in the virtual domain where access is always limited to the virtual machine.
The problem with paravirtualization is obviously the requirement to modify the operating system. That process is certainly time consuming and time-to-market is always a key concern. Moreover, you simply can’t get the access needed to paravirtualize commercial products such as Microsoft* Windows.
Fortunately there is middle ground and emerging technologies that can provide the performance benefits of paravirtualization without the necessity of extensive operating system modifications.
Let’s continue the discussion relative to virtualization products and technology from embedded-software specialist Wind River**. The company stresses its target in labeling the technology Embedded Virtualization. The company is quick to note that the virtualization requirements in embedded systems are quite different than in the IT and server space The company’s Wind River Hypervisor is designed to support real-time deterministic response, a small footprint, and maximum application and operating-system performance.
Wind River CTO Tomas Evensen authored a white paper called “Multicore challenges and choices: Deciding which solution is right for you.” While the paper uses multicore as a medium for discussion, virtualization is the focus as the technology that can get the most out of a processor in terms of taking on multiple applications. The paper describes how you can virtualize an entire processor, memory, or specific hardware features of a processor.
The paper notes specific requirements for optimal embedded virtualization. Among those two stand out. The hypervisor when possible maps devices directly into the guest operating system for maximum performance. And again when possible the guest operating systems are paravirtualized to run efficiently on the hypervisor.
So how does this play out in the real word and which technologies are there for us when we can’t paravirtualize an operating system? I asked Evensen essentially those questions. He noted that the Wind River Hypervisor can run Windows XP and 7 unmodified. Moreover, he said that Intel® VT has provided a significant performance boost running such general-purpose operating systems. And design teams like to use them for features such as the embedded user interface and for connection to the IT world. Intel VT is available on all of the first- and second-generation Intel® Core™ processors and on others as well including some members of the Intel® Atom™ family.
Still Evensen said that there are things you can do to boost Windows performance further. For example you can replace standard Windows drivers with custom ones. He said that Wind River can dynamically install a network driver designed to work with the Wind River Hypervisor that is faster than what would essentially be an emulation of the network interface with the standard virtualized driver. What he described is basically paravirtualization of the network driver.
Wind River’s own VxWorks and Wind River Linux have paravirtualization features driven deeper into the operating systems to maximize performance when used in a virtual environment. As the nearby figure shows, the Wind River Hypervisor can host VxWorks, Linux, Windows, and other operating systems. Note the technology targets a broad range of applications including military & aerospace, medical, industrial, automotive, and communications.
What types of performance issues have you faced using virtualization technology? Have you turned to paravirtualization for the mission-critical applications that were part of a larger system design. Fans of the Intel® Embedded Community would greatly appreciate it if you shared your insights. Please comment and let us know if virtualization is a standard part of your embedded toolbox.
Roving Reporter (Intel Contractor)
Intel® Embedded Alliance
*Microsoft is an Associate member of the Intel® Embedded Alliance
** Wind River is an Associate member of the Alliance.
To learn more about virtualization for embedded devices, visit intel.com/go/embedded-virtualization