-
Notifications
You must be signed in to change notification settings - Fork 404
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
add PID rate controller #30
Conversation
Signed-off-by: Nick Lincoln <[email protected]>
Hi @nklincoln , I still don't understand how to set the targetLoad as well as P/I/D. And sorry I don't have time to investigate the code. |
Hi @haojun, When I run the simple test with a fixed rate, the transaction backlog grows to a peak of approx 450. Whilst this means that the maximum possible throughput will be reached, if i was to run the test for 500000 txn, there would be a timeout at some point. Bringing down the maximum number of backlog transactions prevents the issue of timeouts, but does reduce the overall TPS as there is a deliberate limitation on the placement of transactions to be completed. |
OK, I see. But what's the purpose of restricting the number of backlogs?
|
Maybe maintaining a given e2e latency would be more appropriate here, if it's possible. |
Sorry for the delay in response - I'm not sure if I understand your point for item 2) above, but for 1) this is exactly why the rate controller should be used and is especially true for long running tests - for instance, how does a user know what TPS to lower it to when hitting a timeout, other than 'less than before'? As you mention, there are many factors impacting the SUT performance, and the multiple factors will result in a highly non-linear system. Using a systematic approach, this can be overcome:
There is an additional benefit - since the controller will enable running performance tests for an extended time (which is not guaranteed from a pure TPS limit) it would be useful for possible extension of Caliper into a Performance and reliability tool in the future. |
Hi,@nklincoln and then deal txs, like this: I am confused, Isn't it that pidrate control changes sleeptime according to the results of txs? |
Hi, yes - it should. There have been a few upstream changes that broke the Composer plugin - these should have been resolved with the latest PR that has been merged - would recommend that you try again ensuring that #122 is included in your code base |
@nklincoln Hi, in #122 Maybe the problem is resolved in composer, but my problem is occurring in fabric |
@nklincoln I use latest code , And the problem is still happened. I use Fabric network |
fix goLang metadata paths in network files
I have been using this controller to avoid timeouts during transactions; I suspect it will be useful for others too!
The controller mechanism acts to maintain a fixed level of backlog transactions, using a basic PID control mechanism to modify the driven transaction rate to achieve a fixed backlog. A user must prescribe control gains, as well as a starting TPS to seed the controller. There is an option to view controller output to assist tuning the controller for a specific system.
Contribution includes:
New rate controller with header description
Update of fixed-rate controller to add header description
Docs modification to indicate availability of controller
Signed-off-by: Nick Lincoln [email protected]