The project HermitCore (http://www.hermitcore.org) is a novel unikernel targeting at a scalable and predictable runtime behavior for HPC and cloud environments. HermitCore could be used a classical unikernel within a virtual machine. In addition, it extends the multi-kernel approach with unikernel features to provide better programmability and scalability for hierarchical systems. By starting HermitCore applications as multi-kernel, cores will be isolated from the Linux system and the applications run bare-metal on these cores. This approach achieves a lower OS jitter and a better scalability. HermitCore applications and the Linux system can communicate via an IP interface (e.g., inter-kernel communication) or via the message passing interface iRCCE, which was initially designed for the Single-Chip Cloud Computer (SCC).
HermitCore provides a comprehensive toolchain, which is based on the GCC and supports C/C++, Fortran, Go, Pthreads, and OpenMP. For an improvement of the performance, Intel’s OpenMP runtime is used instead of GCC’ per default. Therefore, Intel’s C-Compiler icc could be used as well to build HermitCore applications. Both runtimes are part of HermitCore’s source code.
In addition to the multi-kernel approach described above, HermitCore can be used as classical standalone unikernel as well. In this case HermitCore run a single-kernel exclusive on the hardware or within a virtual machine. This reduces the demand on resources and improves the boot time, which is an excellent behavior for cloud computing.
The docker image contains the complete toolchain (binutils, gcc, etc.) to build HermitCore applications.