Achieving multiprogramming scalability of parallel programs on Intel SMP platforms: Nanothreading in the Linux kernel

This paper presents the design and implementation of a nanothreading interface in the kernel of the Linux operating system for Intel Architecture-based symmetric multiprocessors. The objective of the nanothreading interface is to achieve robust performance of multithreaded programs and increased throughput in multiprogrammed shared memory multiprocessors, where multiple parallel and sequential programs with diverge characteristics and resource requirements execute simultaneously. The interface lets a multithreading runtime system and the kernel exchange critical scheduling information through loads and stores in shared memory, in order to enable parallel programs to adapt to dynamically changing resources and minimize their idle time. The same interface enhances the capability of the kernel scheduler to allocate resources evenly between competing programs. We discuss the main design and implementation issues concerning the nanothreading interface and provide experimental evidence which substantiates the efficiency of our implementation.