October 8th, 2013 by
By Bernhard Hartmann
Sales Manager, Central Europe
In many situations the use of virtualization can be an effective IT strategy.
For example, virtualization can help conserve power through better hardware utilization. With virtualization, reliability can be enhanced and costs reduced by consolidating and running multiple applications on 24/7 servers. Virtualized applications are easy to move to different servers; disaster recovery is facilitated by using virtual machines.
So far so good. However, when we look at virtualization in real-time environments, the value is not so tangible. In fact, there are many difficult challenges to overcome.
In a real-time virtualization scenario guaranteeing determinism is a prerequisite. Unfortunately, the virtualized determinism might break if the cache needs to be reloaded too often. If, during that time, a higher priority interrupt needs to be handled, or an application needs to run in a certain time, sporadic errors can occur.
These errors are extremely difficult to find as they occur only sporadically and under special circumstances.
Inter-process communications are complicated in virtualization if you require direct access to the hardware. Add to this the fact that in many cases you are using multiple development environments, which is more costly as well more complex. To locate a problem, you might have to deal with three different aspects: the virtualization system; Microsoft Windows, and the guest RTOS. Not an easy task, especially as applications get more and more complex.
There is a non-virtualized way to overcome these real-time obstacles – IntervalZero’s RTX real-time software, which transforms Windows into an RTOS without altering Windows in any way.
Developers have full, direct access to the hardware and in a single Visual Studio development environment they can debug and develop. The IPCs are much easier to handle as RTX provides a single instance of the runtime system memory and hardware transparency for all available RTX cores. Another plus is RTX support for symmetric multi-processing systems by setting a breakpoint on one thread running on a specific core dedicated to RTX.
Virtualization can be an effective IT strategy, but real-time development is not its proper place.