Speed, Parallelism, Safety: Choose all three high-performance data structures for multithread applications

Thursday 19th October, from 5 to 5.40 PM

Multithread programming is hard, and we have been forced to choose between speed, parallelism and safety: generally, we choose safety and parallelism at the cost of speed. In 2017 multithread programming is made harder by the fact that CPUs are now “out of order asynchronous task execution engines” (from the Intel 64 architecture manual). For years we have resorted to the mutex and readwrite lock to enable our parallel servers, but as the number of hardware threads has increased rapidly, these techniques just haven’t scaled. Even worse, incorrectly used mutexes cause subtle bugs and crashes that we
just can’t track down.

In this presentation, William will describe how the internals of a CPU work, how thread safety can be achieved with proper use of CPU behaviours, and will demonstrate how native multithread data structures can make LDAP servers operate without mutexes, allowing parallel reads and writes, guaranteeing reliability and safety. The numbers speak for themself:

PL_Hashmap: min 2.03 sec, max 3.14 sec, mean 2.59 sec
SDS COW Tree: min: 1.11 sec, max 3.04 sec, mean 1.89 sec

9_William Brown_speedsaftetyparrallel License CC-BY-SA

William Brown

When he is not riding kangaroos in the outback, William Brown is a software engineer for Red Hat Australia, specialising in identity management software. As a member of the 389 Directory Server core team, he focuses on the reliability and correctness of LDAP servers. He has previously spoken at Linux Conf Australia about the integration of safe languages like Rust with LDAP servers (https://www.youtube.com/watch?v=AWnza5JX7jQ).

Back to conference program