[ 
https://issues.apache.org/jira/browse/KAFKA-3115?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15107835#comment-15107835
 ] 

Ismael Juma commented on KAFKA-3115:
------------------------------------

Thanks for recording it here, definitely useful.

> 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)

Reply via email to