Skip to content
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 reorg and parent distance metrics #4123

Merged
merged 2 commits into from
Jun 7, 2022
Merged

Conversation

dapplion
Copy link
Contributor

@dapplion dapplion commented Jun 7, 2022

Motivation

Description

  • Add forkChoiceReorgDistance metric
  • Add parentBlockDistance metric

dapplion added 2 commits June 7, 2022 21:16

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
@dapplion dapplion requested a review from a team as a code owner June 7, 2022 19:17
@dapplion dapplion mentioned this pull request Jun 7, 2022
7 tasks
@github-actions
Copy link
Contributor

github-actions bot commented Jun 7, 2022

Performance Report

✔️ no performance regression detected

Full benchmark results
Benchmark suite Current: 35449bd Previous: f74f9ef Ratio
altair processAttestation - 250000 vs - 7PWei normalcase 4.1788 ms/op 3.5326 ms/op 1.18
altair processAttestation - 250000 vs - 7PWei worstcase 6.6369 ms/op 5.1985 ms/op 1.28
altair processAttestation - setStatus - 1/6 committees join 233.43 us/op 190.14 us/op 1.23
altair processAttestation - setStatus - 1/3 committees join 438.72 us/op 369.19 us/op 1.19
altair processAttestation - setStatus - 1/2 committees join 635.50 us/op 518.02 us/op 1.23
altair processAttestation - setStatus - 2/3 committees join 804.63 us/op 671.44 us/op 1.20
altair processAttestation - setStatus - 4/5 committees join 1.1141 ms/op 907.26 us/op 1.23
altair processAttestation - setStatus - 100% committees join 1.3465 ms/op 1.0816 ms/op 1.24
altair processBlock - 250000 vs - 7PWei normalcase 31.074 ms/op 23.409 ms/op 1.33
altair processBlock - 250000 vs - 7PWei normalcase hashState 39.016 ms/op 35.767 ms/op 1.09
altair processBlock - 250000 vs - 7PWei worstcase 89.798 ms/op 76.414 ms/op 1.18
altair processBlock - 250000 vs - 7PWei worstcase hashState 121.47 ms/op 95.214 ms/op 1.28
phase0 processBlock - 250000 vs - 7PWei normalcase 4.0522 ms/op 3.3958 ms/op 1.19
phase0 processBlock - 250000 vs - 7PWei worstcase 53.552 ms/op 44.400 ms/op 1.21
altair processEth1Data - 250000 vs - 7PWei normalcase 846.31 us/op 770.46 us/op 1.10
Tree 40 250000 create 855.30 ms/op 738.91 ms/op 1.16
Tree 40 250000 get(125000) 336.88 ns/op 282.25 ns/op 1.19
Tree 40 250000 set(125000) 2.8635 us/op 2.2475 us/op 1.27
Tree 40 250000 toArray() 37.113 ms/op 30.272 ms/op 1.23
Tree 40 250000 iterate all - toArray() + loop 37.760 ms/op 30.265 ms/op 1.25
Tree 40 250000 iterate all - get(i) 124.30 ms/op 106.57 ms/op 1.17
MutableVector 250000 create 20.341 ms/op 14.535 ms/op 1.40
MutableVector 250000 get(125000) 15.592 ns/op 13.134 ns/op 1.19
MutableVector 250000 set(125000) 736.87 ns/op 660.02 ns/op 1.12
MutableVector 250000 toArray() 8.2252 ms/op 6.1312 ms/op 1.34
MutableVector 250000 iterate all - toArray() + loop 8.0656 ms/op 6.5430 ms/op 1.23
MutableVector 250000 iterate all - get(i) 3.7945 ms/op 3.2823 ms/op 1.16
Array 250000 create 7.8047 ms/op 5.5670 ms/op 1.40
Array 250000 clone - spread 4.1338 ms/op 3.4666 ms/op 1.19
Array 250000 get(125000) 1.7660 ns/op 1.5250 ns/op 1.16
Array 250000 set(125000) 1.7730 ns/op 1.5110 ns/op 1.17
Array 250000 iterate all - loop 201.29 us/op 167.85 us/op 1.20
effectiveBalanceIncrements clone Uint8Array 300000 107.47 us/op 97.281 us/op 1.10
effectiveBalanceIncrements clone MutableVector 300000 1.3650 us/op 672.00 ns/op 2.03
effectiveBalanceIncrements rw all Uint8Array 300000 304.52 us/op 252.90 us/op 1.20
effectiveBalanceIncrements rw all MutableVector 300000 238.09 ms/op 155.51 ms/op 1.53
phase0 afterProcessEpoch - 250000 vs - 7PWei 222.65 ms/op 181.72 ms/op 1.23
phase0 beforeProcessEpoch - 250000 vs - 7PWei 106.45 ms/op 69.306 ms/op 1.54
altair processEpoch - mainnet_e81889 626.46 ms/op 531.48 ms/op 1.18
mainnet_e81889 - altair beforeProcessEpoch 109.04 ms/op 96.528 ms/op 1.13
mainnet_e81889 - altair processJustificationAndFinalization 32.682 us/op 36.732 us/op 0.89
mainnet_e81889 - altair processInactivityUpdates 12.180 ms/op 10.373 ms/op 1.17
mainnet_e81889 - altair processRewardsAndPenalties 163.75 ms/op 83.015 ms/op 1.97
mainnet_e81889 - altair processRegistryUpdates 7.4310 us/op 5.7750 us/op 1.29
mainnet_e81889 - altair processSlashings 1.7770 us/op 1.6960 us/op 1.05
mainnet_e81889 - altair processEth1DataReset 1.9790 us/op 1.3530 us/op 1.46
mainnet_e81889 - altair processEffectiveBalanceUpdates 3.1054 ms/op 2.4549 ms/op 1.26
mainnet_e81889 - altair processSlashingsReset 10.479 us/op 5.9270 us/op 1.77
mainnet_e81889 - altair processRandaoMixesReset 11.940 us/op 7.7820 us/op 1.53
mainnet_e81889 - altair processHistoricalRootsUpdate 2.3840 us/op 1.1080 us/op 2.15
mainnet_e81889 - altair processParticipationFlagUpdates 8.5320 us/op 4.3020 us/op 1.98
mainnet_e81889 - altair processSyncCommitteeUpdates 1.8200 us/op 1.4250 us/op 1.28
mainnet_e81889 - altair afterProcessEpoch 232.01 ms/op 192.83 ms/op 1.20
phase0 processEpoch - mainnet_e58758 548.88 ms/op 500.66 ms/op 1.10
mainnet_e58758 - phase0 beforeProcessEpoch 224.61 ms/op 212.50 ms/op 1.06
mainnet_e58758 - phase0 processJustificationAndFinalization 32.745 us/op 30.910 us/op 1.06
mainnet_e58758 - phase0 processRewardsAndPenalties 135.05 ms/op 127.92 ms/op 1.06
mainnet_e58758 - phase0 processRegistryUpdates 20.865 us/op 14.375 us/op 1.45
mainnet_e58758 - phase0 processSlashings 1.8620 us/op 1.1380 us/op 1.64
mainnet_e58758 - phase0 processEth1DataReset 1.8580 us/op 1.4870 us/op 1.25
mainnet_e58758 - phase0 processEffectiveBalanceUpdates 2.4321 ms/op 2.2134 ms/op 1.10
mainnet_e58758 - phase0 processSlashingsReset 11.591 us/op 8.3770 us/op 1.38
mainnet_e58758 - phase0 processRandaoMixesReset 12.063 us/op 10.352 us/op 1.17
mainnet_e58758 - phase0 processHistoricalRootsUpdate 2.2320 us/op 1.7030 us/op 1.31
mainnet_e58758 - phase0 processParticipationRecordUpdates 10.129 us/op 9.9980 us/op 1.01
mainnet_e58758 - phase0 afterProcessEpoch 180.92 ms/op 158.37 ms/op 1.14
phase0 processEffectiveBalanceUpdates - 250000 normalcase 3.1518 ms/op 3.1584 ms/op 1.00
phase0 processEffectiveBalanceUpdates - 250000 worstcase 0.5 3.5116 ms/op 3.0133 ms/op 1.17
altair processInactivityUpdates - 250000 normalcase 28.936 ms/op 33.522 ms/op 0.86
altair processInactivityUpdates - 250000 worstcase 28.856 ms/op 27.810 ms/op 1.04
phase0 processRegistryUpdates - 250000 normalcase 13.375 us/op 14.698 us/op 0.91
phase0 processRegistryUpdates - 250000 badcase_full_deposits 521.53 us/op 609.62 us/op 0.86
phase0 processRegistryUpdates - 250000 worstcase 0.5 246.45 ms/op 212.09 ms/op 1.16
altair processRewardsAndPenalties - 250000 normalcase 89.799 ms/op 111.94 ms/op 0.80
altair processRewardsAndPenalties - 250000 worstcase 85.009 ms/op 77.964 ms/op 1.09
phase0 getAttestationDeltas - 250000 normalcase 13.448 ms/op 13.135 ms/op 1.02
phase0 getAttestationDeltas - 250000 worstcase 13.442 ms/op 13.470 ms/op 1.00
phase0 processSlashings - 250000 worstcase 5.7009 ms/op 5.9979 ms/op 0.95
altair processSyncCommitteeUpdates - 250000 285.64 ms/op 261.90 ms/op 1.09
BeaconState.hashTreeRoot - No change 563.00 ns/op 433.00 ns/op 1.30
BeaconState.hashTreeRoot - 1 full validator 68.968 us/op 56.004 us/op 1.23
BeaconState.hashTreeRoot - 32 full validator 687.74 us/op 548.04 us/op 1.25
BeaconState.hashTreeRoot - 512 full validator 6.6385 ms/op 6.0415 ms/op 1.10
BeaconState.hashTreeRoot - 1 validator.effectiveBalance 81.134 us/op 70.118 us/op 1.16
BeaconState.hashTreeRoot - 32 validator.effectiveBalance 1.8542 ms/op 956.20 us/op 1.94
BeaconState.hashTreeRoot - 512 validator.effectiveBalance 14.953 ms/op 12.978 ms/op 1.15
BeaconState.hashTreeRoot - 1 balances 60.448 us/op 53.911 us/op 1.12
BeaconState.hashTreeRoot - 32 balances 539.33 us/op 468.90 us/op 1.15
BeaconState.hashTreeRoot - 512 balances 5.3906 ms/op 4.6197 ms/op 1.17
BeaconState.hashTreeRoot - 250000 balances 95.452 ms/op 102.28 ms/op 0.93
aggregationBits - 2048 els - zipIndexesInBitList 36.187 us/op 24.424 us/op 1.48
regular array get 100000 times 77.841 us/op 67.397 us/op 1.15
wrappedArray get 100000 times 76.202 us/op 67.416 us/op 1.13
arrayWithProxy get 100000 times 33.796 ms/op 33.074 ms/op 1.02
ssz.Root.equals 587.00 ns/op 454.00 ns/op 1.29
byteArrayEquals 587.00 ns/op 443.00 ns/op 1.33
shuffle list - 16384 els 13.262 ms/op 10.956 ms/op 1.21
shuffle list - 250000 els 194.12 ms/op 162.83 ms/op 1.19
processSlot - 1 slots 14.560 us/op 10.304 us/op 1.41
processSlot - 32 slots 2.0714 ms/op 1.5612 ms/op 1.33
getEffectiveBalanceIncrementsZeroInactive - 250000 vs - 7PWei 1.0029 ms/op 357.08 us/op 2.81
getCommitteeAssignments - req 1 vs - 250000 vc 6.3860 ms/op 5.2716 ms/op 1.21
getCommitteeAssignments - req 100 vs - 250000 vc 8.7451 ms/op 7.2795 ms/op 1.20
getCommitteeAssignments - req 1000 vs - 250000 vc 9.4548 ms/op 7.7877 ms/op 1.21
computeProposers - vc 250000 21.315 ms/op 16.138 ms/op 1.32
computeEpochShuffling - vc 250000 202.06 ms/op 164.80 ms/op 1.23
getNextSyncCommittee - vc 250000 318.68 ms/op 266.76 ms/op 1.19
pass gossip attestations to forkchoice per slot 5.6294 ms/op 3.2032 ms/op 1.76
computeDeltas 3.5175 ms/op 3.1904 ms/op 1.10
computeProposerBoostScoreFromBalances 1.0499 ms/op 907.62 us/op 1.16
getPubkeys - index2pubkey - req 1000 vs - 250000 vc 2.2475 ms/op 1.9486 ms/op 1.15
getPubkeys - validatorsArr - req 1000 vs - 250000 vc 97.779 us/op 71.691 us/op 1.36
BLS verify - blst-native 2.2014 ms/op 1.8639 ms/op 1.18
BLS verifyMultipleSignatures 3 - blst-native 4.4932 ms/op 3.8058 ms/op 1.18
BLS verifyMultipleSignatures 8 - blst-native 9.5051 ms/op 8.1812 ms/op 1.16
BLS verifyMultipleSignatures 32 - blst-native 34.186 ms/op 29.640 ms/op 1.15
BLS aggregatePubkeys 32 - blst-native 45.670 us/op 39.260 us/op 1.16
BLS aggregatePubkeys 128 - blst-native 176.63 us/op 153.52 us/op 1.15
getAttestationsForBlock 74.897 ms/op 61.371 ms/op 1.22
isKnown best case - 1 super set check 537.00 ns/op 440.00 ns/op 1.22
isKnown normal case - 2 super set checks 518.00 ns/op 433.00 ns/op 1.20
isKnown worse case - 16 super set checks 480.00 ns/op 427.00 ns/op 1.12
CheckpointStateCache - add get delete 10.468 us/op 10.333 us/op 1.01
validate gossip signedAggregateAndProof - struct 4.7623 ms/op 4.2624 ms/op 1.12
validate gossip attestation - struct 2.1805 ms/op 2.0284 ms/op 1.07
altair verifyImport mainnet_s3766816:31 7.0965 s/op 6.0918 s/op 1.16
pickEth1Vote - no votes 2.4503 ms/op 2.0544 ms/op 1.19
pickEth1Vote - max votes 27.763 ms/op 24.059 ms/op 1.15
pickEth1Vote - Eth1Data hashTreeRoot value x2048 13.420 ms/op 11.325 ms/op 1.19
pickEth1Vote - Eth1Data hashTreeRoot tree x2048 22.119 ms/op 24.953 ms/op 0.89
pickEth1Vote - Eth1Data fastSerialize value x2048 1.7754 ms/op 1.6018 ms/op 1.11
pickEth1Vote - Eth1Data fastSerialize tree x2048 19.431 ms/op 12.672 ms/op 1.53
bytes32 toHexString 1.2000 us/op 972.00 ns/op 1.23
bytes32 Buffer.toString(hex) 777.00 ns/op 652.00 ns/op 1.19
bytes32 Buffer.toString(hex) from Uint8Array 1.0210 us/op 874.00 ns/op 1.17
bytes32 Buffer.toString(hex) + 0x 798.00 ns/op 650.00 ns/op 1.23
Object access 1 prop 0.42200 ns/op 0.32300 ns/op 1.31
Map access 1 prop 0.33300 ns/op 0.28600 ns/op 1.16
Object get x1000 20.026 ns/op 17.327 ns/op 1.16
Map get x1000 1.1380 ns/op 0.97800 ns/op 1.16
Object set x1000 131.44 ns/op 106.11 ns/op 1.24
Map set x1000 82.753 ns/op 64.688 ns/op 1.28
Return object 10000 times 0.43420 ns/op 0.36650 ns/op 1.18
Throw Error 10000 times 6.7491 us/op 5.9072 us/op 1.14
enrSubnets - fastDeserialize 64 bits 3.0350 us/op 2.3910 us/op 1.27
enrSubnets - ssz BitVector 64 bits 941.00 ns/op 706.00 ns/op 1.33
enrSubnets - fastDeserialize 4 bits 471.00 ns/op 352.00 ns/op 1.34
enrSubnets - ssz BitVector 4 bits 872.00 ns/op 681.00 ns/op 1.28
prioritizePeers score -10:0 att 32-0.1 sync 2-0 121.67 us/op 86.349 us/op 1.41
prioritizePeers score 0:0 att 32-0.25 sync 2-0.25 160.72 us/op 130.77 us/op 1.23
prioritizePeers score 0:0 att 32-0.5 sync 2-0.5 264.43 us/op 200.31 us/op 1.32
prioritizePeers score 0:0 att 64-0.75 sync 4-0.75 458.96 us/op 386.59 us/op 1.19
prioritizePeers score 0:0 att 64-1 sync 4-1 529.72 us/op 455.77 us/op 1.16
RateTracker 1000000 limit, 1 obj count per request 226.24 ns/op 178.32 ns/op 1.27
RateTracker 1000000 limit, 2 obj count per request 172.59 ns/op 133.09 ns/op 1.30
RateTracker 1000000 limit, 4 obj count per request 144.21 ns/op 109.12 ns/op 1.32
RateTracker 1000000 limit, 8 obj count per request 130.93 ns/op 97.839 ns/op 1.34
RateTracker with prune 5.4850 us/op 3.7700 us/op 1.45
array of 16000 items push then shift 3.6696 us/op 3.1619 us/op 1.16
LinkedList of 16000 items push then shift 27.935 ns/op 22.868 ns/op 1.22
array of 16000 items push then pop 270.11 ns/op 215.38 ns/op 1.25
LinkedList of 16000 items push then pop 23.730 ns/op 20.183 ns/op 1.18
array of 24000 items push then shift 5.4058 us/op 4.5605 us/op 1.19
LinkedList of 24000 items push then shift 28.893 ns/op 23.423 ns/op 1.23
array of 24000 items push then pop 240.11 ns/op 188.84 ns/op 1.27
LinkedList of 24000 items push then pop 23.268 ns/op 20.326 ns/op 1.14
intersect bitArray bitLen 8 13.519 ns/op 11.643 ns/op 1.16
intersect array and set length 8 201.96 ns/op 151.74 ns/op 1.33
intersect bitArray bitLen 128 84.514 ns/op 71.966 ns/op 1.17
intersect array and set length 128 2.7055 us/op 2.1033 us/op 1.29

by benchmarkbot/action

@wemeetagain wemeetagain merged commit 2deb6a2 into unstable Jun 7, 2022
@wemeetagain wemeetagain deleted the dapplion/reorg-metric branch June 7, 2022 20:58
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants