You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@hbase.apache.org by "Enis Soztutar (JIRA)" <ji...@apache.org> on 2016/06/20 21:27:57 UTC
[jira] [Commented] (HBASE-7612) [JDK8] Replace use of
high-scale-lib counters with intrinsic facilities
[ 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 [~saint.ack@gmail.com], [~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)