

Only few High-Performance Computing (HPC) applications exploit the whole computing power of current supercomputers. This trend is not likely to change in the near future since the performance increase is expected to stem from explicit parallelism adding to the burden of the application programmers to write efficient code. Co-scheduling is expected to be one means to cope with this issue by a revocation of the exclusive assignment of jobs to nodes and vice versa. This approach demands for dynamic schedules as jobs come and go influencing the optimal distribution of the processes across the cluster. Therefore, we consider virtualization techniques valuable for future supercomputers. On the one hand, they facilitate a strong isolation between applications running on the same nodes and enable the seamless migration thereof. On the other hand, recent hardware developments diminish the performance gap that is introduced by the virtualization layer to native execution.
In this chapter we present a comprehensive study of virtualization applied to HPC. In doing so, we do not only focus on quantitative aspects estimating the performance impact on common workloads but also discuss qualitative arguments for and against the deployment of virtualization in this context. Our results reveal that well configured Virtual Machines (VMs) can achieve close to native performance. However, the current HPC software stack requires adaptions for the support of transparent migrations and locality-aware communication.