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

feat: add setHeadAfterFirstInterval metric #5559

Merged
merged 1 commit into from
May 30, 2023

Conversation

dapplion
Copy link
Contributor

Motivation

Description

Add setHeadAfterFirstInterval metric, additive to histogram since it tracks exactly the amount of times blocks come more than 1/3 of the slot late. It's not guaranteed that the histogram will contain a bucket for it and it's a really important metric

@dapplion dapplion requested a review from a team as a code owner May 26, 2023 16:27
@dapplion dapplion added the scope-metrics All issues with regards to the exposed metrics. label May 26, 2023
@dapplion dapplion mentioned this pull request May 26, 2023
7 tasks
@github-actions
Copy link
Contributor

Performance Report

✔️ no performance regression detected

Full benchmark results
Benchmark suite Current: 137ac11 Previous: a42885d Ratio
getPubkeys - index2pubkey - req 1000 vs - 250000 vc 791.82 us/op 628.02 us/op 1.26
getPubkeys - validatorsArr - req 1000 vs - 250000 vc 45.435 us/op 66.909 us/op 0.68
BLS verify - blst-native 1.2206 ms/op 1.4306 ms/op 0.85
BLS verifyMultipleSignatures 3 - blst-native 2.4819 ms/op 2.7477 ms/op 0.90
BLS verifyMultipleSignatures 8 - blst-native 5.3290 ms/op 5.9450 ms/op 0.90
BLS verifyMultipleSignatures 32 - blst-native 19.361 ms/op 22.843 ms/op 0.85
BLS aggregatePubkeys 32 - blst-native 24.752 us/op 30.592 us/op 0.81
BLS aggregatePubkeys 128 - blst-native 96.315 us/op 119.48 us/op 0.81
getAttestationsForBlock 52.521 ms/op 103.98 ms/op 0.51
isKnown best case - 1 super set check 249.00 ns/op 292.00 ns/op 0.85
isKnown normal case - 2 super set checks 246.00 ns/op 290.00 ns/op 0.85
isKnown worse case - 16 super set checks 244.00 ns/op 295.00 ns/op 0.83
CheckpointStateCache - add get delete 4.9050 us/op 9.5440 us/op 0.51
validate gossip signedAggregateAndProof - struct 2.7863 ms/op 4.3434 ms/op 0.64
validate gossip attestation - struct 1.3284 ms/op 1.7846 ms/op 0.74
pickEth1Vote - no votes 1.2235 ms/op 2.4273 ms/op 0.50
pickEth1Vote - max votes 10.375 ms/op 19.659 ms/op 0.53
pickEth1Vote - Eth1Data hashTreeRoot value x2048 8.3769 ms/op 16.203 ms/op 0.52
pickEth1Vote - Eth1Data hashTreeRoot tree x2048 14.608 ms/op 27.832 ms/op 0.52
pickEth1Vote - Eth1Data fastSerialize value x2048 619.23 us/op 1.6541 ms/op 0.37
pickEth1Vote - Eth1Data fastSerialize tree x2048 7.8134 ms/op 11.502 ms/op 0.68
bytes32 toHexString 500.00 ns/op 1.3770 us/op 0.36
bytes32 Buffer.toString(hex) 353.00 ns/op 885.00 ns/op 0.40
bytes32 Buffer.toString(hex) from Uint8Array 545.00 ns/op 1.4220 us/op 0.38
bytes32 Buffer.toString(hex) + 0x 348.00 ns/op 918.00 ns/op 0.38
Object access 1 prop 0.17100 ns/op 0.43100 ns/op 0.40
Map access 1 prop 0.16300 ns/op 0.35200 ns/op 0.46
Object get x1000 6.7220 ns/op 15.299 ns/op 0.44
Map get x1000 0.61400 ns/op 1.5110 ns/op 0.41
Object set x1000 51.363 ns/op 109.13 ns/op 0.47
Map set x1000 42.963 ns/op 77.786 ns/op 0.55
Return object 10000 times 0.23550 ns/op 0.60410 ns/op 0.39
Throw Error 10000 times 4.1253 us/op 6.2273 us/op 0.66
fastMsgIdFn sha256 / 200 bytes 3.3970 us/op 4.0940 us/op 0.83
fastMsgIdFn h32 xxhash / 200 bytes 290.00 ns/op 433.00 ns/op 0.67
fastMsgIdFn h64 xxhash / 200 bytes 401.00 ns/op 787.00 ns/op 0.51
fastMsgIdFn sha256 / 1000 bytes 11.541 us/op 17.754 us/op 0.65
fastMsgIdFn h32 xxhash / 1000 bytes 416.00 ns/op 639.00 ns/op 0.65
fastMsgIdFn h64 xxhash / 1000 bytes 466.00 ns/op 707.00 ns/op 0.66
fastMsgIdFn sha256 / 10000 bytes 103.77 us/op 114.20 us/op 0.91
fastMsgIdFn h32 xxhash / 10000 bytes 1.9230 us/op 2.0770 us/op 0.93
fastMsgIdFn h64 xxhash / 10000 bytes 1.3780 us/op 1.5100 us/op 0.91
enrSubnets - fastDeserialize 64 bits 1.2710 us/op 1.8810 us/op 0.68
enrSubnets - ssz BitVector 64 bits 486.00 ns/op 593.00 ns/op 0.82
enrSubnets - fastDeserialize 4 bits 175.00 ns/op 204.00 ns/op 0.86
enrSubnets - ssz BitVector 4 bits 492.00 ns/op 639.00 ns/op 0.77
prioritizePeers score -10:0 att 32-0.1 sync 2-0 100.98 us/op 117.86 us/op 0.86
prioritizePeers score 0:0 att 32-0.25 sync 2-0.25 127.06 us/op 163.81 us/op 0.78
prioritizePeers score 0:0 att 32-0.5 sync 2-0.5 158.97 us/op 189.41 us/op 0.84
prioritizePeers score 0:0 att 64-0.75 sync 4-0.75 289.60 us/op 317.00 us/op 0.91
prioritizePeers score 0:0 att 64-1 sync 4-1 351.97 us/op 376.55 us/op 0.93
array of 16000 items push then shift 1.5624 us/op 1.6827 us/op 0.93
LinkedList of 16000 items push then shift 8.5030 ns/op 8.9610 ns/op 0.95
array of 16000 items push then pop 73.471 ns/op 119.33 ns/op 0.62
LinkedList of 16000 items push then pop 8.2230 ns/op 9.8070 ns/op 0.84
array of 24000 items push then shift 2.2767 us/op 2.4241 us/op 0.94
LinkedList of 24000 items push then shift 8.8250 ns/op 9.8100 ns/op 0.90
array of 24000 items push then pop 75.440 ns/op 91.686 ns/op 0.82
LinkedList of 24000 items push then pop 8.5260 ns/op 9.2410 ns/op 0.92
intersect bitArray bitLen 8 13.419 ns/op 14.017 ns/op 0.96
intersect array and set length 8 77.646 ns/op 85.044 ns/op 0.91
intersect bitArray bitLen 128 44.178 ns/op 44.896 ns/op 0.98
intersect array and set length 128 1.0513 us/op 1.2646 us/op 0.83
Buffer.concat 32 items 2.8760 us/op 3.1120 us/op 0.92
Uint8Array.set 32 items 2.7370 us/op 2.8030 us/op 0.98
pass gossip attestations to forkchoice per slot 2.7132 ms/op 3.1676 ms/op 0.86
computeDeltas 3.4313 ms/op 3.7372 ms/op 0.92
computeProposerBoostScoreFromBalances 1.7911 ms/op 2.0106 ms/op 0.89
altair processAttestation - 250000 vs - 7PWei normalcase 2.1551 ms/op 4.3188 ms/op 0.50
altair processAttestation - 250000 vs - 7PWei worstcase 3.3540 ms/op 5.5442 ms/op 0.60
altair processAttestation - setStatus - 1/6 committees join 135.41 us/op 150.99 us/op 0.90
altair processAttestation - setStatus - 1/3 committees join 280.09 us/op 290.29 us/op 0.96
altair processAttestation - setStatus - 1/2 committees join 377.90 us/op 431.13 us/op 0.88
altair processAttestation - setStatus - 2/3 committees join 471.92 us/op 501.81 us/op 0.94
altair processAttestation - setStatus - 4/5 committees join 678.49 us/op 868.30 us/op 0.78
altair processAttestation - setStatus - 100% committees join 801.89 us/op 806.04 us/op 0.99
altair processBlock - 250000 vs - 7PWei normalcase 16.562 ms/op 19.365 ms/op 0.86
altair processBlock - 250000 vs - 7PWei normalcase hashState 30.544 ms/op 33.473 ms/op 0.91
altair processBlock - 250000 vs - 7PWei worstcase 49.980 ms/op 57.031 ms/op 0.88
altair processBlock - 250000 vs - 7PWei worstcase hashState 75.349 ms/op 80.976 ms/op 0.93
phase0 processBlock - 250000 vs - 7PWei normalcase 2.1918 ms/op 3.0645 ms/op 0.72
phase0 processBlock - 250000 vs - 7PWei worstcase 29.264 ms/op 34.428 ms/op 0.85
altair processEth1Data - 250000 vs - 7PWei normalcase 491.64 us/op 673.64 us/op 0.73
getExpectedWithdrawals 250000 eb:1,eth1:1,we:0,wn:0,smpl:15 8.5550 us/op 14.742 us/op 0.58
getExpectedWithdrawals 250000 eb:0.95,eth1:0.1,we:0.05,wn:0,smpl:219 23.956 us/op 39.816 us/op 0.60
getExpectedWithdrawals 250000 eb:0.95,eth1:0.3,we:0.05,wn:0,smpl:42 10.388 us/op 18.426 us/op 0.56
getExpectedWithdrawals 250000 eb:0.95,eth1:0.7,we:0.05,wn:0,smpl:18 8.0600 us/op 14.971 us/op 0.54
getExpectedWithdrawals 250000 eb:0.1,eth1:0.1,we:0,wn:0,smpl:1020 105.23 us/op 121.97 us/op 0.86
getExpectedWithdrawals 250000 eb:0.03,eth1:0.03,we:0,wn:0,smpl:11777 676.94 us/op 985.68 us/op 0.69
getExpectedWithdrawals 250000 eb:0.01,eth1:0.01,we:0,wn:0,smpl:16384 932.05 us/op 1.0744 ms/op 0.87
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,smpl:16384 915.81 us/op 1.0686 ms/op 0.86
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,nocache,smpl:16384 2.3973 ms/op 3.2322 ms/op 0.74
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,smpl:16384 1.5147 ms/op 1.7606 ms/op 0.86
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,nocache,smpl:16384 3.9187 ms/op 5.9242 ms/op 0.66
Tree 40 250000 create 332.26 ms/op 559.55 ms/op 0.59
Tree 40 250000 get(125000) 188.79 ns/op 197.57 ns/op 0.96
Tree 40 250000 set(125000) 951.71 ns/op 1.1329 us/op 0.84
Tree 40 250000 toArray() 23.892 ms/op 27.014 ms/op 0.88
Tree 40 250000 iterate all - toArray() + loop 21.021 ms/op 27.303 ms/op 0.77
Tree 40 250000 iterate all - get(i) 71.966 ms/op 81.814 ms/op 0.88
MutableVector 250000 create 10.203 ms/op 12.333 ms/op 0.83
MutableVector 250000 get(125000) 6.5130 ns/op 6.7040 ns/op 0.97
MutableVector 250000 set(125000) 263.34 ns/op 352.99 ns/op 0.75
MutableVector 250000 toArray() 2.7075 ms/op 4.3007 ms/op 0.63
MutableVector 250000 iterate all - toArray() + loop 2.9705 ms/op 4.4776 ms/op 0.66
MutableVector 250000 iterate all - get(i) 1.5527 ms/op 1.5772 ms/op 0.98
Array 250000 create 2.5043 ms/op 4.3291 ms/op 0.58
Array 250000 clone - spread 1.1901 ms/op 1.5414 ms/op 0.77
Array 250000 get(125000) 0.62100 ns/op 0.79300 ns/op 0.78
Array 250000 set(125000) 0.69600 ns/op 1.4400 ns/op 0.48
Array 250000 iterate all - loop 110.45 us/op 92.930 us/op 1.19
effectiveBalanceIncrements clone Uint8Array 300000 27.769 us/op 61.746 us/op 0.45
effectiveBalanceIncrements clone MutableVector 300000 397.00 ns/op 473.00 ns/op 0.84
effectiveBalanceIncrements rw all Uint8Array 300000 171.38 us/op 173.22 us/op 0.99
effectiveBalanceIncrements rw all MutableVector 300000 89.688 ms/op 102.29 ms/op 0.88
phase0 afterProcessEpoch - 250000 vs - 7PWei 120.00 ms/op 119.57 ms/op 1.00
phase0 beforeProcessEpoch - 250000 vs - 7PWei 41.492 ms/op 39.367 ms/op 1.05
altair processEpoch - mainnet_e81889 317.60 ms/op 366.51 ms/op 0.87
mainnet_e81889 - altair beforeProcessEpoch 60.325 ms/op 78.419 ms/op 0.77
mainnet_e81889 - altair processJustificationAndFinalization 22.195 us/op 27.489 us/op 0.81
mainnet_e81889 - altair processInactivityUpdates 7.0220 ms/op 6.3080 ms/op 1.11
mainnet_e81889 - altair processRewardsAndPenalties 70.726 ms/op 55.600 ms/op 1.27
mainnet_e81889 - altair processRegistryUpdates 3.5360 us/op 3.2600 us/op 1.08
mainnet_e81889 - altair processSlashings 565.00 ns/op 735.00 ns/op 0.77
mainnet_e81889 - altair processEth1DataReset 620.00 ns/op 744.00 ns/op 0.83
mainnet_e81889 - altair processEffectiveBalanceUpdates 3.1351 ms/op 1.2813 ms/op 2.45
mainnet_e81889 - altair processSlashingsReset 6.9410 us/op 5.9740 us/op 1.16
mainnet_e81889 - altair processRandaoMixesReset 8.8900 us/op 11.877 us/op 0.75
mainnet_e81889 - altair processHistoricalRootsUpdate 1.1030 us/op 741.00 ns/op 1.49
mainnet_e81889 - altair processParticipationFlagUpdates 3.3470 us/op 3.3140 us/op 1.01
mainnet_e81889 - altair processSyncCommitteeUpdates 735.00 ns/op 571.00 ns/op 1.29
mainnet_e81889 - altair afterProcessEpoch 134.94 ms/op 131.40 ms/op 1.03
phase0 processEpoch - mainnet_e58758 374.86 ms/op 321.90 ms/op 1.16
mainnet_e58758 - phase0 beforeProcessEpoch 143.21 ms/op 105.16 ms/op 1.36
mainnet_e58758 - phase0 processJustificationAndFinalization 16.570 us/op 17.299 us/op 0.96
mainnet_e58758 - phase0 processRewardsAndPenalties 62.231 ms/op 52.623 ms/op 1.18
mainnet_e58758 - phase0 processRegistryUpdates 9.1470 us/op 7.3790 us/op 1.24
mainnet_e58758 - phase0 processSlashings 509.00 ns/op 610.00 ns/op 0.83
mainnet_e58758 - phase0 processEth1DataReset 550.00 ns/op 489.00 ns/op 1.12
mainnet_e58758 - phase0 processEffectiveBalanceUpdates 1.1036 ms/op 984.71 us/op 1.12
mainnet_e58758 - phase0 processSlashingsReset 3.9090 us/op 4.0440 us/op 0.97
mainnet_e58758 - phase0 processRandaoMixesReset 4.6460 us/op 4.9200 us/op 0.94
mainnet_e58758 - phase0 processHistoricalRootsUpdate 820.00 ns/op 873.00 ns/op 0.94
mainnet_e58758 - phase0 processParticipationRecordUpdates 4.5660 us/op 4.9100 us/op 0.93
mainnet_e58758 - phase0 afterProcessEpoch 102.62 ms/op 95.432 ms/op 1.08
phase0 processEffectiveBalanceUpdates - 250000 normalcase 1.3016 ms/op 1.2329 ms/op 1.06
phase0 processEffectiveBalanceUpdates - 250000 worstcase 0.5 1.5976 ms/op 1.5823 ms/op 1.01
altair processInactivityUpdates - 250000 normalcase 25.034 ms/op 22.035 ms/op 1.14
altair processInactivityUpdates - 250000 worstcase 26.284 ms/op 24.963 ms/op 1.05
phase0 processRegistryUpdates - 250000 normalcase 11.049 us/op 7.1120 us/op 1.55
phase0 processRegistryUpdates - 250000 badcase_full_deposits 278.51 us/op 252.66 us/op 1.10
phase0 processRegistryUpdates - 250000 worstcase 0.5 126.77 ms/op 127.13 ms/op 1.00
altair processRewardsAndPenalties - 250000 normalcase 66.371 ms/op 69.040 ms/op 0.96
altair processRewardsAndPenalties - 250000 worstcase 71.502 ms/op 69.479 ms/op 1.03
phase0 getAttestationDeltas - 250000 normalcase 8.1844 ms/op 6.7349 ms/op 1.22
phase0 getAttestationDeltas - 250000 worstcase 8.9278 ms/op 6.6639 ms/op 1.34
phase0 processSlashings - 250000 worstcase 3.9813 ms/op 3.5220 ms/op 1.13
altair processSyncCommitteeUpdates - 250000 184.28 ms/op 181.54 ms/op 1.02
BeaconState.hashTreeRoot - No change 290.00 ns/op 348.00 ns/op 0.83
BeaconState.hashTreeRoot - 1 full validator 55.208 us/op 50.540 us/op 1.09
BeaconState.hashTreeRoot - 32 full validator 569.51 us/op 483.16 us/op 1.18
BeaconState.hashTreeRoot - 512 full validator 5.2369 ms/op 5.5703 ms/op 0.94
BeaconState.hashTreeRoot - 1 validator.effectiveBalance 63.232 us/op 61.365 us/op 1.03
BeaconState.hashTreeRoot - 32 validator.effectiveBalance 978.96 us/op 908.01 us/op 1.08
BeaconState.hashTreeRoot - 512 validator.effectiveBalance 12.497 ms/op 11.696 ms/op 1.07
BeaconState.hashTreeRoot - 1 balances 55.931 us/op 48.027 us/op 1.16
BeaconState.hashTreeRoot - 32 balances 472.51 us/op 458.65 us/op 1.03
BeaconState.hashTreeRoot - 512 balances 4.8755 ms/op 4.3170 ms/op 1.13
BeaconState.hashTreeRoot - 250000 balances 83.393 ms/op 77.614 ms/op 1.07
aggregationBits - 2048 els - zipIndexesInBitList 17.444 us/op 16.328 us/op 1.07
regular array get 100000 times 46.111 us/op 33.133 us/op 1.39
wrappedArray get 100000 times 43.722 us/op 44.492 us/op 0.98
arrayWithProxy get 100000 times 19.118 ms/op 17.071 ms/op 1.12
ssz.Root.equals 599.00 ns/op 577.00 ns/op 1.04
byteArrayEquals 637.00 ns/op 561.00 ns/op 1.14
shuffle list - 16384 els 7.5047 ms/op 6.6427 ms/op 1.13
shuffle list - 250000 els 108.48 ms/op 97.272 ms/op 1.12
processSlot - 1 slots 9.4770 us/op 8.0680 us/op 1.17
processSlot - 32 slots 1.4081 ms/op 1.2797 ms/op 1.10
getEffectiveBalanceIncrementsZeroInactive - 250000 vs - 7PWei 37.301 ms/op 37.240 ms/op 1.00
getCommitteeAssignments - req 1 vs - 250000 vc 3.0127 ms/op 2.9371 ms/op 1.03
getCommitteeAssignments - req 100 vs - 250000 vc 4.4322 ms/op 4.1410 ms/op 1.07
getCommitteeAssignments - req 1000 vs - 250000 vc 4.6728 ms/op 4.4912 ms/op 1.04
RootCache.getBlockRootAtSlot - 250000 vs - 7PWei 5.1000 ns/op 5.1800 ns/op 0.98
state getBlockRootAtSlot - 250000 vs - 7PWei 679.11 ns/op 571.05 ns/op 1.19
computeProposers - vc 250000 11.114 ms/op 10.978 ms/op 1.01
computeEpochShuffling - vc 250000 107.85 ms/op 103.75 ms/op 1.04
getNextSyncCommittee - vc 250000 183.68 ms/op 179.92 ms/op 1.02
computeSigningRoot for AttestationData 13.761 us/op 14.451 us/op 0.95
hash AttestationData serialized data then Buffer.toString(base64) 2.5933 us/op 2.5143 us/op 1.03
toHexString serialized data 1.1202 us/op 1.1020 us/op 1.02
Buffer.toString(base64) 339.74 ns/op 353.75 ns/op 0.96

by benchmarkbot/action

@dapplion dapplion changed the title Add setHeadAfterFirstInterval metric feat: add setHeadAfterFirstInterval metric May 29, 2023
@wemeetagain wemeetagain merged commit 16eae96 into unstable May 30, 2023
@wemeetagain wemeetagain deleted the dapplion/head-delay-max branch May 30, 2023 14:31
@wemeetagain
Copy link
Member

🎉 This PR is included in v1.9.0 🎉

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
scope-metrics All issues with regards to the exposed metrics.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants