Helios: Heterogeneous Multiprocessing with Satellite Kernels - Nightingale, Edmund B; Hodson, Orion; McIlroy, Ross; Hawblitzel, Chris; Hunt, Galen (Proceedings of the 22nd Symposium on Operating Systems Principles (SOSP '09), 2009)
Helios is an operating system designed to simplify the task of writing, deploying, and tuning applications for heterogeneous platforms. Helios introduces satellite kernels, which export a single, uniform set of OS abstractions across CPUs of disparate architectures and performance characteristics. Access to I/O services such as ﬁle systems are made transparent via remote message passing, which extends a standard microkernel message-passing abstraction to a satellite kernel infrastructure. Helios retargets applications to available ISAs by compiling froman intermediate language. To simplify deploying and tuning application performance, Helios exposes an afﬁnity metric to developers. Afﬁnity provides a hint to the operating system about whether a process would beneﬁt from executing on the same platform as a service it depends upon. We developed satellite kernels for an XScale programmable I/O card and for cache-coherent NUMA architectures. We ofﬂoaded several applications and operating system components, often by changing only a single line of metadata. We show up to a 28% performance improvement by ofﬂoading tasks to the XScale I/O card. On a mail-server benchmark, we show a 39% improvement in performance by automatically splitting the application among multiple NUMA domains.