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.