Jay Kreps created KAFKA-3115:
--------------------------------
Summary: Remove locking in metrics package
Key: KAFKA-3115
URL: https://issues.apache.org/jira/browse/KAFKA-3115
Project: Kafka
Issue Type: Improvement
Reporter: Jay Kreps
Currently there is synchronization inside the call
Sensor.record(value)
This one lock covers updating all the metrics associated with the Sensor.
The nice thing about this is that it makes the implementation of the various
stats very simple since they can always assume they execute inside a lock.
Unfortunately the metrics show up as one of the biggest perf hits in the
producer when sending small messages.
It might be possible to optimize this. One approach would be to try to make the
stats themselves threadsafe. Obviously introducing locking in the stats
themselves would make things worse than they currently are (since the problem
is the overhead of the lock not the contention). However it might be possible
to cut-and-paste the code for DoubleAdder or AtomicDouble (neither are included
in java 7) and do some tricky coding.
The hard bits would be SampledStat and Histogram.
Prior to attempting this, it would make sense to remove the synchronization and
benchmark the producer to see how much improvement is actually possible.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)