[
https://issues.apache.org/jira/browse/HBASE-16146?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15514741#comment-15514741
]
Gary Helmling commented on HBASE-16146:
---------------------------------------
We've seen Counter come up as a source of high CPU utilization in 1.3,
especially since the switch of metrics to use FastLongHistogram (each instance
of which uses 260 Counter instances internally) from HBASE-15222. I think this
is due to the use of the instance-level ThreadLocal in Counter to track the
per-thread cell index, as perf output on hot nodes shows a huge amount of time
in ThreadLocalMap.getEntryAfterMiss(). As the number of Counter instances (and
ThreadLocal instances) we're retaining in memory grows, performance seems to
degrade.
This is all moot for master, since we've already deprecated Counter and
replaced its usage with LongAdder. But we still need a solution for Counter in
branch-1. I'm testing a patch which removes the ThreadLocal usage, which I'll
attach here. Benchmarking shows a small reduction in Counter performance, but
a big improvement in FastLongHistogram performance when many histograms are
retained in memory.
> Counters are expensive...
> -------------------------
>
> Key: HBASE-16146
> URL: https://issues.apache.org/jira/browse/HBASE-16146
> Project: HBase
> Issue Type: Sub-task
> Reporter: stack
> Attachments: counters.patch, less_and_less_counters.png
>
>
> Doing workloadc, perf shows 10%+ of CPU being spent on counter#add. If I
> disable some of the hot ones -- see patch -- I can get 10% more throughput
> (390k to 440k). Figure something better.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)