[
https://issues.apache.org/jira/browse/HBASE-7612?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15340438#comment-15340438
]
Enis Soztutar commented on HBASE-7612:
--------------------------------------
Now that HBase-2.0 is JDK-8 only, we can revisit this. I've done a basic test,
and LongAdder is faster than our forked Counter implementation from my
micro-benchmark:
threads=1
{code}
Benchmark Mode Cnt Score
Error Units
CountersBenchmark.testIncrementAtomicLong thrpt 200 92234852.622 ±
162115.932 ops/s
CountersBenchmark.testIncrementCounter thrpt 200 59320305.701 ±
482597.475 ops/s
CountersBenchmark.testIncrementLongAdder thrpt 200 74932942.690 ±
87463.568 ops/s
{code}
threads=8
{code}
Benchmark Mode Cnt Score
Error Units
CountersBenchmark.testIncrementAtomicLong thrpt 200 34087507.496 ±
666013.635 ops/s
CountersBenchmark.testIncrementCounter thrpt 200 452497965.994 ±
7419222.873 ops/s
CountersBenchmark.testIncrementLongAdder thrpt 200 564211175.749 ±
2306961.876 ops/s
{code}
threads=max (24)
{code}
# Detecting actual CPU count: 24 detected
Benchmark Mode Cnt Score
Error Units
CountersBenchmark.testIncrementAtomicLong thrpt 200 35218226.606 ±
998791.734 ops/s
CountersBenchmark.testIncrementCounter thrpt 200 653494810.370 ±
48383212.204 ops/s
CountersBenchmark.testIncrementLongAdder thrpt 200 1169425248.335 ±
4128542.456 ops/s
{code}
This is with jdk1.8.0_71 and 24 virtual cores.
Counter is one of the classes used in histogram metrics, which shows up pretty
hot in the workloadc profiles. cc [[email protected]], [~eclark].
> [JDK8] Replace use of high-scale-lib counters with intrinsic facilities
> -----------------------------------------------------------------------
>
> Key: HBASE-7612
> URL: https://issues.apache.org/jira/browse/HBASE-7612
> Project: HBase
> Issue Type: Sub-task
> Reporter: Andrew Purtell
> Priority: Trivial
> Fix For: 2.0.0
>
>
> JEP155 introduces a few new classes (DoubleAccumulator, DoubleAdder,
> LongAccumulator, LongAdder) that "internally employ contention-reduction
> techniques that provide huge throughput improvements as compared to Atomic
> variables". There are applications of these where we are currently using
> Cliff Click's high-scale-lib and for metrics.
> See http://openjdk.java.net/jeps/155
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)