Pthreads programming
High performance dynamic lock-free hash tables and list-based sets
Proceedings of the fourteenth annual ACM symposium on Parallel algorithms and architectures
A low-overhead coherence solution for multiprocessors with private cache memories
ISCA '84 Proceedings of the 11th annual international symposium on Computer architecture
A study of Erlang ETS table implementations and performance
Proceedings of the 2003 ACM SIGPLAN workshop on Erlang
Hazard Pointers: Safe Memory Reclamation for Lock-Free Objects
IEEE Transactions on Parallel and Distributed Systems
Concurrent cache-oblivious b-trees
Proceedings of the seventeenth annual ACM symposium on Parallelism in algorithms and architectures
Split-ordered lists: Lock-free extensible hash tables
Journal of the ACM (JACM)
Linear hashing with partial expansions
VLDB '80 Proceedings of the sixth international conference on Very Large Data Bases - Volume 6
Performance of memory reclamation for lockless synchronization
Journal of Parallel and Distributed Computing
A practical concurrent binary search tree
Proceedings of the 15th ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming
A simple optimistic skiplist algorithm
SIROCCO'07 Proceedings of the 14th international conference on Structural information and communication complexity
Proceedings of the 10th ACM SIGPLAN workshop on Erlang
A scalability benchmark suite for Erlang/OTP
Proceedings of the eleventh ACM SIGPLAN workshop on Erlang workshop
The Art of Multiprocessor Programming, Revised Reprint
The Art of Multiprocessor Programming, Revised Reprint
Hi-index | 0.00 |
The Erlang Term Storage (ETS) is an important component of the Erlang runtime system, especially when parallelism enters the picture, as it provides an area where processes can share data. It is therefore important that ETS's implementation is efficient, flexible, but also as scalable as possible. In this paper we document and describe the current implementation of ETS in detail, discuss the main data structures that support it, and present the main points of its evolution across Erlang/OTP releases. More importantly, we measure the scalability of its implementations, the effects of its tuning options, identify bottlenecks, and suggest changes and alternative designs that can improve both its performance and its scalability.