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

Skip waitForSlot pre-genesis #4468

Merged
merged 1 commit into from Aug 22, 2022
Merged

Conversation

dapplion
Copy link
Contributor

Motivation

Prevent many errors pre-genesis

@lodestar/beacon-node: Eph -1/7 0.003[NODE-A NODE-A API] error: Req req-p getProposerDuties error  Requested slot 0 is in the future
@lodestar/beacon-node: Error: Requested slot 0 is in the future
@lodestar/beacon-node:     at waitForSlot (file:///home/runner/work/lodestar/lodestar/packages/beacon-node/src/api/impl/validator/index.ts:90:13)
@lodestar/beacon-node:     at Object.getProposerDuties (file:///home/runner/work/lodestar/lodestar/packages/beacon-node/src/api/impl/validator/index.ts:305:13)
@lodestar/beacon-node:     at Object.handler (file:///home/runner/work/lodestar/lodestar/packages/api/src/utils/server/genericJsonServer.ts:39:41)
@lodestar/beacon-node:     at preHandlerCallback (/home/runner/work/lodestar/lodestar/node_modules/fastify/lib/handleRequest.js:124:28)
@lodestar/beacon-node:     at preValidationCallback (/home/runner/work/lodestar/lodestar/node_modules/fastify/lib/handleRequest.js:107:5)
@lodestar/beacon-node:     at handler (/home/runner/work/lodestar/lodestar/node_modules/fastify/lib/handleRequest.js:70:7)
@lodestar/beacon-node:     at handleRequest (/home/runner/work/lodestar/lodestar/node_modules/fastify/lib/handleRequest.js:18:5)
@lodestar/beacon-node:     at runPreParsing (/home/runner/work/lodestar/lodestar/node_modules/fastify/lib/route.js:422:5)
@lodestar/beacon-node:     at next (/home/runner/work/lodestar/lodestar/node_modules/fastify/lib/hooks.js:158:7)
@lodestar/beacon-node:     at handleResolve (/home/runner/work/lodestar/lodestar/node_modules/fastify/lib/hooks.js:175:5)
@lodestar/beacon-node:     at runMicrotasks (<anonymous>)
@lodestar/beacon-node:     at processTicksAndRejections (node:internal/process/task_queues:96:5)

Description

  • Skip waitForSlot pre-genesis

@dapplion dapplion requested a review from a team as a code owner August 22, 2022 13:01
@github-actions
Copy link
Contributor

Performance Report

✔️ no performance regression detected

Full benchmark results
Benchmark suite Current: da05c82 Previous: bdf60bd Ratio
getPubkeys - index2pubkey - req 1000 vs - 250000 vc 2.1546 ms/op 2.3781 ms/op 0.91
getPubkeys - validatorsArr - req 1000 vs - 250000 vc 68.797 us/op 77.574 us/op 0.89
BLS verify - blst-native 2.1679 ms/op 2.1656 ms/op 1.00
BLS verifyMultipleSignatures 3 - blst-native 4.4692 ms/op 4.4721 ms/op 1.00
BLS verifyMultipleSignatures 8 - blst-native 9.6628 ms/op 9.6741 ms/op 1.00
BLS verifyMultipleSignatures 32 - blst-native 35.130 ms/op 35.170 ms/op 1.00
BLS aggregatePubkeys 32 - blst-native 46.677 us/op 46.642 us/op 1.00
BLS aggregatePubkeys 128 - blst-native 182.21 us/op 182.09 us/op 1.00
getAttestationsForBlock 154.52 ms/op 160.85 ms/op 0.96
isKnown best case - 1 super set check 492.00 ns/op 486.00 ns/op 1.01
isKnown normal case - 2 super set checks 480.00 ns/op 476.00 ns/op 1.01
isKnown worse case - 16 super set checks 473.00 ns/op 475.00 ns/op 1.00
CheckpointStateCache - add get delete 9.3790 us/op 9.6140 us/op 0.98
validate gossip signedAggregateAndProof - struct 5.0218 ms/op 5.0296 ms/op 1.00
validate gossip attestation - struct 2.3761 ms/op 2.3911 ms/op 0.99
altair verifyImport mainnet_s3766816:31 4.8290 s/op 4.8532 s/op 1.00
pickEth1Vote - no votes 2.2855 ms/op 2.2226 ms/op 1.03
pickEth1Vote - max votes 24.446 ms/op 23.727 ms/op 1.03
pickEth1Vote - Eth1Data hashTreeRoot value x2048 13.652 ms/op 12.687 ms/op 1.08
pickEth1Vote - Eth1Data hashTreeRoot tree x2048 24.727 ms/op 22.928 ms/op 1.08
pickEth1Vote - Eth1Data fastSerialize value x2048 1.5402 ms/op 1.4528 ms/op 1.06
pickEth1Vote - Eth1Data fastSerialize tree x2048 13.169 ms/op 12.520 ms/op 1.05
bytes32 toHexString 956.00 ns/op 938.00 ns/op 1.02
bytes32 Buffer.toString(hex) 815.00 ns/op 738.00 ns/op 1.10
bytes32 Buffer.toString(hex) from Uint8Array 1.0070 us/op 949.00 ns/op 1.06
bytes32 Buffer.toString(hex) + 0x 804.00 ns/op 740.00 ns/op 1.09
Object access 1 prop 0.35200 ns/op 0.34800 ns/op 1.01
Map access 1 prop 0.30100 ns/op 0.33300 ns/op 0.90
Object get x1000 10.889 ns/op 10.706 ns/op 1.02
Map get x1000 0.93400 ns/op 0.93900 ns/op 0.99
Object set x1000 75.692 ns/op 66.038 ns/op 1.15
Map set x1000 51.210 ns/op 43.787 ns/op 1.17
Return object 10000 times 0.43710 ns/op 0.43310 ns/op 1.01
Throw Error 10000 times 5.9263 us/op 5.8823 us/op 1.01
enrSubnets - fastDeserialize 64 bits 2.7650 us/op 2.5110 us/op 1.10
enrSubnets - ssz BitVector 64 bits 834.00 ns/op 788.00 ns/op 1.06
enrSubnets - fastDeserialize 4 bits 388.00 ns/op 368.00 ns/op 1.05
enrSubnets - ssz BitVector 4 bits 813.00 ns/op 770.00 ns/op 1.06
prioritizePeers score -10:0 att 32-0.1 sync 2-0 85.840 us/op 79.468 us/op 1.08
prioritizePeers score 0:0 att 32-0.25 sync 2-0.25 115.92 us/op 121.92 us/op 0.95
prioritizePeers score 0:0 att 32-0.5 sync 2-0.5 199.16 us/op 192.39 us/op 1.04
prioritizePeers score 0:0 att 64-0.75 sync 4-0.75 389.70 us/op 337.17 us/op 1.16
prioritizePeers score 0:0 att 64-1 sync 4-1 406.70 us/op 408.35 us/op 1.00
RateTracker 1000000 limit, 1 obj count per request 189.46 ns/op 189.66 ns/op 1.00
RateTracker 1000000 limit, 2 obj count per request 138.75 ns/op 140.94 ns/op 0.98
RateTracker 1000000 limit, 4 obj count per request 113.90 ns/op 116.41 ns/op 0.98
RateTracker 1000000 limit, 8 obj count per request 101.85 ns/op 104.00 ns/op 0.98
RateTracker with prune 4.2590 us/op 4.6400 us/op 0.92
array of 16000 items push then shift 51.599 us/op 51.613 us/op 1.00
LinkedList of 16000 items push then shift 17.811 ns/op 19.100 ns/op 0.93
array of 16000 items push then pop 201.24 ns/op 213.61 ns/op 0.94
LinkedList of 16000 items push then pop 14.836 ns/op 15.571 ns/op 0.95
array of 24000 items push then shift 77.368 us/op 77.398 us/op 1.00
LinkedList of 24000 items push then shift 23.334 ns/op 26.422 ns/op 0.88
array of 24000 items push then pop 203.80 ns/op 213.44 ns/op 0.95
LinkedList of 24000 items push then pop 17.126 ns/op 17.421 ns/op 0.98
intersect bitArray bitLen 8 10.753 ns/op 10.831 ns/op 0.99
intersect array and set length 8 143.28 ns/op 150.37 ns/op 0.95
intersect bitArray bitLen 128 55.561 ns/op 55.629 ns/op 1.00
intersect array and set length 128 1.8247 us/op 1.8767 us/op 0.97
Buffer.concat 32 items 1.7800 ns/op 1.8300 ns/op 0.97
pass gossip attestations to forkchoice per slot 2.9715 ms/op 6.0889 ms/op 0.49
computeDeltas 3.5491 ms/op 4.4712 ms/op 0.79
computeProposerBoostScoreFromBalances 807.31 us/op 805.65 us/op 1.00
altair processAttestation - 250000 vs - 7PWei normalcase 4.0333 ms/op 3.6408 ms/op 1.11
altair processAttestation - 250000 vs - 7PWei worstcase 6.3157 ms/op 5.4476 ms/op 1.16
altair processAttestation - setStatus - 1/6 committees join 180.47 us/op 179.80 us/op 1.00
altair processAttestation - setStatus - 1/3 committees join 343.94 us/op 348.53 us/op 0.99
altair processAttestation - setStatus - 1/2 committees join 491.45 us/op 516.35 us/op 0.95
altair processAttestation - setStatus - 2/3 committees join 637.84 us/op 668.13 us/op 0.95
altair processAttestation - setStatus - 4/5 committees join 901.81 us/op 942.34 us/op 0.96
altair processAttestation - setStatus - 100% committees join 1.0985 ms/op 1.1260 ms/op 0.98
altair processBlock - 250000 vs - 7PWei normalcase 25.342 ms/op 30.195 ms/op 0.84
altair processBlock - 250000 vs - 7PWei normalcase hashState 37.176 ms/op 38.933 ms/op 0.95
altair processBlock - 250000 vs - 7PWei worstcase 82.570 ms/op 85.040 ms/op 0.97
altair processBlock - 250000 vs - 7PWei worstcase hashState 99.965 ms/op 96.154 ms/op 1.04
phase0 processBlock - 250000 vs - 7PWei normalcase 3.9598 ms/op 4.5417 ms/op 0.87
phase0 processBlock - 250000 vs - 7PWei worstcase 52.670 ms/op 53.158 ms/op 0.99
altair processEth1Data - 250000 vs - 7PWei normalcase 731.67 us/op 1.1339 ms/op 0.65
Tree 40 250000 create 796.27 ms/op 790.21 ms/op 1.01
Tree 40 250000 get(125000) 239.85 ns/op 257.66 ns/op 0.93
Tree 40 250000 set(125000) 2.4836 us/op 3.0327 us/op 0.82
Tree 40 250000 toArray() 27.920 ms/op 31.871 ms/op 0.88
Tree 40 250000 iterate all - toArray() + loop 27.725 ms/op 35.100 ms/op 0.79
Tree 40 250000 iterate all - get(i) 109.45 ms/op 114.08 ms/op 0.96
MutableVector 250000 create 55.986 ms/op 19.742 ms/op 2.84
MutableVector 250000 get(125000) 11.243 ns/op 12.270 ns/op 0.92
MutableVector 250000 set(125000) 549.82 ns/op 656.44 ns/op 0.84
MutableVector 250000 toArray() 6.2314 ms/op 6.6357 ms/op 0.94
MutableVector 250000 iterate all - toArray() + loop 6.3845 ms/op 6.8271 ms/op 0.94
MutableVector 250000 iterate all - get(i) 2.7321 ms/op 2.5941 ms/op 1.05
Array 250000 create 6.2508 ms/op 6.2735 ms/op 1.00
Array 250000 clone - spread 2.5229 ms/op 2.4391 ms/op 1.03
Array 250000 get(125000) 1.2410 ns/op 1.1800 ns/op 1.05
Array 250000 set(125000) 1.2710 ns/op 1.1750 ns/op 1.08
Array 250000 iterate all - loop 153.28 us/op 150.94 us/op 1.02
effectiveBalanceIncrements clone Uint8Array 300000 55.810 us/op 68.919 us/op 0.81
effectiveBalanceIncrements clone MutableVector 300000 776.00 ns/op 657.00 ns/op 1.18
effectiveBalanceIncrements rw all Uint8Array 300000 247.45 us/op 247.34 us/op 1.00
effectiveBalanceIncrements rw all MutableVector 300000 155.72 ms/op 135.86 ms/op 1.15
phase0 afterProcessEpoch - 250000 vs - 7PWei 206.78 ms/op 195.15 ms/op 1.06
phase0 beforeProcessEpoch - 250000 vs - 7PWei 118.69 ms/op 118.75 ms/op 1.00
altair processEpoch - mainnet_e81889 660.10 ms/op 643.72 ms/op 1.03
mainnet_e81889 - altair beforeProcessEpoch 177.66 ms/op 187.27 ms/op 0.95
mainnet_e81889 - altair processJustificationAndFinalization 16.594 us/op 16.937 us/op 0.98
mainnet_e81889 - altair processInactivityUpdates 8.5859 ms/op 9.4189 ms/op 0.91
mainnet_e81889 - altair processRewardsAndPenalties 167.66 ms/op 161.72 ms/op 1.04
mainnet_e81889 - altair processRegistryUpdates 2.5270 us/op 2.9070 us/op 0.87
mainnet_e81889 - altair processSlashings 566.00 ns/op 768.00 ns/op 0.74
mainnet_e81889 - altair processEth1DataReset 603.00 ns/op 803.00 ns/op 0.75
mainnet_e81889 - altair processEffectiveBalanceUpdates 3.2377 ms/op 2.7291 ms/op 1.19
mainnet_e81889 - altair processSlashingsReset 4.3220 us/op 5.4910 us/op 0.79
mainnet_e81889 - altair processRandaoMixesReset 4.2470 us/op 5.9000 us/op 0.72
mainnet_e81889 - altair processHistoricalRootsUpdate 594.00 ns/op 743.00 ns/op 0.80
mainnet_e81889 - altair processParticipationFlagUpdates 2.1940 us/op 2.0790 us/op 1.06
mainnet_e81889 - altair processSyncCommitteeUpdates 532.00 ns/op 558.00 ns/op 0.95
mainnet_e81889 - altair afterProcessEpoch 199.20 ms/op 200.12 ms/op 1.00
phase0 processEpoch - mainnet_e58758 635.27 ms/op 636.30 ms/op 1.00
mainnet_e58758 - phase0 beforeProcessEpoch 232.51 ms/op 226.80 ms/op 1.03
mainnet_e58758 - phase0 processJustificationAndFinalization 15.702 us/op 14.625 us/op 1.07
mainnet_e58758 - phase0 processRewardsAndPenalties 128.66 ms/op 128.76 ms/op 1.00
mainnet_e58758 - phase0 processRegistryUpdates 7.8870 us/op 11.127 us/op 0.71
mainnet_e58758 - phase0 processSlashings 555.00 ns/op 794.00 ns/op 0.70
mainnet_e58758 - phase0 processEth1DataReset 567.00 ns/op 606.00 ns/op 0.94
mainnet_e58758 - phase0 processEffectiveBalanceUpdates 2.2498 ms/op 1.8899 ms/op 1.19
mainnet_e58758 - phase0 processSlashingsReset 3.6110 us/op 3.6230 us/op 1.00
mainnet_e58758 - phase0 processRandaoMixesReset 4.4430 us/op 4.4630 us/op 1.00
mainnet_e58758 - phase0 processHistoricalRootsUpdate 665.00 ns/op 627.00 ns/op 1.06
mainnet_e58758 - phase0 processParticipationRecordUpdates 3.5150 us/op 3.6280 us/op 0.97
mainnet_e58758 - phase0 afterProcessEpoch 165.40 ms/op 165.35 ms/op 1.00
phase0 processEffectiveBalanceUpdates - 250000 normalcase 1.9773 ms/op 2.1782 ms/op 0.91
phase0 processEffectiveBalanceUpdates - 250000 worstcase 0.5 2.2863 ms/op 2.4260 ms/op 0.94
altair processInactivityUpdates - 250000 normalcase 57.742 ms/op 58.389 ms/op 0.99
altair processInactivityUpdates - 250000 worstcase 59.693 ms/op 58.573 ms/op 1.02
phase0 processRegistryUpdates - 250000 normalcase 6.1580 us/op 6.8120 us/op 0.90
phase0 processRegistryUpdates - 250000 badcase_full_deposits 376.18 us/op 429.86 us/op 0.88
phase0 processRegistryUpdates - 250000 worstcase 0.5 230.90 ms/op 222.25 ms/op 1.04
altair processRewardsAndPenalties - 250000 normalcase 138.58 ms/op 147.19 ms/op 0.94
altair processRewardsAndPenalties - 250000 worstcase 140.96 ms/op 148.23 ms/op 0.95
phase0 getAttestationDeltas - 250000 normalcase 13.200 ms/op 14.124 ms/op 0.93
phase0 getAttestationDeltas - 250000 worstcase 13.042 ms/op 13.629 ms/op 0.96
phase0 processSlashings - 250000 worstcase 5.4363 ms/op 5.1016 ms/op 1.07
altair processSyncCommitteeUpdates - 250000 315.47 ms/op 293.88 ms/op 1.07
BeaconState.hashTreeRoot - No change 542.00 ns/op 539.00 ns/op 1.01
BeaconState.hashTreeRoot - 1 full validator 70.215 us/op 70.847 us/op 0.99
BeaconState.hashTreeRoot - 32 full validator 805.90 us/op 746.56 us/op 1.08
BeaconState.hashTreeRoot - 512 full validator 9.0278 ms/op 9.1359 ms/op 0.99
BeaconState.hashTreeRoot - 1 validator.effectiveBalance 89.348 us/op 89.202 us/op 1.00
BeaconState.hashTreeRoot - 32 validator.effectiveBalance 1.4426 ms/op 1.4263 ms/op 1.01
BeaconState.hashTreeRoot - 512 validator.effectiveBalance 17.222 ms/op 16.049 ms/op 1.07
BeaconState.hashTreeRoot - 1 balances 63.269 us/op 69.651 us/op 0.91
BeaconState.hashTreeRoot - 32 balances 724.88 us/op 676.66 us/op 1.07
BeaconState.hashTreeRoot - 512 balances 7.2033 ms/op 6.1527 ms/op 1.17
BeaconState.hashTreeRoot - 250000 balances 117.60 ms/op 96.257 ms/op 1.22
aggregationBits - 2048 els - zipIndexesInBitList 27.843 us/op 36.019 us/op 0.77
regular array get 100000 times 62.282 us/op 61.900 us/op 1.01
wrappedArray get 100000 times 64.185 us/op 61.378 us/op 1.05
arrayWithProxy get 100000 times 27.526 ms/op 33.941 ms/op 0.81
ssz.Root.equals 510.00 ns/op 522.00 ns/op 0.98
byteArrayEquals 505.00 ns/op 525.00 ns/op 0.96
shuffle list - 16384 els 11.538 ms/op 11.488 ms/op 1.00
shuffle list - 250000 els 168.74 ms/op 169.68 ms/op 0.99
processSlot - 1 slots 15.178 us/op 15.476 us/op 0.98
processSlot - 32 slots 1.9668 ms/op 1.9738 ms/op 1.00
getEffectiveBalanceIncrementsZeroInactive - 250000 vs - 7PWei 528.32 us/op 372.14 us/op 1.42
getCommitteeAssignments - req 1 vs - 250000 vc 5.4728 ms/op 5.4503 ms/op 1.00
getCommitteeAssignments - req 100 vs - 250000 vc 7.9941 ms/op 7.9782 ms/op 1.00
getCommitteeAssignments - req 1000 vs - 250000 vc 8.6204 ms/op 8.5871 ms/op 1.00
RootCache.getBlockRootAtSlot - 250000 vs - 7PWei 8.6400 ns/op 7.8800 ns/op 1.10
state getBlockRootAtSlot - 250000 vs - 7PWei 1.0875 us/op 1.0404 us/op 1.05
computeProposers - vc 250000 18.529 ms/op 17.541 ms/op 1.06
computeEpochShuffling - vc 250000 171.95 ms/op 172.13 ms/op 1.00
getNextSyncCommittee - vc 250000 310.26 ms/op 288.26 ms/op 1.08

by benchmarkbot/action

@dapplion dapplion merged commit 267278a into unstable Aug 22, 2022
@dapplion dapplion deleted the dapplion/waitForSlot-genesis branch August 22, 2022 13:26
dapplion added a commit that referenced this pull request Aug 22, 2022
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