Applicative 2016 / Speakers

Davidlohr Bueso


Futex Scaling for Multi-core Systems

The Linux kernel provides futexes as building blocks for creating userspace synchronization primitives. The main advantage, over more traditional schemes, such as sysv ipc, is that futexes are extremely fast in uncontended scenarios, avoiding any interaction with the kernel. Due to their overall architecture and the availability of increasingly larger systems, futexes have presented a number of challenges and bottlenecks on real systems. As such, there has been a good amount of efforts to make them scale at a kernel level, but using futexes efficiently at a user level is just as important. This talk is to provide both an overview of futex internals as well as techniques and best practices for using futexes on multi- core NUMA systems, avoiding common pitfalls and making better use of the available hardware.


Davidlohr Bueso is a performance engineer at SUSE Labs. He is an active Linux kernel contributor in areas such as synchronization primitives, memory management, and IPC—all with a special focus on scalability.

Twitter: @davidlohr

© 2016 ACM.