[
https://issues.apache.org/jira/browse/HDDS-14345?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Siddhant Sangwan updated HDDS-14345:
------------------------------------
Summary: Performance optimisation for RandomPipelineChoosePolicy (was:
Performance optimisation for random pipeline choose policy)
> Performance optimisation for RandomPipelineChoosePolicy
> -------------------------------------------------------
>
> Key: HDDS-14345
> URL: https://issues.apache.org/jira/browse/HDDS-14345
> Project: Apache Ozone
> Issue Type: Improvement
> Components: SCM
> Reporter: Siddhant Sangwan
> Assignee: Siddhant Sangwan
> Priority: Major
>
> Using ThreadLocalRandom instead of Math.random() gives significant
> performance improvement in my micro benchmark. Small improvement for the
> overall system, but still worth it since it's a simple change and this policy
> is used for each container allocation.
> Without ThreadLocalRandom (current master branch):
> {code}
> ---- S6 pipelines=500 healthy=100% threads=8 ----
> BEGIN_MEASURE method=choosePipelineIndex policy=Random pipelines=500
> threads=8 itersPerThread=200000
> END_MEASURE method=choosePipelineIndex policy=Random pipelines=500 threads=8
> itersPerThread=200000
> choosePipelineIndex Random n=500 thr=8 295.03 ns/op 3389471
> ops/s sink=11761373
> {code}
> So for selecting one out of 500 pipelines and 8 threads doing this, the
> latency is 295.03 nanoseconds per operation.
> With ThreadLocalRandom:
> {code}
> ---- S6 pipelines=500 healthy=100% threads=8 ----
> BEGIN_MEASURE method=choosePipelineIndex policy=Random pipelines=500
> threads=8 itersPerThread=200000
> END_MEASURE method=choosePipelineIndex policy=Random pipelines=500 threads=8
> itersPerThread=200000
> choosePipelineIndex Random n=500 thr=8 6.25 ns/op 160065355
> ops/s sink=12453620
> {code}
> Latency = 6.25 nanoseconds per operation.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]