Andrew Kryczka 1613fa9490 Thread-specific histogram statistics
Summary:
To reduce contention for atomics when HistogramStats are shared across
threads, this diff makes them thread-specific so updates are faster. This comes
at the expense of slower reads (much less frequent), which now require merging
all histograms. In this diff,

- Thread-specific HistogramImpl is created upon the thread's first measureTime()
- Thread-specific HistogramImpl are merged and deleted upon thread termination or ThreadLocalPtr destruction, whichever comes first
- getHistogramString() and histogramData() merge all histograms, both thread-specific and previously merged ones

Test Plan:
unit tests, ran db_bench and verified histograms look similar

before:

  $ TEST_TMPDIR=/dev/shm/ perf record -g ./db_bench --benchmarks=readwhilewriting --statistics --num=1000000 --use_existing_db --threads=64 --cache_size=250000000 --compression_type=lz4
  ...
  +    7.63%  db_bench     db_bench             [.] rocksdb::HistogramStat::Add

after:

  $ TEST_TMPDIR=/dev/shm/ perf record -g ./db_bench --benchmarks=readwhilewriting --statistics --num=1000000 --use_existing_db --threads=64 --cache_size=250000000 --compression_type=lz4
  ...
  +    0.98%  db_bench     db_bench             [.] rocksdb::HistogramStat::Add

Reviewers: sdong, MarkCallaghan, kradhakrishnan, IslamAbdelRahman

Reviewed By: IslamAbdelRahman

Subscribers: andrewkr, dhruba, leveldb

Differential Revision: https://reviews.facebook.net/D62649
2016-08-31 14:02:09 -07:00
..
2016-08-19 12:28:19 -07:00
2016-08-31 08:56:34 -07:00
2016-08-19 12:28:19 -07:00
2016-05-06 17:42:50 -07:00
2016-06-01 18:07:59 -07:00
2016-03-17 10:07:21 -07:00
2016-03-17 10:07:21 -07:00
2016-07-15 10:41:36 -07:00
2016-03-11 22:56:25 -08:00
2016-03-15 11:38:15 -07:00
2016-05-23 12:27:27 -07:00
2016-08-17 00:42:35 -07:00
2016-07-08 17:50:51 -07:00
2016-02-17 20:22:40 +08:00
2016-08-17 00:42:35 -07:00
2016-08-19 16:43:31 -07:00
2016-08-19 16:43:31 -07:00
2016-06-10 16:37:36 -07:00
2016-04-01 11:06:06 -07:00