[ https://issues.apache.org/jira/browse/IGNITE-22835?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17911413#comment-17911413 ]
Alexey Scherbakov commented on IGNITE-22835: -------------------------------------------- Implemented shared distruptor (single queue for all events) and benchmarked this after merging recent main (rev b2edb816b85e057abb8bb688af6549b309f8a1cb) 32 writer threads Results are: # shared=false logit=true Benchmark (batch) (fsync) (partitionCount) Mode Cnt Score Error Units UpsertKvBenchmark.upsert 1 false 32 thrpt 20 212379.795 ± 28700.643 ops/s # shared=true logit=false Benchmark (batch) (fsync) (partitionCount) Mode Cnt Score Error Units UpsertKvBenchmark.upsert 1 false 32 thrpt 20 123629.541 ± 11835.884 ops/s # shared=true logit=true Benchmark (batch) (fsync) (partitionCount) Mode Cnt Score Error Units UpsertKvBenchmark.upsert 1 false 32 thrpt 20 262326.805 ± 35990.099 ops/s # shared=false logit=false Benchmark (batch) (fsync) (partitionCount) Mode Cnt Score Error Units UpsertKvBenchmark.upsert 1 false 32 thrpt 20 167142.261 ± 15218.456 ops/s Summary: this optimization shines only with logit log storage, so we need to productize it first before merging this. > Latency penalty for using disruptor threads > ------------------------------------------- > > Key: IGNITE-22835 > URL: https://issues.apache.org/jira/browse/IGNITE-22835 > Project: Ignite > Issue Type: Improvement > Reporter: Vladislav Pyatkov > Assignee: Alexey Scherbakov > Priority: Major > Labels: ignite-3 > Time Spent: 10m > Remaining Estimate: 0h > > h3. Motivation > All three disruptors are part of the RAFT implementation. Each time a command > has to be replicated, all the disruptors are used. This leads to a bad impact > on the entire operation's latency. > {noformat} > onBeforeApplyCmd:%node_3344%JRaft-Request-Processor-3 0.2 5415400 5415600 > Here is hidden 6.1 us > RaftNodeOnEvent:%node_3344%JRaft-NodeImpl-Disruptor_stripe_2-0 0.0 5421700 > 5421700 > -- > RaftNodeOnEvent:%node_3344%JRaft-NodeImpl-Disruptor_stripe_2-0 0.0 5421700 > 5421700 > Here is hidden 2.8 us > LogManagerOnEvent:%node_3344%JRaft-LogManager-Disruptor_stripe_2-0 0.1 > 5424500 5424600 > -- > flushLog:%node_3344%JRaft-LogManager-Disruptor_stripe_2-0 18.7 5426400 5445100 > Here is hidden 2.9 us > FSMCallerOnEvent:%node_3344%JRaft-FSMCaller-Disruptor_stripe_1-0 0.1 5448000 > 5448100 > {noformat} > h3. Definition of done > * We can try to use the disruptor wait policy, depending on the case. > * Maybe we can reduce a number of the dusruptor queues. -- This message was sent by Atlassian Jira (v8.20.10#820010)