  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.
