Opinions, rants, and straight facts to help you get the most out of open source.

Category Archives: multicore

The virtualized square peg

My Linux background started with supercomputing at SGI about 10 years ago. Since I moved into MontaVista about six years ago I’ve been watching embedded Linux encounter a lot of the same issues we had in High Performance Computing, namely how to make good use of all the processing power in new multi-core silicon. Most of the talk in the industry is focused on “virtualization” but I think this is a mistake for a few reasons.

1. Virtualization has been around for a long time, and Intel’s market dominance along with the popularity of VMWare products have driven this technology into the mainstream. Hypervisors like VMWare’s ESX continue to gain ground in data centers where they help cut hardware costs. Now that embedded developers are getting their hands on multi-core silicon, everyone seems ready to promote hypervisor-based virtualization as the technology that embedded developers need. Is this a solution looking for a problem? Do embedded developers need a layer of abstraction between their OS and their hardware? That’s not a problem I hear from MontaVista customers (though there are a few niches in embedded where it’s appropriate).

2. What’s really happening here is that companies are trying to re-purpose their Enterprise technologies into Embedded. Virtualization is the square peg that they’re hammering into the round hole. Enterprise Linux is a one-size-fits-all market, and this isn’t the first time companies have ignored the real need of embedded developers to deeply customize solutions within very tight constraints.

3. Embedded developers now have more horsepower available to them, and each design will have custom requirements above and beyond hypervisors (if you have a hammer, every problem looks like a nail). The real issues here include: how to transform a single-threaded application into multi-core application, how to distribute those threads across more cores, how to control and limit resources allocated to those threads, and how to provide a reproducible run-time environment. Linux can already provide most of these capabilities without the need for a hypervisor or a proprietary RTOS running next to Linux.

In the new release of MontaVista Linux Carrier Grade Edition, we’ve added a number of solutions for multi-core resource management. These include Linux Containers, our new Bare Metal Engine, and even KVM for those occurrences when you do need a hypervisor. For more information on what technologies you can use in your Linux multi-core design, check out the Multi-core Resource Management section of the MontaVista Carrier Grade Linux datasheet, or listen to Jim Ready, our CTO, in this short video called the Embedded Linux Virtualization Primer.

© 2011 MontaVista Software, LLC. All Rights Reserved