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

Relax nodeIsViableForHead if justified epoch is previous epoch #4520

Merged
merged 2 commits into from Sep 8, 2022

Conversation

twoeths
Copy link
Contributor

@twoeths twoeths commented Sep 8, 2022

Description

Relax nodeIsViableForHead if justified epoch is previous epoch

@github-actions
Copy link
Contributor

github-actions bot commented Sep 8, 2022

Performance Report

✔️ no performance regression detected

Full benchmark results
Benchmark suite Current: 6249ae0 Previous: cdac3ae Ratio
getPubkeys - index2pubkey - req 1000 vs - 250000 vc 1.8225 ms/op 2.2198 ms/op 0.82
getPubkeys - validatorsArr - req 1000 vs - 250000 vc 71.059 us/op 89.584 us/op 0.79
BLS verify - blst-native 1.8565 ms/op 2.3541 ms/op 0.79
BLS verifyMultipleSignatures 3 - blst-native 3.8026 ms/op 4.7611 ms/op 0.80
BLS verifyMultipleSignatures 8 - blst-native 8.1800 ms/op 10.339 ms/op 0.79
BLS verifyMultipleSignatures 32 - blst-native 29.652 ms/op 37.672 ms/op 0.79
BLS aggregatePubkeys 32 - blst-native 39.334 us/op 51.373 us/op 0.77
BLS aggregatePubkeys 128 - blst-native 152.66 us/op 204.42 us/op 0.75
getAttestationsForBlock 161.03 ms/op 197.93 ms/op 0.81
isKnown best case - 1 super set check 434.00 ns/op 525.00 ns/op 0.83
isKnown normal case - 2 super set checks 424.00 ns/op 500.00 ns/op 0.85
isKnown worse case - 16 super set checks 427.00 ns/op 499.00 ns/op 0.86
CheckpointStateCache - add get delete 8.5930 us/op 11.000 us/op 0.78
validate gossip signedAggregateAndProof - struct 4.2738 ms/op 5.5598 ms/op 0.77
validate gossip attestation - struct 2.0290 ms/op 2.6881 ms/op 0.75
pickEth1Vote - no votes 2.2102 ms/op 2.6786 ms/op 0.83
pickEth1Vote - max votes 17.881 ms/op 22.644 ms/op 0.79
pickEth1Vote - Eth1Data hashTreeRoot value x2048 10.660 ms/op 14.029 ms/op 0.76
pickEth1Vote - Eth1Data hashTreeRoot tree x2048 19.572 ms/op 25.205 ms/op 0.78
pickEth1Vote - Eth1Data fastSerialize value x2048 1.4840 ms/op 2.1158 ms/op 0.70
pickEth1Vote - Eth1Data fastSerialize tree x2048 11.921 ms/op 14.717 ms/op 0.81
bytes32 toHexString 1.0050 us/op 1.1890 us/op 0.85
bytes32 Buffer.toString(hex) 706.00 ns/op 864.00 ns/op 0.82
bytes32 Buffer.toString(hex) from Uint8Array 901.00 ns/op 1.0700 us/op 0.84
bytes32 Buffer.toString(hex) + 0x 710.00 ns/op 883.00 ns/op 0.80
Object access 1 prop 0.33900 ns/op 0.41500 ns/op 0.82
Map access 1 prop 0.28600 ns/op 0.37000 ns/op 0.77
Object get x1000 18.130 ns/op 17.081 ns/op 1.06
Map get x1000 1.0650 ns/op 1.0850 ns/op 0.98
Object set x1000 111.66 ns/op 115.91 ns/op 0.96
Map set x1000 64.660 ns/op 79.478 ns/op 0.81
Return object 10000 times 0.37390 ns/op 0.44640 ns/op 0.84
Throw Error 10000 times 5.8973 us/op 8.6473 us/op 0.68
enrSubnets - fastDeserialize 64 bits 2.5380 us/op 3.0800 us/op 0.82
enrSubnets - ssz BitVector 64 bits 708.00 ns/op 832.00 ns/op 0.85
enrSubnets - fastDeserialize 4 bits 358.00 ns/op 441.00 ns/op 0.81
enrSubnets - ssz BitVector 4 bits 708.00 ns/op 789.00 ns/op 0.90
prioritizePeers score -10:0 att 32-0.1 sync 2-0 100.22 us/op 113.17 us/op 0.89
prioritizePeers score 0:0 att 32-0.25 sync 2-0.25 123.67 us/op 162.24 us/op 0.76
prioritizePeers score 0:0 att 32-0.5 sync 2-0.5 200.50 us/op 282.93 us/op 0.71
prioritizePeers score 0:0 att 64-0.75 sync 4-0.75 427.07 us/op 628.71 us/op 0.68
prioritizePeers score 0:0 att 64-1 sync 4-1 460.90 us/op 595.95 us/op 0.77
RateTracker 1000000 limit, 1 obj count per request 193.97 ns/op 229.46 ns/op 0.85
RateTracker 1000000 limit, 2 obj count per request 148.34 ns/op 174.65 ns/op 0.85
RateTracker 1000000 limit, 4 obj count per request 126.70 ns/op 139.00 ns/op 0.91
RateTracker 1000000 limit, 8 obj count per request 116.83 ns/op 127.13 ns/op 0.92
RateTracker with prune 4.0900 us/op 5.0840 us/op 0.80
array of 16000 items push then shift 3.1871 us/op 5.5829 us/op 0.57
LinkedList of 16000 items push then shift 16.921 ns/op 19.963 ns/op 0.85
array of 16000 items push then pop 229.25 ns/op 258.68 ns/op 0.89
LinkedList of 16000 items push then pop 16.557 ns/op 19.707 ns/op 0.84
array of 24000 items push then shift 4.5517 us/op 8.6653 us/op 0.53
LinkedList of 24000 items push then shift 19.066 ns/op 20.050 ns/op 0.95
array of 24000 items push then pop 196.91 ns/op 249.01 ns/op 0.79
LinkedList of 24000 items push then pop 17.551 ns/op 20.049 ns/op 0.88
intersect bitArray bitLen 8 11.726 ns/op 13.222 ns/op 0.89
intersect array and set length 8 157.67 ns/op 201.17 ns/op 0.78
intersect bitArray bitLen 128 61.986 ns/op 74.541 ns/op 0.83
intersect array and set length 128 2.1711 us/op 2.5159 us/op 0.86
Buffer.concat 32 items 1.8580 ns/op 2.8880 ns/op 0.64
pass gossip attestations to forkchoice per slot 3.1924 ms/op 5.2256 ms/op 0.61
computeDeltas 3.5495 ms/op 3.8723 ms/op 0.92
computeProposerBoostScoreFromBalances 907.28 us/op 927.71 us/op 0.98
altair processAttestation - 250000 vs - 7PWei normalcase 3.4456 ms/op 4.9461 ms/op 0.70
altair processAttestation - 250000 vs - 7PWei worstcase 5.4689 ms/op 7.3536 ms/op 0.74
altair processAttestation - setStatus - 1/6 committees join 216.18 us/op 282.95 us/op 0.76
altair processAttestation - setStatus - 1/3 committees join 411.39 us/op 533.06 us/op 0.77
altair processAttestation - setStatus - 1/2 committees join 575.23 us/op 755.42 us/op 0.76
altair processAttestation - setStatus - 2/3 committees join 745.39 us/op 1.0051 ms/op 0.74
altair processAttestation - setStatus - 4/5 committees join 1.0177 ms/op 1.3797 ms/op 0.74
altair processAttestation - setStatus - 100% committees join 1.2099 ms/op 1.6124 ms/op 0.75
altair processBlock - 250000 vs - 7PWei normalcase 26.564 ms/op 31.808 ms/op 0.84
altair processBlock - 250000 vs - 7PWei normalcase hashState 40.871 ms/op 51.791 ms/op 0.79
altair processBlock - 250000 vs - 7PWei worstcase 79.518 ms/op 101.36 ms/op 0.78
altair processBlock - 250000 vs - 7PWei worstcase hashState 101.85 ms/op 121.01 ms/op 0.84
phase0 processBlock - 250000 vs - 7PWei normalcase 3.3618 ms/op 4.4448 ms/op 0.76
phase0 processBlock - 250000 vs - 7PWei worstcase 44.935 ms/op 58.118 ms/op 0.77
altair processEth1Data - 250000 vs - 7PWei normalcase 783.60 us/op 1.0711 ms/op 0.73
Tree 40 250000 create 765.06 ms/op 960.51 ms/op 0.80
Tree 40 250000 get(125000) 281.59 ns/op 344.82 ns/op 0.82
Tree 40 250000 set(125000) 2.3167 us/op 3.5198 us/op 0.66
Tree 40 250000 toArray() 31.131 ms/op 37.352 ms/op 0.83
Tree 40 250000 iterate all - toArray() + loop 31.883 ms/op 37.697 ms/op 0.85
Tree 40 250000 iterate all - get(i) 108.62 ms/op 139.79 ms/op 0.78
MutableVector 250000 create 13.975 ms/op 18.364 ms/op 0.76
MutableVector 250000 get(125000) 15.181 ns/op 15.049 ns/op 1.01
MutableVector 250000 set(125000) 571.92 ns/op 870.83 ns/op 0.66
MutableVector 250000 toArray() 6.9898 ms/op 7.7182 ms/op 0.91
MutableVector 250000 iterate all - toArray() + loop 7.1898 ms/op 7.6822 ms/op 0.94
MutableVector 250000 iterate all - get(i) 3.2794 ms/op 3.6670 ms/op 0.89
Array 250000 create 6.5057 ms/op 7.3770 ms/op 0.88
Array 250000 clone - spread 3.5664 ms/op 4.0237 ms/op 0.89
Array 250000 get(125000) 1.4840 ns/op 1.7310 ns/op 0.86
Array 250000 set(125000) 1.4770 ns/op 1.7020 ns/op 0.87
Array 250000 iterate all - loop 167.78 us/op 151.30 us/op 1.11
effectiveBalanceIncrements clone Uint8Array 300000 80.506 us/op 286.65 us/op 0.28
effectiveBalanceIncrements clone MutableVector 300000 643.00 ns/op 817.00 ns/op 0.79
effectiveBalanceIncrements rw all Uint8Array 300000 252.32 us/op 304.45 us/op 0.83
effectiveBalanceIncrements rw all MutableVector 300000 150.80 ms/op 192.38 ms/op 0.78
phase0 afterProcessEpoch - 250000 vs - 7PWei 197.46 ms/op 219.46 ms/op 0.90
phase0 beforeProcessEpoch - 250000 vs - 7PWei 71.603 ms/op 77.303 ms/op 0.93
altair processEpoch - mainnet_e81889 578.29 ms/op 572.86 ms/op 1.01
mainnet_e81889 - altair beforeProcessEpoch 157.91 ms/op 170.16 ms/op 0.93
mainnet_e81889 - altair processJustificationAndFinalization 30.691 us/op 73.898 us/op 0.42
mainnet_e81889 - altair processInactivityUpdates 10.568 ms/op 11.123 ms/op 0.95
mainnet_e81889 - altair processRewardsAndPenalties 90.458 ms/op 104.53 ms/op 0.87
mainnet_e81889 - altair processRegistryUpdates 5.1070 us/op 16.646 us/op 0.31
mainnet_e81889 - altair processSlashings 1.5840 us/op 3.1810 us/op 0.50
mainnet_e81889 - altair processEth1DataReset 1.4190 us/op 3.5410 us/op 0.40
mainnet_e81889 - altair processEffectiveBalanceUpdates 2.5309 ms/op 3.2328 ms/op 0.78
mainnet_e81889 - altair processSlashingsReset 12.248 us/op 26.627 us/op 0.46
mainnet_e81889 - altair processRandaoMixesReset 5.3340 us/op 22.203 us/op 0.24
mainnet_e81889 - altair processHistoricalRootsUpdate 870.00 ns/op 4.0630 us/op 0.21
mainnet_e81889 - altair processParticipationFlagUpdates 4.0000 us/op 16.022 us/op 0.25
mainnet_e81889 - altair processSyncCommitteeUpdates 1.0430 us/op 2.9900 us/op 0.35
mainnet_e81889 - altair afterProcessEpoch 195.07 ms/op 216.79 ms/op 0.90
phase0 processEpoch - mainnet_e58758 515.72 ms/op 609.76 ms/op 0.85
mainnet_e58758 - phase0 beforeProcessEpoch 220.20 ms/op 293.42 ms/op 0.75
mainnet_e58758 - phase0 processJustificationAndFinalization 32.695 us/op 58.106 us/op 0.56
mainnet_e58758 - phase0 processRewardsAndPenalties 135.95 ms/op 91.192 ms/op 1.49
mainnet_e58758 - phase0 processRegistryUpdates 9.5840 us/op 33.440 us/op 0.29
mainnet_e58758 - phase0 processSlashings 756.00 ns/op 3.1920 us/op 0.24
mainnet_e58758 - phase0 processEth1DataReset 1.0610 us/op 3.1700 us/op 0.33
mainnet_e58758 - phase0 processEffectiveBalanceUpdates 2.1818 ms/op 2.4685 ms/op 0.88
mainnet_e58758 - phase0 processSlashingsReset 7.2540 us/op 15.380 us/op 0.47
mainnet_e58758 - phase0 processRandaoMixesReset 8.6490 us/op 25.034 us/op 0.35
mainnet_e58758 - phase0 processHistoricalRootsUpdate 1.4650 us/op 3.8890 us/op 0.38
mainnet_e58758 - phase0 processParticipationRecordUpdates 7.8370 us/op 24.135 us/op 0.32
mainnet_e58758 - phase0 afterProcessEpoch 159.99 ms/op 180.34 ms/op 0.89
phase0 processEffectiveBalanceUpdates - 250000 normalcase 2.6274 ms/op 2.6506 ms/op 0.99
phase0 processEffectiveBalanceUpdates - 250000 worstcase 0.5 3.4827 ms/op 2.8705 ms/op 1.21
altair processInactivityUpdates - 250000 normalcase 46.581 ms/op 51.132 ms/op 0.91
altair processInactivityUpdates - 250000 worstcase 37.146 ms/op 52.953 ms/op 0.70
phase0 processRegistryUpdates - 250000 normalcase 13.054 us/op 28.730 us/op 0.45
phase0 processRegistryUpdates - 250000 badcase_full_deposits 593.25 us/op 540.16 us/op 1.10
phase0 processRegistryUpdates - 250000 worstcase 0.5 205.86 ms/op 279.24 ms/op 0.74
altair processRewardsAndPenalties - 250000 normalcase 84.717 ms/op 136.37 ms/op 0.62
altair processRewardsAndPenalties - 250000 worstcase 133.08 ms/op 149.13 ms/op 0.89
phase0 getAttestationDeltas - 250000 normalcase 12.377 ms/op 13.868 ms/op 0.89
phase0 getAttestationDeltas - 250000 worstcase 12.599 ms/op 15.009 ms/op 0.84
phase0 processSlashings - 250000 worstcase 5.6520 ms/op 6.8146 ms/op 0.83
altair processSyncCommitteeUpdates - 250000 267.74 ms/op 344.57 ms/op 0.78
BeaconState.hashTreeRoot - No change 470.00 ns/op 641.00 ns/op 0.73
BeaconState.hashTreeRoot - 1 full validator 60.853 us/op 82.792 us/op 0.74
BeaconState.hashTreeRoot - 32 full validator 601.26 us/op 828.31 us/op 0.73
BeaconState.hashTreeRoot - 512 full validator 6.3711 ms/op 8.5177 ms/op 0.75
BeaconState.hashTreeRoot - 1 validator.effectiveBalance 75.134 us/op 102.99 us/op 0.73
BeaconState.hashTreeRoot - 32 validator.effectiveBalance 1.1473 ms/op 1.5330 ms/op 0.75
BeaconState.hashTreeRoot - 512 validator.effectiveBalance 15.104 ms/op 19.587 ms/op 0.77
BeaconState.hashTreeRoot - 1 balances 61.607 us/op 81.312 us/op 0.76
BeaconState.hashTreeRoot - 32 balances 648.21 us/op 890.55 us/op 0.73
BeaconState.hashTreeRoot - 512 balances 5.5341 ms/op 7.0971 ms/op 0.78
BeaconState.hashTreeRoot - 250000 balances 84.893 ms/op 123.02 ms/op 0.69
aggregationBits - 2048 els - zipIndexesInBitList 32.381 us/op 32.006 us/op 1.01
regular array get 100000 times 67.383 us/op 60.337 us/op 1.12
wrappedArray get 100000 times 67.378 us/op 61.016 us/op 1.10
arrayWithProxy get 100000 times 28.959 ms/op 37.759 ms/op 0.77
ssz.Root.equals 467.00 ns/op 591.00 ns/op 0.79
byteArrayEquals 464.00 ns/op 542.00 ns/op 0.86
shuffle list - 16384 els 11.291 ms/op 12.371 ms/op 0.91
shuffle list - 250000 els 166.08 ms/op 178.28 ms/op 0.93
processSlot - 1 slots 13.408 us/op 17.004 us/op 0.79
processSlot - 32 slots 1.7109 ms/op 2.3769 ms/op 0.72
getEffectiveBalanceIncrementsZeroInactive - 250000 vs - 7PWei 383.05 us/op 721.82 us/op 0.53
getCommitteeAssignments - req 1 vs - 250000 vc 5.3392 ms/op 5.7173 ms/op 0.93
getCommitteeAssignments - req 100 vs - 250000 vc 7.3063 ms/op 8.2232 ms/op 0.89
getCommitteeAssignments - req 1000 vs - 250000 vc 7.7408 ms/op 8.7661 ms/op 0.88
RootCache.getBlockRootAtSlot - 250000 vs - 7PWei 9.9000 ns/op 10.430 ns/op 0.95
state getBlockRootAtSlot - 250000 vs - 7PWei 1.0982 us/op 1.2689 us/op 0.87
computeProposers - vc 250000 15.809 ms/op 20.158 ms/op 0.78
computeEpochShuffling - vc 250000 168.83 ms/op 185.81 ms/op 0.91
getNextSyncCommittee - vc 250000 264.92 ms/op 333.16 ms/op 0.80

by benchmarkbot/action

@twoeths twoeths marked this pull request as ready for review September 8, 2022 11:12
@twoeths twoeths requested a review from a team as a code owner September 8, 2022 11:12
@dapplion dapplion merged commit 03e778b into unstable Sep 8, 2022
@dapplion dapplion deleted the tuyen/justified-checkpoint-previous-epoch branch September 8, 2022 11:21
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