Eliminating Single Process Bottlenecks with ETS Concurrency Patterns

Jay Nelson
A concurrent, multitasking engineer who avoids collecting his own garbage.

The Open Source library http://github.com/duomark/epocxy implements “Erlang Patterns of Concurrency” for high-throughput Erlang architectures on multicore machines. It implements common architectural patterns such as: 1) concurrent queues, stacks and ring buffers; 2) configurable limits on unbridled spawns; 3) generational caching; and 4) structured synchronization barriers. This talk describes common serialization issues, an explanation of how to solve them using ETS tables and a clinic on why a unified, mature library is needed to provide these capabilities to other projects.

Talk Objectives

1) Identify serial bottlenecks common to high-throughput architectures 2) Describe how ETS tables can be used to eliminate them 3) Demonstrate a convenient library and API for true concurrency

Target Audience

Both intermediate Erlang practitioners who have encountered the bottlenecks of OTP servers and beginners who need to understand the key issues to solve when producing reliable concurrent software. Expert developers may also be inspired to contribute their wisdom to enlarge the suite of patterns available to all engineers constructing concurrent, high-throughput Erlang systems.


A focus on backend servers, algorithms for handling streaming data, and highly available cloud-based services has fueled my journey across languages from APL/Prolog/LISP through Pascal/Modula/C++/C#/Java to Erlang. My experiments in Erlang Patterns Of Concurrency (epocxy) attempt to expand the features of OTP beyond single server patterns.

GitHub: duomark

Twitter: @duomark

Back to conference page