-
Notifications
You must be signed in to change notification settings - Fork 86
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
Run bench on demo #1552
Run bench on demo #1552
Conversation
Transaction costsSizes and execution budgets for Hydra protocol transactions. Note that unlisted parameters are currently using
Script summary
|
Parties | Tx size | % max Mem | % max CPU | Min fee ₳ |
---|---|---|---|---|
1 | 5188 | 5.81 | 2.30 | 0.44 |
2 | 5389 | 7.18 | 2.84 | 0.47 |
3 | 5588 | 8.46 | 3.34 | 0.49 |
5 | 5993 | 11.32 | 4.48 | 0.54 |
10 | 6998 | 18.20 | 7.20 | 0.66 |
56 | 16250 | 81.53 | 32.25 | 1.76 |
Commit
transaction costs
This uses ada-only outputs for better comparability.
UTxO | Tx size | % max Mem | % max CPU | Min fee ₳ |
---|---|---|---|---|
1 | 559 | 10.52 | 4.15 | 0.29 |
2 | 747 | 13.86 | 5.65 | 0.34 |
3 | 931 | 17.33 | 7.20 | 0.38 |
5 | 1304 | 24.65 | 10.44 | 0.48 |
10 | 2247 | 45.22 | 19.36 | 0.75 |
20 | 4121 | 95.99 | 40.76 | 1.40 |
CollectCom
transaction costs
Parties | UTxO (bytes) | Tx size | % max Mem | % max CPU | Min fee ₳ |
---|---|---|---|---|---|
1 | 57 | 549 | 22.14 | 8.66 | 0.42 |
2 | 113 | 663 | 32.96 | 13.05 | 0.54 |
3 | 169 | 769 | 44.09 | 17.69 | 0.67 |
4 | 227 | 879 | 60.01 | 24.20 | 0.85 |
5 | 283 | 994 | 78.11 | 31.66 | 1.05 |
6 | 336 | 1100 | 91.73 | 37.56 | 1.21 |
Cost of Decrement Transaction
Parties | Tx size | % max Mem | % max CPU | Min fee ₳ |
---|---|---|---|---|
1 | 615 | 17.71 | 7.79 | 0.38 |
2 | 847 | 20.18 | 9.47 | 0.42 |
3 | 945 | 21.33 | 10.65 | 0.44 |
5 | 1153 | 22.61 | 12.56 | 0.47 |
10 | 1925 | 31.25 | 19.56 | 0.63 |
50 | 8087 | 98.91 | 74.98 | 1.85 |
Close
transaction costs
Parties | Tx size | % max Mem | % max CPU | Min fee ₳ |
---|---|---|---|---|
1 | 659 | 21.02 | 9.43 | 0.42 |
2 | 735 | 22.07 | 10.47 | 0.44 |
3 | 862 | 23.46 | 11.84 | 0.46 |
5 | 1197 | 26.78 | 15.00 | 0.53 |
10 | 2043 | 35.48 | 23.25 | 0.69 |
50 | 8051 | 99.98 | 84.29 | 1.92 |
Contest
transaction costs
Parties | Tx size | % max Mem | % max CPU | Min fee ₳ |
---|---|---|---|---|
1 | 670 | 27.16 | 11.67 | 0.48 |
2 | 763 | 28.48 | 12.83 | 0.51 |
3 | 1022 | 31.06 | 15.03 | 0.55 |
5 | 1265 | 34.49 | 17.99 | 0.61 |
10 | 2091 | 44.83 | 26.75 | 0.80 |
38 | 5990 | 95.82 | 70.29 | 1.69 |
Abort
transaction costs
There is some variation due to the random mixture of initial and already committed outputs.
Parties | Tx size | % max Mem | % max CPU | Min fee ₳ |
---|---|---|---|---|
1 | 5055 | 17.36 | 7.55 | 0.57 |
2 | 5220 | 29.19 | 12.87 | 0.71 |
3 | 5320 | 41.54 | 18.32 | 0.85 |
4 | 5543 | 59.66 | 26.52 | 1.07 |
5 | 5672 | 77.35 | 34.44 | 1.27 |
6 | 5813 | 98.64 | 44.02 | 1.52 |
FanOut
transaction costs
Involves spending head output and burning head tokens. Uses ada-only UTxO for better comparability.
Parties | UTxO | UTxO (bytes) | Tx size | % max Mem | % max CPU | Min fee ₳ |
---|---|---|---|---|---|---|
5 | 0 | 0 | 5022 | 7.75 | 3.28 | 0.46 |
5 | 1 | 57 | 5057 | 9.08 | 4.08 | 0.48 |
5 | 5 | 285 | 5192 | 13.69 | 6.96 | 0.54 |
5 | 10 | 570 | 5362 | 18.87 | 10.31 | 0.61 |
5 | 20 | 1139 | 5702 | 30.38 | 17.51 | 0.77 |
5 | 30 | 1706 | 6041 | 42.10 | 24.80 | 0.94 |
5 | 40 | 2279 | 6383 | 53.03 | 31.76 | 1.09 |
5 | 50 | 2847 | 6721 | 64.37 | 38.89 | 1.25 |
5 | 81 | 4615 | 7776 | 99.53 | 61.01 | 1.74 |
End-to-end benchmark results
This page is intended to collect the latest end-to-end benchmark results produced by Hydra's continuous integration (CI) system from the latest master
code.
Please note that these results are approximate as they are currently produced from limited cloud VMs and not controlled hardware. Rather than focusing on the absolute results, the emphasis should be on relative results, such as how the timings for a scenario evolve as the code changes.
Generated at 2024-08-29 13:06:50.382260433 UTC
Baseline Scenario
Number of nodes | 1 |
---|---|
Number of txs | 3000 |
Avg. Confirmation Time (ms) | 4.194986589 |
P99 | 8.141198899999969ms |
P95 | 5.328280549999999ms |
P50 | 3.9952555ms |
Number of Invalid txs | 0 |
Three local nodes
Number of nodes | 3 |
---|---|
Number of txs | 9000 |
Avg. Confirmation Time (ms) | 23.726739321 |
P99 | 104.91504140000006ms |
P95 | 32.825234349999995ms |
P50 | 21.1135175ms |
Number of Invalid txs | 0 |
72917c3
to
5b79e80
Compare
9ddcc57
to
0d8ca5c
Compare
11ea4a6
to
ec0c35a
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I like that you have put a pull request description explaining how to use this.
However, it would be better (maybe even required) that you leave instructions somewhere on the repository that this mode exists and how to use it! Potential places:
- getting started documentation page (maybe not as this is a first touch point for people
- hydra-cluster/README.md which also explains the other running modes of the benchmarks: https://github.com/input-output-hk/hydra/blob/1b0111f0bd23349e1381a7952b38d22ff1386b24/hydra-cluster/README.md#L114 (probably best to explain it here)
Furthermore, I'm not too happy about where you "cut" and duplicated the existing dataset generation logic. I think we can re-use much more code if we not distinguish too and just fetch the faucet utxo before generating the UTxO. In the clean devnet case the dataset should still be deterministic (that's why we did do it with genesis utxo originally).
I see quite some unnecessary complexity also coming from the fact that we have Dataset
unchanged, while in demo mode we don't actually need the "fuel keys" in the ClientKeys
(actually we also don't need the hydra keys, see other comments). Our assumption is (and can be) that the nodes we connect to have access to the right keys and have some fuel to spend.
ae14fd4
to
c623c2a
Compare
In this case the parties are unknown but we still need to fetch the headId from a head id observation.
The reason is depends on before starting the hydra-cluster. That consumes the Faucet UTxO making the fundingTransaction from dataset invalid, thus making the scenario to fail.
This PR enhances the demo tutorial by enabling
hydra-cluster
benchmarks to run on an active Hydra cluster.usage
prerequisites
node-socket
.hydra-client
hosts.Todo
FIXME
about> 33
docker inspect
instead of parsing yaml (!)results.csv
is written to theoutputDirectory
not the tmp directory