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

Improve validator UX #4558

Merged
merged 1 commit into from Sep 17, 2022
Merged

Improve validator UX #4558

merged 1 commit into from Sep 17, 2022

Conversation

g11tech
Copy link
Contributor

@g11tech g11tech commented Sep 16, 2022

Users are not clear about whats going on with the current validator logging

Addressed some issues discovered during troubleshooting user setups

@g11tech g11tech requested a review from a team as a code owner September 16, 2022 13:44
@g11tech g11tech enabled auto-merge (squash) September 16, 2022 13:58
@github-actions
Copy link
Contributor

Performance Report

✔️ no performance regression detected

Full benchmark results
Benchmark suite Current: 5c5f4c7 Previous: 146f826 Ratio
getPubkeys - index2pubkey - req 1000 vs - 250000 vc 2.7822 ms/op 2.3167 ms/op 1.20
getPubkeys - validatorsArr - req 1000 vs - 250000 vc 94.233 us/op 79.913 us/op 1.18
BLS verify - blst-native 2.1102 ms/op 1.8552 ms/op 1.14
BLS verifyMultipleSignatures 3 - blst-native 4.4389 ms/op 3.8073 ms/op 1.17
BLS verifyMultipleSignatures 8 - blst-native 9.7110 ms/op 8.1900 ms/op 1.19
BLS verifyMultipleSignatures 32 - blst-native 34.834 ms/op 29.682 ms/op 1.17
BLS aggregatePubkeys 32 - blst-native 47.875 us/op 39.194 us/op 1.22
BLS aggregatePubkeys 128 - blst-native 192.01 us/op 152.94 us/op 1.26
getAttestationsForBlock 197.84 ms/op 169.08 ms/op 1.17
isKnown best case - 1 super set check 529.00 ns/op 437.00 ns/op 1.21
isKnown normal case - 2 super set checks 539.00 ns/op 422.00 ns/op 1.28
isKnown worse case - 16 super set checks 486.00 ns/op 424.00 ns/op 1.15
CheckpointStateCache - add get delete 10.797 us/op 9.1400 us/op 1.18
validate gossip signedAggregateAndProof - struct 5.0760 ms/op 4.2948 ms/op 1.18
validate gossip attestation - struct 2.5139 ms/op 2.0279 ms/op 1.24
pickEth1Vote - no votes 2.5552 ms/op 2.1853 ms/op 1.17
pickEth1Vote - max votes 22.672 ms/op 19.827 ms/op 1.14
pickEth1Vote - Eth1Data hashTreeRoot value x2048 14.184 ms/op 11.588 ms/op 1.22
pickEth1Vote - Eth1Data hashTreeRoot tree x2048 24.640 ms/op 21.195 ms/op 1.16
pickEth1Vote - Eth1Data fastSerialize value x2048 1.8242 ms/op 1.6710 ms/op 1.09
pickEth1Vote - Eth1Data fastSerialize tree x2048 15.424 ms/op 13.884 ms/op 1.11
bytes32 toHexString 1.3160 us/op 1.1590 us/op 1.14
bytes32 Buffer.toString(hex) 817.00 ns/op 781.00 ns/op 1.05
bytes32 Buffer.toString(hex) from Uint8Array 1.0830 us/op 1.0180 us/op 1.06
bytes32 Buffer.toString(hex) + 0x 761.00 ns/op 751.00 ns/op 1.01
Object access 1 prop 0.38000 ns/op 0.40400 ns/op 0.94
Map access 1 prop 0.34700 ns/op 0.29300 ns/op 1.18
Object get x1000 16.809 ns/op 17.498 ns/op 0.96
Map get x1000 0.96400 ns/op 0.97600 ns/op 0.99
Object set x1000 119.68 ns/op 129.37 ns/op 0.93
Map set x1000 82.414 ns/op 77.093 ns/op 1.07
Return object 10000 times 0.41440 ns/op 0.38020 ns/op 1.09
Throw Error 10000 times 8.0298 us/op 5.9289 us/op 1.35
enrSubnets - fastDeserialize 64 bits 2.9960 us/op 2.8620 us/op 1.05
enrSubnets - ssz BitVector 64 bits 811.00 ns/op 767.00 ns/op 1.06
enrSubnets - fastDeserialize 4 bits 430.00 ns/op 436.00 ns/op 0.99
enrSubnets - ssz BitVector 4 bits 827.00 ns/op 816.00 ns/op 1.01
prioritizePeers score -10:0 att 32-0.1 sync 2-0 112.35 us/op 100.61 us/op 1.12
prioritizePeers score 0:0 att 32-0.25 sync 2-0.25 149.80 us/op 135.02 us/op 1.11
prioritizePeers score 0:0 att 32-0.5 sync 2-0.5 270.96 us/op 254.79 us/op 1.06
prioritizePeers score 0:0 att 64-0.75 sync 4-0.75 617.19 us/op 496.68 us/op 1.24
prioritizePeers score 0:0 att 64-1 sync 4-1 555.00 us/op 462.99 us/op 1.20
RateTracker 1000000 limit, 1 obj count per request 206.91 ns/op 223.36 ns/op 0.93
RateTracker 1000000 limit, 2 obj count per request 150.57 ns/op 172.18 ns/op 0.87
RateTracker 1000000 limit, 4 obj count per request 128.81 ns/op 146.29 ns/op 0.88
RateTracker 1000000 limit, 8 obj count per request 110.62 ns/op 131.95 ns/op 0.84
RateTracker with prune 4.8500 us/op 5.4420 us/op 0.89
array of 16000 items push then shift 5.1146 us/op 3.2009 us/op 1.60
LinkedList of 16000 items push then shift 20.967 ns/op 17.553 ns/op 1.19
array of 16000 items push then pop 268.05 ns/op 249.58 ns/op 1.07
LinkedList of 16000 items push then pop 19.116 ns/op 16.756 ns/op 1.14
array of 24000 items push then shift 7.6558 us/op 4.5653 us/op 1.68
LinkedList of 24000 items push then shift 20.571 ns/op 21.298 ns/op 0.97
array of 24000 items push then pop 254.70 ns/op 224.49 ns/op 1.13
LinkedList of 24000 items push then pop 19.154 ns/op 18.363 ns/op 1.04
intersect bitArray bitLen 8 12.393 ns/op 11.780 ns/op 1.05
intersect array and set length 8 201.52 ns/op 188.70 ns/op 1.07
intersect bitArray bitLen 128 70.578 ns/op 62.109 ns/op 1.14
intersect array and set length 128 2.4804 us/op 2.4114 us/op 1.03
Buffer.concat 32 items 2.4150 ns/op 1.9390 ns/op 1.25
pass gossip attestations to forkchoice per slot 3.5428 ms/op 6.6230 ms/op 0.53
computeDeltas 3.8621 ms/op 3.3529 ms/op 1.15
computeProposerBoostScoreFromBalances 862.97 us/op 907.87 us/op 0.95
altair processAttestation - 250000 vs - 7PWei normalcase 4.9088 ms/op 3.8480 ms/op 1.28
altair processAttestation - 250000 vs - 7PWei worstcase 7.9638 ms/op 5.8259 ms/op 1.37
altair processAttestation - setStatus - 1/6 committees join 263.14 us/op 221.78 us/op 1.19
altair processAttestation - setStatus - 1/3 committees join 468.62 us/op 420.90 us/op 1.11
altair processAttestation - setStatus - 1/2 committees join 668.98 us/op 583.56 us/op 1.15
altair processAttestation - setStatus - 2/3 committees join 875.77 us/op 754.79 us/op 1.16
altair processAttestation - setStatus - 4/5 committees join 1.2442 ms/op 1.0419 ms/op 1.19
altair processAttestation - setStatus - 100% committees join 1.5017 ms/op 1.2297 ms/op 1.22
altair processBlock - 250000 vs - 7PWei normalcase 32.676 ms/op 27.972 ms/op 1.17
altair processBlock - 250000 vs - 7PWei normalcase hashState 44.898 ms/op 42.813 ms/op 1.05
altair processBlock - 250000 vs - 7PWei worstcase 111.63 ms/op 75.519 ms/op 1.48
altair processBlock - 250000 vs - 7PWei worstcase hashState 122.30 ms/op 98.179 ms/op 1.25
phase0 processBlock - 250000 vs - 7PWei normalcase 4.4209 ms/op 3.8845 ms/op 1.14
phase0 processBlock - 250000 vs - 7PWei worstcase 55.829 ms/op 47.700 ms/op 1.17
altair processEth1Data - 250000 vs - 7PWei normalcase 1.1339 ms/op 842.94 us/op 1.35
Tree 40 250000 create 996.88 ms/op 833.95 ms/op 1.20
Tree 40 250000 get(125000) 327.89 ns/op 300.91 ns/op 1.09
Tree 40 250000 set(125000) 3.1308 us/op 2.9512 us/op 1.06
Tree 40 250000 toArray() 37.948 ms/op 33.430 ms/op 1.14
Tree 40 250000 iterate all - toArray() + loop 38.448 ms/op 33.202 ms/op 1.16
Tree 40 250000 iterate all - get(i) 133.55 ms/op 113.86 ms/op 1.17
MutableVector 250000 create 17.402 ms/op 38.798 ms/op 0.45
MutableVector 250000 get(125000) 14.316 ns/op 13.614 ns/op 1.05
MutableVector 250000 set(125000) 890.61 ns/op 538.94 ns/op 1.65
MutableVector 250000 toArray() 7.9814 ms/op 7.0607 ms/op 1.13
MutableVector 250000 iterate all - toArray() + loop 7.9970 ms/op 7.1528 ms/op 1.12
MutableVector 250000 iterate all - get(i) 3.3895 ms/op 3.2791 ms/op 1.03
Array 250000 create 7.8569 ms/op 6.5894 ms/op 1.19
Array 250000 clone - spread 4.3074 ms/op 2.8370 ms/op 1.52
Array 250000 get(125000) 1.8700 ns/op 1.2350 ns/op 1.51
Array 250000 set(125000) 1.8810 ns/op 1.2300 ns/op 1.53
Array 250000 iterate all - loop 143.78 us/op 167.91 us/op 0.86
effectiveBalanceIncrements clone Uint8Array 300000 450.80 us/op 82.053 us/op 5.49
effectiveBalanceIncrements clone MutableVector 300000 823.00 ns/op 827.00 ns/op 1.00
effectiveBalanceIncrements rw all Uint8Array 300000 293.20 us/op 252.48 us/op 1.16
effectiveBalanceIncrements rw all MutableVector 300000 214.64 ms/op 174.34 ms/op 1.23
phase0 afterProcessEpoch - 250000 vs - 7PWei 207.87 ms/op 181.96 ms/op 1.14
phase0 beforeProcessEpoch - 250000 vs - 7PWei 81.226 ms/op 73.918 ms/op 1.10
altair processEpoch - mainnet_e81889 653.01 ms/op 501.22 ms/op 1.30
mainnet_e81889 - altair beforeProcessEpoch 166.27 ms/op 132.81 ms/op 1.25
mainnet_e81889 - altair processJustificationAndFinalization 68.208 us/op 22.908 us/op 2.98
mainnet_e81889 - altair processInactivityUpdates 12.230 ms/op 10.891 ms/op 1.12
mainnet_e81889 - altair processRewardsAndPenalties 109.96 ms/op 92.570 ms/op 1.19
mainnet_e81889 - altair processRegistryUpdates 14.168 us/op 3.3600 us/op 4.22
mainnet_e81889 - altair processSlashings 3.9820 us/op 694.00 ns/op 5.74
mainnet_e81889 - altair processEth1DataReset 4.0220 us/op 825.00 ns/op 4.88
mainnet_e81889 - altair processEffectiveBalanceUpdates 2.3635 ms/op 2.4244 ms/op 0.97
mainnet_e81889 - altair processSlashingsReset 24.624 us/op 5.7910 us/op 4.25
mainnet_e81889 - altair processRandaoMixesReset 24.289 us/op 5.8050 us/op 4.18
mainnet_e81889 - altair processHistoricalRootsUpdate 3.9340 us/op 944.00 ns/op 4.17
mainnet_e81889 - altair processParticipationFlagUpdates 14.820 us/op 2.6270 us/op 5.64
mainnet_e81889 - altair processSyncCommitteeUpdates 3.3730 us/op 808.00 ns/op 4.17
mainnet_e81889 - altair afterProcessEpoch 208.21 ms/op 193.81 ms/op 1.07
phase0 processEpoch - mainnet_e58758 617.57 ms/op 529.78 ms/op 1.17
mainnet_e58758 - phase0 beforeProcessEpoch 278.88 ms/op 232.64 ms/op 1.20
mainnet_e58758 - phase0 processJustificationAndFinalization 63.295 us/op 21.990 us/op 2.88
mainnet_e58758 - phase0 processRewardsAndPenalties 153.17 ms/op 124.62 ms/op 1.23
mainnet_e58758 - phase0 processRegistryUpdates 30.874 us/op 9.8150 us/op 3.15
mainnet_e58758 - phase0 processSlashings 3.4370 us/op 834.00 ns/op 4.12
mainnet_e58758 - phase0 processEth1DataReset 3.5630 us/op 861.00 ns/op 4.14
mainnet_e58758 - phase0 processEffectiveBalanceUpdates 2.2068 ms/op 1.9066 ms/op 1.16
mainnet_e58758 - phase0 processSlashingsReset 15.914 us/op 4.8740 us/op 3.27
mainnet_e58758 - phase0 processRandaoMixesReset 24.019 us/op 5.7080 us/op 4.21
mainnet_e58758 - phase0 processHistoricalRootsUpdate 4.2040 us/op 874.00 ns/op 4.81
mainnet_e58758 - phase0 processParticipationRecordUpdates 23.411 us/op 4.6480 us/op 5.04
mainnet_e58758 - phase0 afterProcessEpoch 167.19 ms/op 158.29 ms/op 1.06
phase0 processEffectiveBalanceUpdates - 250000 normalcase 2.3827 ms/op 2.5450 ms/op 0.94
phase0 processEffectiveBalanceUpdates - 250000 worstcase 0.5 2.6303 ms/op 3.4307 ms/op 0.77
altair processInactivityUpdates - 250000 normalcase 53.334 ms/op 41.702 ms/op 1.28
altair processInactivityUpdates - 250000 worstcase 71.015 ms/op 42.083 ms/op 1.69
phase0 processRegistryUpdates - 250000 normalcase 27.821 us/op 7.9930 us/op 3.48
phase0 processRegistryUpdates - 250000 badcase_full_deposits 597.69 us/op 430.96 us/op 1.39
phase0 processRegistryUpdates - 250000 worstcase 0.5 267.22 ms/op 210.38 ms/op 1.27
altair processRewardsAndPenalties - 250000 normalcase 127.93 ms/op 89.406 ms/op 1.43
altair processRewardsAndPenalties - 250000 worstcase 98.800 ms/op 137.33 ms/op 0.72
phase0 getAttestationDeltas - 250000 normalcase 14.536 ms/op 13.312 ms/op 1.09
phase0 getAttestationDeltas - 250000 worstcase 14.932 ms/op 13.391 ms/op 1.12
phase0 processSlashings - 250000 worstcase 6.3646 ms/op 5.4168 ms/op 1.17
altair processSyncCommitteeUpdates - 250000 343.09 ms/op 284.61 ms/op 1.21
BeaconState.hashTreeRoot - No change 768.00 ns/op 479.00 ns/op 1.60
BeaconState.hashTreeRoot - 1 full validator 72.239 us/op 62.647 us/op 1.15
BeaconState.hashTreeRoot - 32 full validator 746.83 us/op 638.43 us/op 1.17
BeaconState.hashTreeRoot - 512 full validator 7.6763 ms/op 6.1450 ms/op 1.25
BeaconState.hashTreeRoot - 1 validator.effectiveBalance 97.557 us/op 80.676 us/op 1.21
BeaconState.hashTreeRoot - 32 validator.effectiveBalance 1.3719 ms/op 1.2221 ms/op 1.12
BeaconState.hashTreeRoot - 512 validator.effectiveBalance 16.732 ms/op 16.151 ms/op 1.04
BeaconState.hashTreeRoot - 1 balances 68.649 us/op 61.997 us/op 1.11
BeaconState.hashTreeRoot - 32 balances 643.10 us/op 639.00 us/op 1.01
BeaconState.hashTreeRoot - 512 balances 5.6192 ms/op 5.8874 ms/op 0.95
BeaconState.hashTreeRoot - 250000 balances 109.67 ms/op 86.385 ms/op 1.27
aggregationBits - 2048 els - zipIndexesInBitList 34.407 us/op 35.545 us/op 0.97
regular array get 100000 times 55.050 us/op 67.416 us/op 0.82
wrappedArray get 100000 times 56.265 us/op 67.394 us/op 0.83
arrayWithProxy get 100000 times 34.367 ms/op 28.949 ms/op 1.19
ssz.Root.equals 644.00 ns/op 547.00 ns/op 1.18
byteArrayEquals 529.00 ns/op 521.00 ns/op 1.02
shuffle list - 16384 els 11.495 ms/op 12.309 ms/op 0.93
shuffle list - 250000 els 174.10 ms/op 162.39 ms/op 1.07
processSlot - 1 slots 15.932 us/op 11.714 us/op 1.36
processSlot - 32 slots 2.1627 ms/op 1.6978 ms/op 1.27
getEffectiveBalanceIncrementsZeroInactive - 250000 vs - 7PWei 478.65 us/op 397.99 us/op 1.20
getCommitteeAssignments - req 1 vs - 250000 vc 5.3555 ms/op 5.2708 ms/op 1.02
getCommitteeAssignments - req 100 vs - 250000 vc 7.5544 ms/op 7.3272 ms/op 1.03
getCommitteeAssignments - req 1000 vs - 250000 vc 8.5495 ms/op 7.7663 ms/op 1.10
RootCache.getBlockRootAtSlot - 250000 vs - 7PWei 9.3900 ns/op 9.7000 ns/op 0.97
state getBlockRootAtSlot - 250000 vs - 7PWei 1.3261 us/op 1.1563 us/op 1.15
computeProposers - vc 250000 19.510 ms/op 16.550 ms/op 1.18
computeEpochShuffling - vc 250000 172.89 ms/op 166.23 ms/op 1.04
getNextSyncCommittee - vc 250000 325.91 ms/op 275.45 ms/op 1.18

by benchmarkbot/action

Copy link
Contributor

@dapplion dapplion left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you!

@g11tech g11tech merged commit aa1af04 into unstable Sep 17, 2022
@g11tech g11tech deleted the g11tech/validator-ux branch September 17, 2022 09:39
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