Scalable statistics counters

Statistics counters are important for purposes such as detecting excessively high rates of various system events, or for mechanisms that adapt based on event frequency. As systems grow and become increasingly NUMA, commonly used naive counters impose scalability bottlenecks and/or such inaccuracy that they are not useful. We present both precise and statistical (probabilistic) counters that are nonblocking and provide dramatically better scalability and accuracy properties. Crucially, these counters are competitive with the naive ones even when contention is low.

[1]  Erik Hagersten,et al.  Hierarchical backoff locks for nonuniform communication architectures , 2003, The Ninth International Symposium on High-Performance Computer Architecture, 2003. HPCA-9 2003. Proceedings..

[2]  Miklós Csürös,et al.  Approximate Counting with a Floating-Point Counter , 2009, COCOON.

[3]  Philippe Flajolet,et al.  Approximate counting: A detailed analysis , 1985, BIT.

[4]  Mark Moir,et al.  Lightweight parallel accumulators using C++ templates , 2011, IWMSE '11.

[5]  Robert H. Morris,et al.  Counting large numbers of events in small registers , 1978, CACM.

[6]  Haim Kaplan,et al.  CBTree: A Practical Concurrent Self-Adjusting Search Tree , 2012, DISC.

[7]  Nir Shavit,et al.  Lock Cohorting , 2015, ACM Trans. Parallel Comput..

[8]  Alex Garthwaite,et al.  Mostly lock-free malloc , 2002, ISMM '02.

[9]  A. Agarwal,et al.  Adaptive backoff synchronization techniques , 1989, ISCA '89.