lodestar
lodestar copied to clipboard
feat: warning log if primary beacon node is unhealthy
Motivation
Closes https://github.com/ChainSafe/lodestar/issues/6611
Description
Add warning log if primary beacon node is unhealthy
Related to https://github.com/ChainSafe/lodestar/pull/6415
Performance Report
✔️ no performance regression detected
Full benchmark results
| Benchmark suite | Current: 2c327217ad2334807c9f337b240282abb607dddc | Previous: e6c559f19994d8bbea1711bb73ccbe689195ad38 | Ratio |
|---|---|---|---|
| getPubkeys - index2pubkey - req 1000 vs - 250000 vc | 573.07 us/op | 680.59 us/op | 0.84 |
| getPubkeys - validatorsArr - req 1000 vs - 250000 vc | 44.357 us/op | 37.482 us/op | 1.18 |
| BLS verify - blst-native | 1.1862 ms/op | 1.0529 ms/op | 1.13 |
| BLS verifyMultipleSignatures 3 - blst-native | 2.5168 ms/op | 2.2441 ms/op | 1.12 |
| BLS verifyMultipleSignatures 8 - blst-native | 5.5597 ms/op | 4.9718 ms/op | 1.12 |
| BLS verifyMultipleSignatures 32 - blst-native | 20.455 ms/op | 18.278 ms/op | 1.12 |
| BLS verifyMultipleSignatures 64 - blst-native | 40.269 ms/op | 36.012 ms/op | 1.12 |
| BLS verifyMultipleSignatures 128 - blst-native | 79.846 ms/op | 71.514 ms/op | 1.12 |
| BLS deserializing 10000 signatures | 835.51 ms/op | 760.79 ms/op | 1.10 |
| BLS deserializing 100000 signatures | 8.3680 s/op | 7.5924 s/op | 1.10 |
| BLS verifyMultipleSignatures - same message - 3 - blst-native | 1.2065 ms/op | 1.0994 ms/op | 1.10 |
| BLS verifyMultipleSignatures - same message - 8 - blst-native | 1.4441 ms/op | 1.2495 ms/op | 1.16 |
| BLS verifyMultipleSignatures - same message - 32 - blst-native | 2.1842 ms/op | 2.0526 ms/op | 1.06 |
| BLS verifyMultipleSignatures - same message - 64 - blst-native | 3.5702 ms/op | 3.2425 ms/op | 1.10 |
| BLS verifyMultipleSignatures - same message - 128 - blst-native | 5.2988 ms/op | 5.3955 ms/op | 0.98 |
| BLS aggregatePubkeys 32 - blst-native | 24.126 us/op | 22.102 us/op | 1.09 |
| BLS aggregatePubkeys 128 - blst-native | 95.812 us/op | 82.664 us/op | 1.16 |
| notSeenSlots=1 numMissedVotes=1 numBadVotes=10 | 50.660 ms/op | 57.600 ms/op | 0.88 |
| notSeenSlots=1 numMissedVotes=0 numBadVotes=4 | 47.330 ms/op | 41.358 ms/op | 1.14 |
| notSeenSlots=2 numMissedVotes=1 numBadVotes=10 | 31.112 ms/op | 28.982 ms/op | 1.07 |
| getSlashingsAndExits - default max | 91.588 us/op | 69.462 us/op | 1.32 |
| getSlashingsAndExits - 2k | 249.48 us/op | 229.50 us/op | 1.09 |
| proposeBlockBody type=full, size=empty | 5.5686 ms/op | 5.0027 ms/op | 1.11 |
| isKnown best case - 1 super set check | 271.00 ns/op | 225.00 ns/op | 1.20 |
| isKnown normal case - 2 super set checks | 271.00 ns/op | 221.00 ns/op | 1.23 |
| isKnown worse case - 16 super set checks | 267.00 ns/op | 223.00 ns/op | 1.20 |
| InMemoryCheckpointStateCache - add get delete | 4.3830 us/op | 3.6990 us/op | 1.18 |
| validate api signedAggregateAndProof - struct | 2.5726 ms/op | 2.2215 ms/op | 1.16 |
| validate gossip signedAggregateAndProof - struct | 2.5941 ms/op | 2.2253 ms/op | 1.17 |
| validate gossip attestation - vc 640000 | 1.2287 ms/op | 1.0987 ms/op | 1.12 |
| batch validate gossip attestation - vc 640000 - chunk 32 | 143.27 us/op | 126.21 us/op | 1.14 |
| batch validate gossip attestation - vc 640000 - chunk 64 | 126.63 us/op | 114.32 us/op | 1.11 |
| batch validate gossip attestation - vc 640000 - chunk 128 | 117.58 us/op | 105.64 us/op | 1.11 |
| batch validate gossip attestation - vc 640000 - chunk 256 | 112.78 us/op | 104.59 us/op | 1.08 |
| pickEth1Vote - no votes | 1.0059 ms/op | 847.56 us/op | 1.19 |
| pickEth1Vote - max votes | 7.9115 ms/op | 7.2483 ms/op | 1.09 |
| pickEth1Vote - Eth1Data hashTreeRoot value x2048 | 14.153 ms/op | 13.108 ms/op | 1.08 |
| pickEth1Vote - Eth1Data hashTreeRoot tree x2048 | 19.462 ms/op | 17.456 ms/op | 1.11 |
| pickEth1Vote - Eth1Data fastSerialize value x2048 | 453.22 us/op | 330.40 us/op | 1.37 |
| pickEth1Vote - Eth1Data fastSerialize tree x2048 | 6.1283 ms/op | 4.7988 ms/op | 1.28 |
| bytes32 toHexString | 405.00 ns/op | 353.00 ns/op | 1.15 |
| bytes32 Buffer.toString(hex) | 230.00 ns/op | 190.00 ns/op | 1.21 |
| bytes32 Buffer.toString(hex) from Uint8Array | 332.00 ns/op | 265.00 ns/op | 1.25 |
| bytes32 Buffer.toString(hex) + 0x | 231.00 ns/op | 187.00 ns/op | 1.24 |
| Object access 1 prop | 0.12700 ns/op | 0.11200 ns/op | 1.13 |
| Map access 1 prop | 0.12100 ns/op | 0.10700 ns/op | 1.13 |
| Object get x1000 | 5.7600 ns/op | 5.1910 ns/op | 1.11 |
| Map get x1000 | 5.8770 ns/op | 5.5090 ns/op | 1.07 |
| Object set x1000 | 30.169 ns/op | 24.932 ns/op | 1.21 |
| Map set x1000 | 20.221 ns/op | 18.212 ns/op | 1.11 |
| Return object 10000 times | 0.27270 ns/op | 0.27050 ns/op | 1.01 |
| Throw Error 10000 times | 3.1778 us/op | 2.5170 us/op | 1.26 |
| fastMsgIdFn sha256 / 200 bytes | 2.0380 us/op | 1.5780 us/op | 1.29 |
| fastMsgIdFn h32 xxhash / 200 bytes | 210.00 ns/op | 178.00 ns/op | 1.18 |
| fastMsgIdFn h64 xxhash / 200 bytes | 244.00 ns/op | 200.00 ns/op | 1.22 |
| fastMsgIdFn sha256 / 1000 bytes | 6.8180 us/op | 5.3350 us/op | 1.28 |
| fastMsgIdFn h32 xxhash / 1000 bytes | 336.00 ns/op | 295.00 ns/op | 1.14 |
| fastMsgIdFn h64 xxhash / 1000 bytes | 312.00 ns/op | 263.00 ns/op | 1.19 |
| fastMsgIdFn sha256 / 10000 bytes | 59.925 us/op | 46.294 us/op | 1.29 |
| fastMsgIdFn h32 xxhash / 10000 bytes | 1.7060 us/op | 1.5850 us/op | 1.08 |
| fastMsgIdFn h64 xxhash / 10000 bytes | 1.1190 us/op | 1.0220 us/op | 1.09 |
| send data - 1000 256B messages | 11.349 ms/op | 9.4890 ms/op | 1.20 |
| send data - 1000 512B messages | 15.474 ms/op | 12.867 ms/op | 1.20 |
| send data - 1000 1024B messages | 26.053 ms/op | 19.907 ms/op | 1.31 |
| send data - 1000 1200B messages | 25.294 ms/op | 21.536 ms/op | 1.17 |
| send data - 1000 2048B messages | 30.911 ms/op | 26.333 ms/op | 1.17 |
| send data - 1000 4096B messages | 30.992 ms/op | 24.722 ms/op | 1.25 |
| send data - 1000 16384B messages | 67.575 ms/op | 59.399 ms/op | 1.14 |
| send data - 1000 65536B messages | 197.20 ms/op | 184.61 ms/op | 1.07 |
| enrSubnets - fastDeserialize 64 bits | 1.0190 us/op | 808.00 ns/op | 1.26 |
| enrSubnets - ssz BitVector 64 bits | 325.00 ns/op | 266.00 ns/op | 1.22 |
| enrSubnets - fastDeserialize 4 bits | 143.00 ns/op | 121.00 ns/op | 1.18 |
| enrSubnets - ssz BitVector 4 bits | 330.00 ns/op | 263.00 ns/op | 1.25 |
| prioritizePeers score -10:0 att 32-0.1 sync 2-0 | 143.09 us/op | 110.38 us/op | 1.30 |
| prioritizePeers score 0:0 att 32-0.25 sync 2-0.25 | 159.09 us/op | 129.77 us/op | 1.23 |
| prioritizePeers score 0:0 att 32-0.5 sync 2-0.5 | 262.84 us/op | 189.31 us/op | 1.39 |
| prioritizePeers score 0:0 att 64-0.75 sync 4-0.75 | 397.11 us/op | 336.56 us/op | 1.18 |
| prioritizePeers score 0:0 att 64-1 sync 4-1 | 587.00 us/op | 405.49 us/op | 1.45 |
| array of 16000 items push then shift | 1.5838 us/op | 1.1859 us/op | 1.34 |
| LinkedList of 16000 items push then shift | 6.8950 ns/op | 7.0350 ns/op | 0.98 |
| array of 16000 items push then pop | 107.18 ns/op | 77.215 ns/op | 1.39 |
| LinkedList of 16000 items push then pop | 6.7900 ns/op | 6.0860 ns/op | 1.12 |
| array of 24000 items push then shift | 2.3195 us/op | 1.7278 us/op | 1.34 |
| LinkedList of 24000 items push then shift | 6.9190 ns/op | 6.3580 ns/op | 1.09 |
| array of 24000 items push then pop | 134.84 ns/op | 98.779 ns/op | 1.37 |
| LinkedList of 24000 items push then pop | 7.0130 ns/op | 5.6940 ns/op | 1.23 |
| intersect bitArray bitLen 8 | 6.2040 ns/op | 4.8560 ns/op | 1.28 |
| intersect array and set length 8 | 45.513 ns/op | 34.627 ns/op | 1.31 |
| intersect bitArray bitLen 128 | 28.980 ns/op | 24.696 ns/op | 1.17 |
| intersect array and set length 128 | 658.46 ns/op | 528.50 ns/op | 1.25 |
| bitArray.getTrueBitIndexes() bitLen 128 | 1.7830 us/op | 1.0660 us/op | 1.67 |
| bitArray.getTrueBitIndexes() bitLen 248 | 3.1620 us/op | 1.8360 us/op | 1.72 |
| bitArray.getTrueBitIndexes() bitLen 512 | 5.9870 us/op | 3.4220 us/op | 1.75 |
| Buffer.concat 32 items | 915.00 ns/op | 759.00 ns/op | 1.21 |
| Uint8Array.set 32 items | 1.8150 us/op | 1.5850 us/op | 1.15 |
| Buffer.copy | 1.8630 us/op | 2.0840 us/op | 0.89 |
| Uint8Array.set - with subarray | 2.7220 us/op | 2.8890 us/op | 0.94 |
| Uint8Array.set - without subarray | 1.5170 us/op | 1.8590 us/op | 0.82 |
| Set add up to 64 items then delete first | 2.1743 us/op | 1.7721 us/op | 1.23 |
| OrderedSet add up to 64 items then delete first | 3.1575 us/op | 2.7261 us/op | 1.16 |
| Set add up to 64 items then delete last | 2.3786 us/op | 2.0798 us/op | 1.14 |
| OrderedSet add up to 64 items then delete last | 3.4630 us/op | 2.9007 us/op | 1.19 |
| Set add up to 64 items then delete middle | 2.3911 us/op | 1.8476 us/op | 1.29 |
| OrderedSet add up to 64 items then delete middle | 4.9408 us/op | 4.1120 us/op | 1.20 |
| Set add up to 128 items then delete first | 4.9383 us/op | 3.9800 us/op | 1.24 |
| OrderedSet add up to 128 items then delete first | 7.5761 us/op | 6.1807 us/op | 1.23 |
| Set add up to 128 items then delete last | 4.6949 us/op | 3.8154 us/op | 1.23 |
| OrderedSet add up to 128 items then delete last | 6.9940 us/op | 5.7575 us/op | 1.21 |
| Set add up to 128 items then delete middle | 4.6264 us/op | 3.8230 us/op | 1.21 |
| OrderedSet add up to 128 items then delete middle | 13.030 us/op | 11.233 us/op | 1.16 |
| Set add up to 256 items then delete first | 10.113 us/op | 7.7339 us/op | 1.31 |
| OrderedSet add up to 256 items then delete first | 15.415 us/op | 12.154 us/op | 1.27 |
| Set add up to 256 items then delete last | 9.3272 us/op | 7.4695 us/op | 1.25 |
| OrderedSet add up to 256 items then delete last | 14.089 us/op | 11.429 us/op | 1.23 |
| Set add up to 256 items then delete middle | 9.2394 us/op | 7.4371 us/op | 1.24 |
| OrderedSet add up to 256 items then delete middle | 39.141 us/op | 33.522 us/op | 1.17 |
| transfer serialized Status (84 B) | 1.3770 us/op | 1.2560 us/op | 1.10 |
| copy serialized Status (84 B) | 1.1040 us/op | 974.00 ns/op | 1.13 |
| transfer serialized SignedVoluntaryExit (112 B) | 1.5650 us/op | 1.3000 us/op | 1.20 |
| copy serialized SignedVoluntaryExit (112 B) | 1.2040 us/op | 1.0520 us/op | 1.14 |
| transfer serialized ProposerSlashing (416 B) | 2.3510 us/op | 2.0170 us/op | 1.17 |
| copy serialized ProposerSlashing (416 B) | 1.7040 us/op | 2.1440 us/op | 0.79 |
| transfer serialized Attestation (485 B) | 1.9570 us/op | 1.9400 us/op | 1.01 |
| copy serialized Attestation (485 B) | 1.7810 us/op | 2.0850 us/op | 0.85 |
| transfer serialized AttesterSlashing (33232 B) | 2.5930 us/op | 1.9820 us/op | 1.31 |
| copy serialized AttesterSlashing (33232 B) | 5.0880 us/op | 5.6550 us/op | 0.90 |
| transfer serialized Small SignedBeaconBlock (128000 B) | 2.9380 us/op | 2.4230 us/op | 1.21 |
| copy serialized Small SignedBeaconBlock (128000 B) | 14.927 us/op | 12.111 us/op | 1.23 |
| transfer serialized Avg SignedBeaconBlock (200000 B) | 3.2850 us/op | 2.6970 us/op | 1.22 |
| copy serialized Avg SignedBeaconBlock (200000 B) | 21.569 us/op | 17.000 us/op | 1.27 |
| transfer serialized BlobsSidecar (524380 B) | 2.6480 us/op | 2.5320 us/op | 1.05 |
| copy serialized BlobsSidecar (524380 B) | 85.005 us/op | 109.53 us/op | 0.78 |
| transfer serialized Big SignedBeaconBlock (1000000 B) | 2.8550 us/op | 2.9630 us/op | 0.96 |
| copy serialized Big SignedBeaconBlock (1000000 B) | 136.31 us/op | 130.50 us/op | 1.04 |
| pass gossip attestations to forkchoice per slot | 2.9196 ms/op | 2.3925 ms/op | 1.22 |
| forkChoice updateHead vc 100000 bc 64 eq 0 | 521.09 us/op | 374.43 us/op | 1.39 |
| forkChoice updateHead vc 600000 bc 64 eq 0 | 3.0808 ms/op | 2.5107 ms/op | 1.23 |
| forkChoice updateHead vc 1000000 bc 64 eq 0 | 5.0625 ms/op | 4.5978 ms/op | 1.10 |
| forkChoice updateHead vc 600000 bc 320 eq 0 | 2.8680 ms/op | 2.5358 ms/op | 1.13 |
| forkChoice updateHead vc 600000 bc 1200 eq 0 | 2.9586 ms/op | 2.5371 ms/op | 1.17 |
| forkChoice updateHead vc 600000 bc 7200 eq 0 | 4.1819 ms/op | 2.7924 ms/op | 1.50 |
| forkChoice updateHead vc 600000 bc 64 eq 1000 | 10.711 ms/op | 9.4519 ms/op | 1.13 |
| forkChoice updateHead vc 600000 bc 64 eq 10000 | 10.682 ms/op | 9.3944 ms/op | 1.14 |
| forkChoice updateHead vc 600000 bc 64 eq 300000 | 14.251 ms/op | 10.875 ms/op | 1.31 |
| computeDeltas 500000 validators 300 proto nodes | 3.4335 ms/op | 3.0213 ms/op | 1.14 |
| computeDeltas 500000 validators 1200 proto nodes | 3.4601 ms/op | 3.1402 ms/op | 1.10 |
| computeDeltas 500000 validators 7200 proto nodes | 3.4375 ms/op | 3.0369 ms/op | 1.13 |
| computeDeltas 750000 validators 300 proto nodes | 5.1220 ms/op | 4.4145 ms/op | 1.16 |
| computeDeltas 750000 validators 1200 proto nodes | 5.0223 ms/op | 4.4399 ms/op | 1.13 |
| computeDeltas 750000 validators 7200 proto nodes | 5.0735 ms/op | 4.3963 ms/op | 1.15 |
| computeDeltas 1400000 validators 300 proto nodes | 9.4531 ms/op | 8.2329 ms/op | 1.15 |
| computeDeltas 1400000 validators 1200 proto nodes | 9.3499 ms/op | 8.2271 ms/op | 1.14 |
| computeDeltas 1400000 validators 7200 proto nodes | 9.5022 ms/op | 8.2651 ms/op | 1.15 |
| computeDeltas 2100000 validators 300 proto nodes | 14.181 ms/op | 11.962 ms/op | 1.19 |
| computeDeltas 2100000 validators 1200 proto nodes | 14.168 ms/op | 12.354 ms/op | 1.15 |
| computeDeltas 2100000 validators 7200 proto nodes | 14.279 ms/op | 12.111 ms/op | 1.18 |
| altair processAttestation - 250000 vs - 7PWei normalcase | 1.6714 ms/op | 1.3274 ms/op | 1.26 |
| altair processAttestation - 250000 vs - 7PWei worstcase | 2.3557 ms/op | 2.0343 ms/op | 1.16 |
| altair processAttestation - setStatus - 1/6 committees join | 84.501 us/op | 68.473 us/op | 1.23 |
| altair processAttestation - setStatus - 1/3 committees join | 170.20 us/op | 131.70 us/op | 1.29 |
| altair processAttestation - setStatus - 1/2 committees join | 239.20 us/op | 183.78 us/op | 1.30 |
| altair processAttestation - setStatus - 2/3 committees join | 313.26 us/op | 262.07 us/op | 1.20 |
| altair processAttestation - setStatus - 4/5 committees join | 454.08 us/op | 377.46 us/op | 1.20 |
| altair processAttestation - setStatus - 100% committees join | 538.87 us/op | 456.20 us/op | 1.18 |
| altair processBlock - 250000 vs - 7PWei normalcase | 4.0353 ms/op | 3.4702 ms/op | 1.16 |
| altair processBlock - 250000 vs - 7PWei normalcase hashState | 29.047 ms/op | 24.516 ms/op | 1.18 |
| altair processBlock - 250000 vs - 7PWei worstcase | 39.671 ms/op | 39.116 ms/op | 1.01 |
| altair processBlock - 250000 vs - 7PWei worstcase hashState | 78.637 ms/op | 76.947 ms/op | 1.02 |
| phase0 processBlock - 250000 vs - 7PWei normalcase | 1.5465 ms/op | 2.1728 ms/op | 0.71 |
| phase0 processBlock - 250000 vs - 7PWei worstcase | 25.216 ms/op | 22.028 ms/op | 1.14 |
| altair processEth1Data - 250000 vs - 7PWei normalcase | 294.58 us/op | 237.11 us/op | 1.24 |
| getExpectedWithdrawals 250000 eb:1,eth1:1,we:0,wn:0,smpl:15 | 4.7790 us/op | 4.1210 us/op | 1.16 |
| getExpectedWithdrawals 250000 eb:0.95,eth1:0.1,we:0.05,wn:0,smpl:219 | 18.087 us/op | 17.538 us/op | 1.03 |
| getExpectedWithdrawals 250000 eb:0.95,eth1:0.3,we:0.05,wn:0,smpl:42 | 7.0420 us/op | 6.3970 us/op | 1.10 |
| getExpectedWithdrawals 250000 eb:0.95,eth1:0.7,we:0.05,wn:0,smpl:18 | 5.0570 us/op | 4.5490 us/op | 1.11 |
| getExpectedWithdrawals 250000 eb:0.1,eth1:0.1,we:0,wn:0,smpl:1020 | 68.034 us/op | 69.570 us/op | 0.98 |
| getExpectedWithdrawals 250000 eb:0.03,eth1:0.03,we:0,wn:0,smpl:11777 | 643.95 us/op | 490.12 us/op | 1.31 |
| getExpectedWithdrawals 250000 eb:0.01,eth1:0.01,we:0,wn:0,smpl:16384 | 938.58 us/op | 1.0416 ms/op | 0.90 |
| getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,smpl:16384 | 887.15 us/op | 1.1104 ms/op | 0.80 |
| getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,nocache,smpl:16384 | 2.4198 ms/op | 1.8457 ms/op | 1.31 |
| getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,smpl:16384 | 1.5628 ms/op | 1.1820 ms/op | 1.32 |
| getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,nocache,smpl:16384 | 3.6252 ms/op | 2.9122 ms/op | 1.24 |
| Tree 40 250000 create | 207.38 ms/op | 174.28 ms/op | 1.19 |
| Tree 40 250000 get(125000) | 139.93 ns/op | 103.06 ns/op | 1.36 |
| Tree 40 250000 set(125000) | 630.98 ns/op | 482.01 ns/op | 1.31 |
| Tree 40 250000 toArray() | 15.096 ms/op | 11.896 ms/op | 1.27 |
| Tree 40 250000 iterate all - toArray() + loop | 14.957 ms/op | 11.851 ms/op | 1.26 |
| Tree 40 250000 iterate all - get(i) | 50.017 ms/op | 39.135 ms/op | 1.28 |
| MutableVector 250000 create | 7.1144 ms/op | 12.563 ms/op | 0.57 |
| MutableVector 250000 get(125000) | 10.229 ns/op | 5.6030 ns/op | 1.83 |
| MutableVector 250000 set(125000) | 210.13 ns/op | 161.61 ns/op | 1.30 |
| MutableVector 250000 toArray() | 3.4101 ms/op | 2.5575 ms/op | 1.33 |
| MutableVector 250000 iterate all - toArray() + loop | 3.6157 ms/op | 2.6683 ms/op | 1.36 |
| MutableVector 250000 iterate all - get(i) | 1.5264 ms/op | 1.4069 ms/op | 1.08 |
| Array 250000 create | 3.0012 ms/op | 2.2465 ms/op | 1.34 |
| Array 250000 clone - spread | 1.6184 ms/op | 1.1641 ms/op | 1.39 |
| Array 250000 get(125000) | 0.39900 ns/op | 0.35600 ns/op | 1.12 |
| Array 250000 set(125000) | 0.42600 ns/op | 0.36600 ns/op | 1.16 |
| Array 250000 iterate all - loop | 103.87 us/op | 74.972 us/op | 1.39 |
| effectiveBalanceIncrements clone Uint8Array 300000 | 33.513 us/op | 12.708 us/op | 2.64 |
| effectiveBalanceIncrements clone MutableVector 300000 | 117.00 ns/op | 101.00 ns/op | 1.16 |
| effectiveBalanceIncrements rw all Uint8Array 300000 | 201.44 us/op | 162.95 us/op | 1.24 |
| effectiveBalanceIncrements rw all MutableVector 300000 | 66.263 ms/op | 52.654 ms/op | 1.26 |
| phase0 afterProcessEpoch - 250000 vs - 7PWei | 86.121 ms/op | 77.154 ms/op | 1.12 |
| phase0 beforeProcessEpoch - 250000 vs - 7PWei | 41.337 ms/op | 36.117 ms/op | 1.14 |
| altair processEpoch - mainnet_e81889 | 371.61 ms/op | 347.15 ms/op | 1.07 |
| mainnet_e81889 - altair beforeProcessEpoch | 60.729 ms/op | 43.367 ms/op | 1.40 |
| mainnet_e81889 - altair processJustificationAndFinalization | 12.208 us/op | 9.2700 us/op | 1.32 |
| mainnet_e81889 - altair processInactivityUpdates | 5.9272 ms/op | 5.2472 ms/op | 1.13 |
| mainnet_e81889 - altair processRewardsAndPenalties | 43.620 ms/op | 49.556 ms/op | 0.88 |
| mainnet_e81889 - altair processRegistryUpdates | 1.7250 us/op | 1.5830 us/op | 1.09 |
| mainnet_e81889 - altair processSlashings | 355.00 ns/op | 348.00 ns/op | 1.02 |
| mainnet_e81889 - altair processEth1DataReset | 285.00 ns/op | 267.00 ns/op | 1.07 |
| mainnet_e81889 - altair processEffectiveBalanceUpdates | 1.0512 ms/op | 1.1248 ms/op | 0.93 |
| mainnet_e81889 - altair processSlashingsReset | 2.9490 us/op | 2.3290 us/op | 1.27 |
| mainnet_e81889 - altair processRandaoMixesReset | 4.4960 us/op | 2.9780 us/op | 1.51 |
| mainnet_e81889 - altair processHistoricalRootsUpdate | 528.00 ns/op | 365.00 ns/op | 1.45 |
| mainnet_e81889 - altair processParticipationFlagUpdates | 1.8290 us/op | 1.2480 us/op | 1.47 |
| mainnet_e81889 - altair processSyncCommitteeUpdates | 496.00 ns/op | 297.00 ns/op | 1.67 |
| mainnet_e81889 - altair afterProcessEpoch | 90.450 ms/op | 80.556 ms/op | 1.12 |
| capella processEpoch - mainnet_e217614 | 1.2551 s/op | 1.1798 s/op | 1.06 |
| mainnet_e217614 - capella beforeProcessEpoch | 230.53 ms/op | 217.77 ms/op | 1.06 |
| mainnet_e217614 - capella processJustificationAndFinalization | 12.946 us/op | 9.7180 us/op | 1.33 |
| mainnet_e217614 - capella processInactivityUpdates | 17.085 ms/op | 14.896 ms/op | 1.15 |
| mainnet_e217614 - capella processRewardsAndPenalties | 232.90 ms/op | 251.56 ms/op | 0.93 |
| mainnet_e217614 - capella processRegistryUpdates | 12.557 us/op | 10.264 us/op | 1.22 |
| mainnet_e217614 - capella processSlashings | 403.00 ns/op | 313.00 ns/op | 1.29 |
| mainnet_e217614 - capella processEth1DataReset | 345.00 ns/op | 240.00 ns/op | 1.44 |
| mainnet_e217614 - capella processEffectiveBalanceUpdates | 9.9062 ms/op | 3.8012 ms/op | 2.61 |
| mainnet_e217614 - capella processSlashingsReset | 3.8300 us/op | 1.5520 us/op | 2.47 |
| mainnet_e217614 - capella processRandaoMixesReset | 3.6540 us/op | 2.3650 us/op | 1.55 |
| mainnet_e217614 - capella processHistoricalRootsUpdate | 342.00 ns/op | 265.00 ns/op | 1.29 |
| mainnet_e217614 - capella processParticipationFlagUpdates | 1.6900 us/op | 1.1070 us/op | 1.53 |
| mainnet_e217614 - capella afterProcessEpoch | 255.83 ms/op | 228.63 ms/op | 1.12 |
| phase0 processEpoch - mainnet_e58758 | 353.87 ms/op | 354.81 ms/op | 1.00 |
| mainnet_e58758 - phase0 beforeProcessEpoch | 98.988 ms/op | 98.406 ms/op | 1.01 |
| mainnet_e58758 - phase0 processJustificationAndFinalization | 13.958 us/op | 9.4680 us/op | 1.47 |
| mainnet_e58758 - phase0 processRewardsAndPenalties | 25.714 ms/op | 32.832 ms/op | 0.78 |
| mainnet_e58758 - phase0 processRegistryUpdates | 7.2860 us/op | 5.6420 us/op | 1.29 |
| mainnet_e58758 - phase0 processSlashings | 411.00 ns/op | 288.00 ns/op | 1.43 |
| mainnet_e58758 - phase0 processEth1DataReset | 288.00 ns/op | 300.00 ns/op | 0.96 |
| mainnet_e58758 - phase0 processEffectiveBalanceUpdates | 956.21 us/op | 723.34 us/op | 1.32 |
| mainnet_e58758 - phase0 processSlashingsReset | 3.2120 us/op | 1.4860 us/op | 2.16 |
| mainnet_e58758 - phase0 processRandaoMixesReset | 3.7440 us/op | 2.2010 us/op | 1.70 |
| mainnet_e58758 - phase0 processHistoricalRootsUpdate | 496.00 ns/op | 274.00 ns/op | 1.81 |
| mainnet_e58758 - phase0 processParticipationRecordUpdates | 3.5410 us/op | 3.4700 us/op | 1.02 |
| mainnet_e58758 - phase0 afterProcessEpoch | 74.193 ms/op | 63.283 ms/op | 1.17 |
| phase0 processEffectiveBalanceUpdates - 250000 normalcase | 1.0916 ms/op | 755.84 us/op | 1.44 |
| phase0 processEffectiveBalanceUpdates - 250000 worstcase 0.5 | 1.9969 ms/op | 1.4120 ms/op | 1.41 |
| altair processInactivityUpdates - 250000 normalcase | 16.728 ms/op | 16.188 ms/op | 1.03 |
| altair processInactivityUpdates - 250000 worstcase | 16.220 ms/op | 16.084 ms/op | 1.01 |
| phase0 processRegistryUpdates - 250000 normalcase | 6.7020 us/op | 4.2810 us/op | 1.57 |
| phase0 processRegistryUpdates - 250000 badcase_full_deposits | 231.17 us/op | 302.09 us/op | 0.77 |
| phase0 processRegistryUpdates - 250000 worstcase 0.5 | 112.23 ms/op | 107.69 ms/op | 1.04 |
| altair processRewardsAndPenalties - 250000 normalcase | 42.065 ms/op | 39.511 ms/op | 1.06 |
| altair processRewardsAndPenalties - 250000 worstcase | 40.064 ms/op | 39.312 ms/op | 1.02 |
| phase0 getAttestationDeltas - 250000 normalcase | 6.7683 ms/op | 5.6705 ms/op | 1.19 |
| phase0 getAttestationDeltas - 250000 worstcase | 7.0379 ms/op | 5.9105 ms/op | 1.19 |
| phase0 processSlashings - 250000 worstcase | 73.925 us/op | 48.773 us/op | 1.52 |
| altair processSyncCommitteeUpdates - 250000 | 118.98 ms/op | 107.30 ms/op | 1.11 |
| BeaconState.hashTreeRoot - No change | 218.00 ns/op | 217.00 ns/op | 1.00 |
| BeaconState.hashTreeRoot - 1 full validator | 114.08 us/op | 115.84 us/op | 0.98 |
| BeaconState.hashTreeRoot - 32 full validator | 1.1806 ms/op | 1.3593 ms/op | 0.87 |
| BeaconState.hashTreeRoot - 512 full validator | 12.688 ms/op | 13.302 ms/op | 0.95 |
| BeaconState.hashTreeRoot - 1 validator.effectiveBalance | 144.56 us/op | 128.00 us/op | 1.13 |
| BeaconState.hashTreeRoot - 32 validator.effectiveBalance | 1.7266 ms/op | 1.6546 ms/op | 1.04 |
| BeaconState.hashTreeRoot - 512 validator.effectiveBalance | 25.144 ms/op | 20.866 ms/op | 1.21 |
| BeaconState.hashTreeRoot - 1 balances | 99.323 us/op | 122.88 us/op | 0.81 |
| BeaconState.hashTreeRoot - 32 balances | 1.1647 ms/op | 784.34 us/op | 1.48 |
| BeaconState.hashTreeRoot - 512 balances | 8.8222 ms/op | 11.739 ms/op | 0.75 |
| BeaconState.hashTreeRoot - 250000 balances | 175.74 ms/op | 164.03 ms/op | 1.07 |
| aggregationBits - 2048 els - zipIndexesInBitList | 22.715 us/op | 18.713 us/op | 1.21 |
| byteArrayEquals 32 | 52.251 ns/op | 46.390 ns/op | 1.13 |
| Buffer.compare 32 | 16.608 ns/op | 16.062 ns/op | 1.03 |
| byteArrayEquals 1024 | 1.5444 us/op | 1.2397 us/op | 1.25 |
| Buffer.compare 1024 | 23.892 ns/op | 22.594 ns/op | 1.06 |
| byteArrayEquals 16384 | 24.583 us/op | 19.672 us/op | 1.25 |
| Buffer.compare 16384 | 197.42 ns/op | 175.26 ns/op | 1.13 |
| byteArrayEquals 123687377 | 185.74 ms/op | 146.38 ms/op | 1.27 |
| Buffer.compare 123687377 | 6.0281 ms/op | 3.6191 ms/op | 1.67 |
| byteArrayEquals 32 - diff last byte | 51.284 ns/op | 45.481 ns/op | 1.13 |
| Buffer.compare 32 - diff last byte | 16.620 ns/op | 15.718 ns/op | 1.06 |
| byteArrayEquals 1024 - diff last byte | 1.5469 us/op | 1.2204 us/op | 1.27 |
| Buffer.compare 1024 - diff last byte | 24.284 ns/op | 22.587 ns/op | 1.08 |
| byteArrayEquals 16384 - diff last byte | 24.628 us/op | 19.385 us/op | 1.27 |
| Buffer.compare 16384 - diff last byte | 215.63 ns/op | 168.99 ns/op | 1.28 |
| byteArrayEquals 123687377 - diff last byte | 186.55 ms/op | 145.72 ms/op | 1.28 |
| Buffer.compare 123687377 - diff last byte | 6.0821 ms/op | 5.2654 ms/op | 1.16 |
| byteArrayEquals 32 - random bytes | 4.8940 ns/op | 4.2380 ns/op | 1.15 |
| Buffer.compare 32 - random bytes | 16.291 ns/op | 14.002 ns/op | 1.16 |
| byteArrayEquals 1024 - random bytes | 4.8830 ns/op | 4.2100 ns/op | 1.16 |
| Buffer.compare 1024 - random bytes | 16.318 ns/op | 13.798 ns/op | 1.18 |
| byteArrayEquals 16384 - random bytes | 5.1840 ns/op | 4.2030 ns/op | 1.23 |
| Buffer.compare 16384 - random bytes | 16.284 ns/op | 13.767 ns/op | 1.18 |
| byteArrayEquals 123687377 - random bytes | 6.0900 ns/op | 5.4700 ns/op | 1.11 |
| Buffer.compare 123687377 - random bytes | 17.500 ns/op | 14.670 ns/op | 1.19 |
| regular array get 100000 times | 31.517 us/op | 27.323 us/op | 1.15 |
| wrappedArray get 100000 times | 31.283 us/op | 27.097 us/op | 1.15 |
| arrayWithProxy get 100000 times | 12.228 ms/op | 8.2046 ms/op | 1.49 |
| ssz.Root.equals | 43.604 ns/op | 39.494 ns/op | 1.10 |
| byteArrayEquals | 42.923 ns/op | 39.174 ns/op | 1.10 |
| Buffer.compare | 9.8210 ns/op | 8.0020 ns/op | 1.23 |
| shuffle list - 16384 els | 6.1230 ms/op | 5.0002 ms/op | 1.22 |
| shuffle list - 250000 els | 89.546 ms/op | 72.911 ms/op | 1.23 |
| processSlot - 1 slots | 12.897 us/op | 10.110 us/op | 1.28 |
| processSlot - 32 slots | 3.4104 ms/op | 2.8659 ms/op | 1.19 |
| getEffectiveBalanceIncrementsZeroInactive - 250000 vs - 7PWei | 36.925 ms/op | 42.280 ms/op | 0.87 |
| getCommitteeAssignments - req 1 vs - 250000 vc | 2.1165 ms/op | 1.7798 ms/op | 1.19 |
| getCommitteeAssignments - req 100 vs - 250000 vc | 4.0561 ms/op | 3.4565 ms/op | 1.17 |
| getCommitteeAssignments - req 1000 vs - 250000 vc | 4.3354 ms/op | 3.6917 ms/op | 1.17 |
| findModifiedValidators - 10000 modified validators | 243.83 ms/op | 228.07 ms/op | 1.07 |
| findModifiedValidators - 1000 modified validators | 180.34 ms/op | 161.64 ms/op | 1.12 |
| findModifiedValidators - 100 modified validators | 177.97 ms/op | 157.34 ms/op | 1.13 |
| findModifiedValidators - 10 modified validators | 204.50 ms/op | 140.47 ms/op | 1.46 |
| findModifiedValidators - 1 modified validators | 160.92 ms/op | 136.59 ms/op | 1.18 |
| findModifiedValidators - no difference | 163.06 ms/op | 148.61 ms/op | 1.10 |
| compare ViewDUs | 2.7631 s/op | 2.8320 s/op | 0.98 |
| compare each validator Uint8Array | 1.2898 s/op | 1.5759 s/op | 0.82 |
| compare ViewDU to Uint8Array | 983.54 ms/op | 669.58 ms/op | 1.47 |
| migrate state 1000000 validators, 24 modified, 0 new | 548.53 ms/op | 569.76 ms/op | 0.96 |
| migrate state 1000000 validators, 1700 modified, 1000 new | 803.36 ms/op | 795.04 ms/op | 1.01 |
| migrate state 1000000 validators, 3400 modified, 2000 new | 1.0036 s/op | 990.87 ms/op | 1.01 |
| migrate state 1500000 validators, 24 modified, 0 new | 551.88 ms/op | 563.49 ms/op | 0.98 |
| migrate state 1500000 validators, 1700 modified, 1000 new | 794.09 ms/op | 742.10 ms/op | 1.07 |
| migrate state 1500000 validators, 3400 modified, 2000 new | 1.0011 s/op | 981.87 ms/op | 1.02 |
| RootCache.getBlockRootAtSlot - 250000 vs - 7PWei | 4.2400 ns/op | 3.7200 ns/op | 1.14 |
| state getBlockRootAtSlot - 250000 vs - 7PWei | 737.83 ns/op | 517.87 ns/op | 1.42 |
| computeProposers - vc 250000 | 7.0702 ms/op | 6.3329 ms/op | 1.12 |
| computeEpochShuffling - vc 250000 | 88.982 ms/op | 80.882 ms/op | 1.10 |
| getNextSyncCommittee - vc 250000 | 119.32 ms/op | 94.895 ms/op | 1.26 |
| computeSigningRoot for AttestationData | 25.721 us/op | 17.136 us/op | 1.50 |
| hash AttestationData serialized data then Buffer.toString(base64) | 1.4707 us/op | 1.1619 us/op | 1.27 |
| toHexString serialized data | 843.52 ns/op | 756.74 ns/op | 1.11 |
| Buffer.toString(base64) | 179.39 ns/op | 139.31 ns/op | 1.29 |
by benchmarkbot/action
Codecov Report
Attention: Patch coverage is 20.00000% with 16 lines in your changes missing coverage. Please review.
Project coverage is 62.50%. Comparing base (
f69bc11) to head (b42eb4e). Report is 2 commits behind head on unstable.
Additional details and impacted files
@@ Coverage Diff @@
## unstable #6921 +/- ##
============================================
- Coverage 62.52% 62.50% -0.02%
============================================
Files 575 575
Lines 60985 61002 +17
Branches 2118 2127 +9
============================================
+ Hits 38128 38131 +3
- Misses 22818 22832 +14
Partials 39 39
:tada: This PR is included in v1.20.0 :tada: