[CONTROLLER-1561] Cluster transaction pipelining function Created: 26/Oct/16  Updated: 25/Jul/23  Resolved: 29/Dec/16

Status: Resolved
Project: controller
Component/s: clustering
Affects Version/s: None
Fix Version/s: None

Type: Bug
Reporter: HeYunBo Assignee: Tom Pantelis
Resolution: Done Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified
Environment:

Operating System: All
Platform: All


Issue Links:
Blocks
is blocked by YANGTOOLS-700 Cluster transaction pipelining requi... Resolved
External issue ID: 7033

 Description   

I have finished the cluster transaction pipelining function and have done performance test in boron, the tx rate increased greatly. The function involved the following projects.

1. sal-akka-raft
2. sal-distribute-datastore
3. yangtools(yang-data-api yang-data-impl) has been submit

The yangtools support has been submitted https://git.opendaylight.org/gerrit/#/c/47569/



 Comments   
Comment by HeYunBo [ 26/Oct/16 ]

sal-akka-raft
https://git.opendaylight.org/gerrit/#/c/47576/

sal-distribute-datastore
https://git.opendaylight.org/gerrit/#/c/47578/

The core implementations is ShardDataTree.java AbstractDataTreeTip.java

Comment by HeYunBo [ 26/Oct/16 ]

In order to maintain the stability of the current transaction function,provides JMX API to enable transaction pipeline policy. meanwhile, this function need to disable TransactionRateLimiter

Comment by Robert Varga [ 29/Oct/16 ]

I believe the ShardDataTree bits are conceptually fine – in fact this is precisely why there is a DataTreeCandidateTip and we have a ShardDataTree in its current shape and form.

Why does the TransactionLimiter need to be disabled, though? Is it causing problems?

Comment by HeYunBo [ 31/Oct/16 ]

The TransactionLimiter is used to measure the transaction latency.

Normally, the TransactionCreationRateLimit is 500~700

The TransactionCreationRateLimit is 400~500 if keep TransactionLimiter in transaction pipeline process , the total tx rate will be as same as before per shard even though in multi-thread Condition

Comment by Tom Pantelis [ 31/Oct/16 ]

(In reply to HeYunBo from comment #4)
> The TransactionLimiter is used to measure the transaction latency.
>
> Normally, the TransactionCreationRateLimit is 500~700
>
> The TransactionCreationRateLimit is 400~500 if keep TransactionLimiter in
> transaction pipeline process , the total tx rate will be as same as before
> per shard even though in multi-thread Condition

Are you saying the TransactionLimiter artificially limits the rate? We can't disable the rate limiting. However, Robert is re-implementing the front-end along with the rate limiting.

Comment by HeYunBo [ 04/Nov/16 ]

Yes, actually,the TransactionLimiter limits the rate, the implements need to be reconsidered when enable the transaction pipelining function

Comment by Tom Pantelis [ 15/Dec/16 ]

The first patch, https://git.opendaylight.org/gerrit/#/c/28775/, to handle the DataTreeCandidate chaining has been merged.

Submitted a second patch to implement the transaction pipe-lining: https://git.opendaylight.org/gerrit/#/c/49384/

Comment by Tom Pantelis [ 21/Dec/16 ]

Remaining patches:

https://git.opendaylight.org/gerrit/#/c/49439/
https://git.opendaylight.org/gerrit/#/c/49498/
https://git.opendaylight.org/gerrit/#/c/49689/

Generated at Wed Feb 07 19:55:51 UTC 2024 using Jira 8.20.10#820010-sha1:ace47f9899e9ee25d7157d59aa17ab06aee30d3d.