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 stateInternalCacheMiss metric #4278

Merged
merged 1 commit into from
Jul 12, 2022

Conversation

dapplion
Copy link
Contributor

Motivation

I suspect the internal cache of states is not preserved due to the many clones of the state

Description

Track when a clone state has its internal cache populated or not

@dapplion dapplion requested a review from a team as a code owner July 11, 2022 19:47
@dapplion dapplion added the scope-metrics All issues with regards to the exposed metrics. label Jul 11, 2022
@github-actions
Copy link
Contributor

Performance Report

✔️ no performance regression detected

Full benchmark results
Benchmark suite Current: 955753e Previous: 2b16141 Ratio
getPubkeys - index2pubkey - req 1000 vs - 250000 vc 2.0483 ms/op 2.6927 ms/op 0.76
getPubkeys - validatorsArr - req 1000 vs - 250000 vc 64.077 us/op 92.340 us/op 0.69
BLS verify - blst-native 2.1684 ms/op 2.8921 ms/op 0.75
BLS verifyMultipleSignatures 3 - blst-native 4.4758 ms/op 5.9057 ms/op 0.76
BLS verifyMultipleSignatures 8 - blst-native 9.6858 ms/op 13.004 ms/op 0.74
BLS verifyMultipleSignatures 32 - blst-native 35.220 ms/op 46.398 ms/op 0.76
BLS aggregatePubkeys 32 - blst-native 46.708 us/op 63.077 us/op 0.74
BLS aggregatePubkeys 128 - blst-native 182.27 us/op 242.45 us/op 0.75
getAttestationsForBlock 41.979 ms/op 57.367 ms/op 0.73
isKnown best case - 1 super set check 488.00 ns/op 549.00 ns/op 0.89
isKnown normal case - 2 super set checks 481.00 ns/op 485.00 ns/op 0.99
isKnown worse case - 16 super set checks 481.00 ns/op 500.00 ns/op 0.96
CheckpointStateCache - add get delete 11.236 us/op 14.336 us/op 0.78
validate gossip signedAggregateAndProof - struct 5.0366 ms/op 6.5086 ms/op 0.77
validate gossip attestation - struct 2.3649 ms/op 3.0918 ms/op 0.76
altair verifyImport mainnet_s3766816:31 6.9892 s/op 9.0404 s/op 0.77
pickEth1Vote - no votes 2.1615 ms/op 2.6472 ms/op 0.82
pickEth1Vote - max votes 25.735 ms/op 34.875 ms/op 0.74
pickEth1Vote - Eth1Data hashTreeRoot value x2048 13.989 ms/op 16.601 ms/op 0.84
pickEth1Vote - Eth1Data hashTreeRoot tree x2048 23.290 ms/op 27.557 ms/op 0.85
pickEth1Vote - Eth1Data fastSerialize value x2048 1.4984 ms/op 2.0762 ms/op 0.72
pickEth1Vote - Eth1Data fastSerialize tree x2048 18.913 ms/op 22.800 ms/op 0.83
bytes32 toHexString 1.0760 us/op 1.3820 us/op 0.78
bytes32 Buffer.toString(hex) 776.00 ns/op 913.00 ns/op 0.85
bytes32 Buffer.toString(hex) from Uint8Array 1.0380 us/op 1.1650 us/op 0.89
bytes32 Buffer.toString(hex) + 0x 777.00 ns/op 920.00 ns/op 0.84
Object access 1 prop 0.39400 ns/op 0.48100 ns/op 0.82
Map access 1 prop 0.34500 ns/op 0.35500 ns/op 0.97
Object get x1000 11.936 ns/op 16.596 ns/op 0.72
Map get x1000 1.0500 ns/op 1.0610 ns/op 0.99
Object set x1000 75.294 ns/op 124.92 ns/op 0.60
Map set x1000 53.066 ns/op 88.787 ns/op 0.60
Return object 10000 times 0.43280 ns/op 0.42820 ns/op 1.01
Throw Error 10000 times 5.9630 us/op 7.1103 us/op 0.84
enrSubnets - fastDeserialize 64 bits 2.9000 us/op 3.3870 us/op 0.86
enrSubnets - ssz BitVector 64 bits 855.00 ns/op 954.00 ns/op 0.90
enrSubnets - fastDeserialize 4 bits 412.00 ns/op 493.00 ns/op 0.84
enrSubnets - ssz BitVector 4 bits 853.00 ns/op 931.00 ns/op 0.92
prioritizePeers score -10:0 att 32-0.1 sync 2-0 88.625 us/op 119.55 us/op 0.74
prioritizePeers score 0:0 att 32-0.25 sync 2-0.25 128.83 us/op 153.73 us/op 0.84
prioritizePeers score 0:0 att 32-0.5 sync 2-0.5 229.22 us/op 297.21 us/op 0.77
prioritizePeers score 0:0 att 64-0.75 sync 4-0.75 334.68 us/op 652.96 us/op 0.51
prioritizePeers score 0:0 att 64-1 sync 4-1 407.30 us/op 630.66 us/op 0.65
RateTracker 1000000 limit, 1 obj count per request 191.40 ns/op 229.94 ns/op 0.83
RateTracker 1000000 limit, 2 obj count per request 140.61 ns/op 171.57 ns/op 0.82
RateTracker 1000000 limit, 4 obj count per request 112.99 ns/op 141.84 ns/op 0.80
RateTracker 1000000 limit, 8 obj count per request 105.98 ns/op 128.80 ns/op 0.82
RateTracker with prune 4.6330 us/op 6.4260 us/op 0.72
array of 16000 items push then shift 51.609 us/op 5.5906 us/op 9.23
LinkedList of 16000 items push then shift 16.286 ns/op 28.941 ns/op 0.56
array of 16000 items push then pop 214.93 ns/op 278.10 ns/op 0.77
LinkedList of 16000 items push then pop 14.553 ns/op 24.327 ns/op 0.60
array of 24000 items push then shift 77.357 us/op 8.0868 us/op 9.57
LinkedList of 24000 items push then shift 19.617 ns/op 27.138 ns/op 0.72
array of 24000 items push then pop 202.51 ns/op 249.15 ns/op 0.81
LinkedList of 24000 items push then pop 15.894 ns/op 27.446 ns/op 0.58
intersect bitArray bitLen 8 10.725 ns/op 13.257 ns/op 0.81
intersect array and set length 8 140.78 ns/op 227.10 ns/op 0.62
intersect bitArray bitLen 128 55.417 ns/op 72.451 ns/op 0.76
intersect array and set length 128 1.9057 us/op 2.6163 us/op 0.73
pass gossip attestations to forkchoice per slot 2.9303 ms/op 4.8020 ms/op 0.61
computeDeltas 3.1716 ms/op 4.2541 ms/op 0.75
computeProposerBoostScoreFromBalances 803.87 us/op 938.58 us/op 0.86
altair processAttestation - 250000 vs - 7PWei normalcase 3.6875 ms/op 5.8939 ms/op 0.63
altair processAttestation - 250000 vs - 7PWei worstcase 5.4856 ms/op 8.6438 ms/op 0.63
altair processAttestation - setStatus - 1/6 committees join 175.21 us/op 258.74 us/op 0.68
altair processAttestation - setStatus - 1/3 committees join 343.63 us/op 487.92 us/op 0.70
altair processAttestation - setStatus - 1/2 committees join 494.11 us/op 752.26 us/op 0.66
altair processAttestation - setStatus - 2/3 committees join 652.96 us/op 881.30 us/op 0.74
altair processAttestation - setStatus - 4/5 committees join 912.17 us/op 1.2678 ms/op 0.72
altair processAttestation - setStatus - 100% committees join 1.0999 ms/op 1.5109 ms/op 0.73
altair processBlock - 250000 vs - 7PWei normalcase 25.440 ms/op 32.677 ms/op 0.78
altair processBlock - 250000 vs - 7PWei normalcase hashState 35.421 ms/op 46.598 ms/op 0.76
altair processBlock - 250000 vs - 7PWei worstcase 85.414 ms/op 114.26 ms/op 0.75
altair processBlock - 250000 vs - 7PWei worstcase hashState 101.65 ms/op 133.49 ms/op 0.76
phase0 processBlock - 250000 vs - 7PWei normalcase 3.3958 ms/op 5.2536 ms/op 0.65
phase0 processBlock - 250000 vs - 7PWei worstcase 51.740 ms/op 68.786 ms/op 0.75
altair processEth1Data - 250000 vs - 7PWei normalcase 776.24 us/op 1.1473 ms/op 0.68
Tree 40 250000 create 701.29 ms/op 1.2530 s/op 0.56
Tree 40 250000 get(125000) 249.61 ns/op 345.04 ns/op 0.72
Tree 40 250000 set(125000) 2.1902 us/op 4.6165 us/op 0.47
Tree 40 250000 toArray() 27.368 ms/op 37.139 ms/op 0.74
Tree 40 250000 iterate all - toArray() + loop 27.776 ms/op 35.982 ms/op 0.77
Tree 40 250000 iterate all - get(i) 114.63 ms/op 139.05 ms/op 0.82
MutableVector 250000 create 13.668 ms/op 18.027 ms/op 0.76
MutableVector 250000 get(125000) 10.984 ns/op 15.385 ns/op 0.71
MutableVector 250000 set(125000) 535.71 ns/op 1.0908 us/op 0.49
MutableVector 250000 toArray() 6.3852 ms/op 8.7551 ms/op 0.73
MutableVector 250000 iterate all - toArray() + loop 6.2417 ms/op 7.8069 ms/op 0.80
MutableVector 250000 iterate all - get(i) 2.6067 ms/op 3.6000 ms/op 0.72
Array 250000 create 6.0160 ms/op 6.8400 ms/op 0.88
Array 250000 clone - spread 3.2070 ms/op 3.2960 ms/op 0.97
Array 250000 get(125000) 1.4730 ns/op 1.4290 ns/op 1.03
Array 250000 set(125000) 1.5000 ns/op 1.6050 ns/op 0.93
Array 250000 iterate all - loop 150.92 us/op 152.19 us/op 0.99
effectiveBalanceIncrements clone Uint8Array 300000 130.03 us/op 105.47 us/op 1.23
effectiveBalanceIncrements clone MutableVector 300000 636.00 ns/op 1.0170 us/op 0.63
effectiveBalanceIncrements rw all Uint8Array 300000 247.51 us/op 308.58 us/op 0.80
effectiveBalanceIncrements rw all MutableVector 300000 133.59 ms/op 262.22 ms/op 0.51
phase0 afterProcessEpoch - 250000 vs - 7PWei 186.76 ms/op 217.18 ms/op 0.86
phase0 beforeProcessEpoch - 250000 vs - 7PWei 56.807 ms/op 81.365 ms/op 0.70
altair processEpoch - mainnet_e81889 546.11 ms/op 699.78 ms/op 0.78
mainnet_e81889 - altair beforeProcessEpoch 123.59 ms/op 169.33 ms/op 0.73
mainnet_e81889 - altair processJustificationAndFinalization 16.348 us/op 78.045 us/op 0.21
mainnet_e81889 - altair processInactivityUpdates 8.9153 ms/op 11.875 ms/op 0.75
mainnet_e81889 - altair processRewardsAndPenalties 78.379 ms/op 110.27 ms/op 0.71
mainnet_e81889 - altair processRegistryUpdates 2.6930 us/op 17.597 us/op 0.15
mainnet_e81889 - altair processSlashings 528.00 ns/op 4.4220 us/op 0.12
mainnet_e81889 - altair processEth1DataReset 585.00 ns/op 5.0450 us/op 0.12
mainnet_e81889 - altair processEffectiveBalanceUpdates 2.3131 ms/op 2.7828 ms/op 0.83
mainnet_e81889 - altair processSlashingsReset 4.0160 us/op 22.576 us/op 0.18
mainnet_e81889 - altair processRandaoMixesReset 3.9680 us/op 26.856 us/op 0.15
mainnet_e81889 - altair processHistoricalRootsUpdate 571.00 ns/op 4.6000 us/op 0.12
mainnet_e81889 - altair processParticipationFlagUpdates 3.4580 us/op 17.685 us/op 0.20
mainnet_e81889 - altair processSyncCommitteeUpdates 621.00 ns/op 4.1230 us/op 0.15
mainnet_e81889 - altair afterProcessEpoch 217.50 ms/op 235.89 ms/op 0.92
phase0 processEpoch - mainnet_e58758 490.01 ms/op 676.76 ms/op 0.72
mainnet_e58758 - phase0 beforeProcessEpoch 177.01 ms/op 311.10 ms/op 0.57
mainnet_e58758 - phase0 processJustificationAndFinalization 17.604 us/op 74.300 us/op 0.24
mainnet_e58758 - phase0 processRewardsAndPenalties 98.680 ms/op 155.45 ms/op 0.63
mainnet_e58758 - phase0 processRegistryUpdates 8.6710 us/op 36.859 us/op 0.24
mainnet_e58758 - phase0 processSlashings 640.00 ns/op 3.8290 us/op 0.17
mainnet_e58758 - phase0 processEth1DataReset 605.00 ns/op 4.2580 us/op 0.14
mainnet_e58758 - phase0 processEffectiveBalanceUpdates 2.0226 ms/op 2.8730 ms/op 0.70
mainnet_e58758 - phase0 processSlashingsReset 4.7150 us/op 19.833 us/op 0.24
mainnet_e58758 - phase0 processRandaoMixesReset 4.5580 us/op 28.064 us/op 0.16
mainnet_e58758 - phase0 processHistoricalRootsUpdate 735.00 ns/op 4.8310 us/op 0.15
mainnet_e58758 - phase0 processParticipationRecordUpdates 4.4680 us/op 28.581 us/op 0.16
mainnet_e58758 - phase0 afterProcessEpoch 162.13 ms/op 191.61 ms/op 0.85
phase0 processEffectiveBalanceUpdates - 250000 normalcase 2.4037 ms/op 2.6036 ms/op 0.92
phase0 processEffectiveBalanceUpdates - 250000 worstcase 0.5 2.4152 ms/op 2.9278 ms/op 0.82
altair processInactivityUpdates - 250000 normalcase 39.058 ms/op 52.809 ms/op 0.74
altair processInactivityUpdates - 250000 worstcase 32.726 ms/op 49.990 ms/op 0.65
phase0 processRegistryUpdates - 250000 normalcase 7.2270 us/op 29.115 us/op 0.25
phase0 processRegistryUpdates - 250000 badcase_full_deposits 387.83 us/op 628.66 us/op 0.62
phase0 processRegistryUpdates - 250000 worstcase 0.5 182.66 ms/op 246.51 ms/op 0.74
altair processRewardsAndPenalties - 250000 normalcase 79.372 ms/op 104.44 ms/op 0.76
altair processRewardsAndPenalties - 250000 worstcase 75.199 ms/op 155.83 ms/op 0.48
phase0 getAttestationDeltas - 250000 normalcase 12.221 ms/op 15.235 ms/op 0.80
phase0 getAttestationDeltas - 250000 worstcase 13.248 ms/op 15.634 ms/op 0.85
phase0 processSlashings - 250000 worstcase 5.1031 ms/op 7.1838 ms/op 0.71
altair processSyncCommitteeUpdates - 250000 298.42 ms/op 370.06 ms/op 0.81
BeaconState.hashTreeRoot - No change 554.00 ns/op 677.00 ns/op 0.82
BeaconState.hashTreeRoot - 1 full validator 68.231 us/op 82.703 us/op 0.83
BeaconState.hashTreeRoot - 32 full validator 649.26 us/op 794.58 us/op 0.82
BeaconState.hashTreeRoot - 512 full validator 7.0730 ms/op 8.8024 ms/op 0.80
BeaconState.hashTreeRoot - 1 validator.effectiveBalance 82.344 us/op 104.95 us/op 0.78
BeaconState.hashTreeRoot - 32 validator.effectiveBalance 1.1774 ms/op 1.5300 ms/op 0.77
BeaconState.hashTreeRoot - 512 validator.effectiveBalance 14.700 ms/op 17.870 ms/op 0.82
BeaconState.hashTreeRoot - 1 balances 62.865 us/op 79.018 us/op 0.80
BeaconState.hashTreeRoot - 32 balances 585.67 us/op 706.77 us/op 0.83
BeaconState.hashTreeRoot - 512 balances 5.2666 ms/op 6.0678 ms/op 0.87
BeaconState.hashTreeRoot - 250000 balances 112.18 ms/op 112.51 ms/op 1.00
aggregationBits - 2048 els - zipIndexesInBitList 24.798 us/op 38.787 us/op 0.64
regular array get 100000 times 60.562 us/op 59.752 us/op 1.01
wrappedArray get 100000 times 60.579 us/op 58.595 us/op 1.03
arrayWithProxy get 100000 times 28.197 ms/op 36.920 ms/op 0.76
ssz.Root.equals 466.00 ns/op 634.00 ns/op 0.74
byteArrayEquals 458.00 ns/op 615.00 ns/op 0.74
shuffle list - 16384 els 11.194 ms/op 13.311 ms/op 0.84
shuffle list - 250000 els 166.41 ms/op 191.26 ms/op 0.87
processSlot - 1 slots 13.029 us/op 18.105 us/op 0.72
processSlot - 32 slots 1.9099 ms/op 2.5384 ms/op 0.75
getEffectiveBalanceIncrementsZeroInactive - 250000 vs - 7PWei 515.36 us/op 633.71 us/op 0.81
getCommitteeAssignments - req 1 vs - 250000 vc 5.3961 ms/op 5.6878 ms/op 0.95
getCommitteeAssignments - req 100 vs - 250000 vc 7.8206 ms/op 8.3168 ms/op 0.94
getCommitteeAssignments - req 1000 vs - 250000 vc 8.3538 ms/op 8.7955 ms/op 0.95
computeProposers - vc 250000 17.805 ms/op 21.480 ms/op 0.83
computeEpochShuffling - vc 250000 170.65 ms/op 205.26 ms/op 0.83
getNextSyncCommittee - vc 250000 296.70 ms/op 360.95 ms/op 0.82

by benchmarkbot/action

@wemeetagain wemeetagain merged commit 5a327e6 into unstable Jul 12, 2022
@wemeetagain wemeetagain deleted the dapplion/state-cache-miss-metric branch July 12, 2022 01:56
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