论文标题

多核系统的Linux内核调度程序扩展程序

A Linux Kernel Scheduler Extension for Multi-core Systems

论文作者

Roca, Aleix, Rodríguez, Samuel, Segura, Albert, Marquet, Kevin, Beltran, Vicenç

论文摘要

Linux内核主要是为多编程环境设计的,但是高性能应用程序还有其他要求。此类应用程序是独立运行的,通常依靠运行时系统将应用程序的工作量分配在工作线程上,每个核心一个。但是,由于当前的OS限制,由于请求的资源,跟踪工人是否实际运行还是被阻止是不可行的。对于I/O密集应用程序,鉴于阻止线程的核心会闲置直到能够再次运行,这会导致大量的性能降低。在本文中,我们介绍了Linux内核扩展的概念验证,该扩展名为用户监控线程(UMT),该线程解决了此问题。我们的扩展程序允许通知所选线程何时阻止或未阻止的用户空间过程,从而使运行时可以安排在空闲核心上的其他工作。我们在Linux内核5.1上实现了扩展,并调整了OMPSS-2编程模型的NanoS6运行时,以利用它。对两个应用程序进行了测试,这些应用程序在经过测试的硬件和适当条件下报告了几乎2倍的加速。

The Linux kernel is mostly designed for multi-programed environments, but high-performance applications have other requirements. Such applications are run standalone, and usually rely on runtime systems to distribute the application's workload on worker threads, one per core. However, due to current OSes limitations, it is not feasible to track whether workers are actually running or blocked due to, for instance, a requested resource. For I/O intensive applications, this leads to a significant performance degradation given that the core of a blocked thread becomes idle until it is able to run again. In this paper, we present the proof-of-concept of a Linux kernel extension denoted User-Monitored Threads (UMT) which tackles this problem. Our extension allows a user-space process to be notified of when the selected threads become blocked or unblocked, making it possible for a runtime to schedule additional work on the idle core. We implemented the extension on the Linux Kernel 5.1 and adapted the Nanos6 runtime of the OmpSs-2 programming model to take advantage of it. The whole prototype was tested on two applications which, on the tested hardware and the appropriate conditions, reported speedups of almost 2x.

扫码加入交流群

加入微信交流群

微信交流群二维码

扫码加入学术交流群,获取更多资源