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

test: enable coredump for the unit tests #6107

Merged
merged 8 commits into from
Nov 24, 2023
Merged

Conversation

nazarhussain
Copy link
Contributor

Motivation

Improve debugging capabilities.

Description

Make sure if tests fails again we have coredump to debug further.

Steps to test or reproduce

Run all tests

@nazarhussain nazarhussain requested a review from a team as a code owner November 14, 2023 07:26
@nazarhussain nazarhussain self-assigned this Nov 14, 2023
Copy link
Contributor

github-actions bot commented Nov 14, 2023

Performance Report

✔️ no performance regression detected

Full benchmark results
Benchmark suite Current: 30ce453 Previous: fa30bcf Ratio
getPubkeys - index2pubkey - req 1000 vs - 250000 vc 513.14 us/op 1.0221 ms/op 0.50
getPubkeys - validatorsArr - req 1000 vs - 250000 vc 85.654 us/op 123.14 us/op 0.70
BLS verify - blst-native 1.3195 ms/op 1.3424 ms/op 0.98
BLS verifyMultipleSignatures 3 - blst-native 2.7839 ms/op 2.7949 ms/op 1.00
BLS verifyMultipleSignatures 8 - blst-native 6.1042 ms/op 6.1534 ms/op 0.99
BLS verifyMultipleSignatures 32 - blst-native 22.235 ms/op 22.878 ms/op 0.97
BLS verifyMultipleSignatures 64 - blst-native 43.738 ms/op 45.190 ms/op 0.97
BLS verifyMultipleSignatures 128 - blst-native 88.349 ms/op 89.268 ms/op 0.99
BLS deserializing 10000 signatures 927.78 ms/op 955.31 ms/op 0.97
BLS deserializing 100000 signatures 9.3561 s/op 9.3136 s/op 1.00
BLS verifyMultipleSignatures - same message - 3 - blst-native 1.3756 ms/op 1.4220 ms/op 0.97
BLS verifyMultipleSignatures - same message - 8 - blst-native 1.5087 ms/op 1.5130 ms/op 1.00
BLS verifyMultipleSignatures - same message - 32 - blst-native 2.6695 ms/op 2.3369 ms/op 1.14
BLS verifyMultipleSignatures - same message - 64 - blst-native 3.6861 ms/op 4.1216 ms/op 0.89
BLS verifyMultipleSignatures - same message - 128 - blst-native 7.4204 ms/op 5.4655 ms/op 1.36
BLS aggregatePubkeys 32 - blst-native 28.583 us/op 24.856 us/op 1.15
BLS aggregatePubkeys 128 - blst-native 106.36 us/op 97.166 us/op 1.09
getAttestationsForBlock 45.105 ms/op 42.616 ms/op 1.06
isKnown best case - 1 super set check 366.00 ns/op 315.00 ns/op 1.16
isKnown normal case - 2 super set checks 331.00 ns/op 296.00 ns/op 1.12
isKnown worse case - 16 super set checks 400.00 ns/op 322.00 ns/op 1.24
CheckpointStateCache - add get delete 6.6720 us/op 5.3720 us/op 1.24
validate api signedAggregateAndProof - struct 2.8208 ms/op 2.8373 ms/op 0.99
validate gossip signedAggregateAndProof - struct 2.8456 ms/op 2.7998 ms/op 1.02
validate gossip attestation - vc 640000 1.3766 ms/op 1.3923 ms/op 0.99
batch validate gossip attestation - vc 640000 - chunk 32 164.41 us/op 167.77 us/op 0.98
batch validate gossip attestation - vc 640000 - chunk 64 139.81 us/op 146.74 us/op 0.95
batch validate gossip attestation - vc 640000 - chunk 128 131.03 us/op 139.90 us/op 0.94
batch validate gossip attestation - vc 640000 - chunk 256 130.61 us/op 127.43 us/op 1.03
pickEth1Vote - no votes 1.1571 ms/op 1.3260 ms/op 0.87
pickEth1Vote - max votes 9.8591 ms/op 8.6750 ms/op 1.14
pickEth1Vote - Eth1Data hashTreeRoot value x2048 21.534 ms/op 14.293 ms/op 1.51
pickEth1Vote - Eth1Data hashTreeRoot tree x2048 29.519 ms/op 22.048 ms/op 1.34
pickEth1Vote - Eth1Data fastSerialize value x2048 572.08 us/op 575.28 us/op 0.99
pickEth1Vote - Eth1Data fastSerialize tree x2048 6.1986 ms/op 4.3687 ms/op 1.42
bytes32 toHexString 496.00 ns/op 485.00 ns/op 1.02
bytes32 Buffer.toString(hex) 293.00 ns/op 288.00 ns/op 1.02
bytes32 Buffer.toString(hex) from Uint8Array 453.00 ns/op 437.00 ns/op 1.04
bytes32 Buffer.toString(hex) + 0x 301.00 ns/op 298.00 ns/op 1.01
Object access 1 prop 0.16200 ns/op 0.16800 ns/op 0.96
Map access 1 prop 0.14900 ns/op 0.15000 ns/op 0.99
Object get x1000 7.2350 ns/op 7.3830 ns/op 0.98
Map get x1000 0.64200 ns/op 0.62200 ns/op 1.03
Object set x1000 51.017 ns/op 51.419 ns/op 0.99
Map set x1000 39.281 ns/op 40.256 ns/op 0.98
Return object 10000 times 0.23920 ns/op 0.25170 ns/op 0.95
Throw Error 10000 times 3.8589 us/op 3.9639 us/op 0.97
fastMsgIdFn sha256 / 200 bytes 3.3140 us/op 3.4280 us/op 0.97
fastMsgIdFn h32 xxhash / 200 bytes 276.00 ns/op 316.00 ns/op 0.87
fastMsgIdFn h64 xxhash / 200 bytes 347.00 ns/op 363.00 ns/op 0.96
fastMsgIdFn sha256 / 1000 bytes 11.361 us/op 11.565 us/op 0.98
fastMsgIdFn h32 xxhash / 1000 bytes 398.00 ns/op 436.00 ns/op 0.91
fastMsgIdFn h64 xxhash / 1000 bytes 411.00 ns/op 437.00 ns/op 0.94
fastMsgIdFn sha256 / 10000 bytes 103.75 us/op 106.65 us/op 0.97
fastMsgIdFn h32 xxhash / 10000 bytes 1.8970 us/op 2.0010 us/op 0.95
fastMsgIdFn h64 xxhash / 10000 bytes 1.2910 us/op 1.4320 us/op 0.90
send data - 1000 256B messages 18.263 ms/op 20.881 ms/op 0.87
send data - 1000 512B messages 25.575 ms/op 28.638 ms/op 0.89
send data - 1000 1024B messages 39.969 ms/op 43.715 ms/op 0.91
send data - 1000 1200B messages 37.914 ms/op 38.507 ms/op 0.98
send data - 1000 2048B messages 42.284 ms/op 42.074 ms/op 1.00
send data - 1000 4096B messages 39.689 ms/op 42.726 ms/op 0.93
send data - 1000 16384B messages 108.72 ms/op 114.34 ms/op 0.95
send data - 1000 65536B messages 404.60 ms/op 438.16 ms/op 0.92
enrSubnets - fastDeserialize 64 bits 1.6240 us/op 1.3090 us/op 1.24
enrSubnets - ssz BitVector 64 bits 504.00 ns/op 416.00 ns/op 1.21
enrSubnets - fastDeserialize 4 bits 228.00 ns/op 170.00 ns/op 1.34
enrSubnets - ssz BitVector 4 bits 533.00 ns/op 434.00 ns/op 1.23
prioritizePeers score -10:0 att 32-0.1 sync 2-0 113.95 us/op 101.21 us/op 1.13
prioritizePeers score 0:0 att 32-0.25 sync 2-0.25 133.75 us/op 125.04 us/op 1.07
prioritizePeers score 0:0 att 32-0.5 sync 2-0.5 196.85 us/op 167.83 us/op 1.17
prioritizePeers score 0:0 att 64-0.75 sync 4-0.75 313.55 us/op 288.19 us/op 1.09
prioritizePeers score 0:0 att 64-1 sync 4-1 377.41 us/op 342.03 us/op 1.10
array of 16000 items push then shift 1.6521 us/op 1.6450 us/op 1.00
LinkedList of 16000 items push then shift 9.1400 ns/op 8.9460 ns/op 1.02
array of 16000 items push then pop 111.64 ns/op 87.688 ns/op 1.27
LinkedList of 16000 items push then pop 9.0610 ns/op 8.6580 ns/op 1.05
array of 24000 items push then shift 2.5565 us/op 2.5664 us/op 1.00
LinkedList of 24000 items push then shift 9.2780 ns/op 8.9830 ns/op 1.03
array of 24000 items push then pop 151.75 ns/op 134.51 ns/op 1.13
LinkedList of 24000 items push then pop 8.7800 ns/op 8.8130 ns/op 1.00
intersect bitArray bitLen 8 6.9910 ns/op 6.9280 ns/op 1.01
intersect array and set length 8 65.083 ns/op 61.058 ns/op 1.07
intersect bitArray bitLen 128 32.276 ns/op 34.224 ns/op 0.94
intersect array and set length 128 897.38 ns/op 970.59 ns/op 0.92
bitArray.getTrueBitIndexes() bitLen 128 1.7090 us/op 1.6450 us/op 1.04
bitArray.getTrueBitIndexes() bitLen 248 2.9320 us/op 2.6840 us/op 1.09
bitArray.getTrueBitIndexes() bitLen 512 5.2010 us/op 5.0150 us/op 1.04
Buffer.concat 32 items 1.0090 us/op 953.00 ns/op 1.06
Uint8Array.set 32 items 2.3800 us/op 2.0310 us/op 1.17
Set add up to 64 items then delete first 4.3593 us/op 4.4219 us/op 0.99
OrderedSet add up to 64 items then delete first 6.1479 us/op 6.0943 us/op 1.01
Set add up to 64 items then delete last 4.8816 us/op 4.7728 us/op 1.02
OrderedSet add up to 64 items then delete last 5.7590 us/op 5.8744 us/op 0.98
Set add up to 64 items then delete middle 4.9992 us/op 4.8558 us/op 1.03
OrderedSet add up to 64 items then delete middle 8.3516 us/op 8.1830 us/op 1.02
Set add up to 128 items then delete first 10.681 us/op 9.8596 us/op 1.08
OrderedSet add up to 128 items then delete first 14.609 us/op 12.587 us/op 1.16
Set add up to 128 items then delete last 10.630 us/op 9.7485 us/op 1.09
OrderedSet add up to 128 items then delete last 14.022 us/op 13.091 us/op 1.07
Set add up to 128 items then delete middle 10.420 us/op 10.400 us/op 1.00
OrderedSet add up to 128 items then delete middle 18.459 us/op 17.822 us/op 1.04
Set add up to 256 items then delete first 21.818 us/op 19.486 us/op 1.12
OrderedSet add up to 256 items then delete first 28.619 us/op 25.901 us/op 1.10
Set add up to 256 items then delete last 21.428 us/op 19.626 us/op 1.09
OrderedSet add up to 256 items then delete last 27.850 us/op 26.865 us/op 1.04
Set add up to 256 items then delete middle 20.778 us/op 20.529 us/op 1.01
OrderedSet add up to 256 items then delete middle 51.497 us/op 51.421 us/op 1.00
transfer serialized Status (84 B) 2.0030 us/op 1.8120 us/op 1.11
copy serialized Status (84 B) 1.6910 us/op 1.5480 us/op 1.09
transfer serialized SignedVoluntaryExit (112 B) 2.0290 us/op 1.9460 us/op 1.04
copy serialized SignedVoluntaryExit (112 B) 1.6790 us/op 1.5570 us/op 1.08
transfer serialized ProposerSlashing (416 B) 2.3370 us/op 2.3380 us/op 1.00
copy serialized ProposerSlashing (416 B) 2.3660 us/op 2.0620 us/op 1.15
transfer serialized Attestation (485 B) 2.7140 us/op 2.2020 us/op 1.23
copy serialized Attestation (485 B) 2.7210 us/op 2.2580 us/op 1.21
transfer serialized AttesterSlashing (33232 B) 2.2170 us/op 2.3320 us/op 0.95
copy serialized AttesterSlashing (33232 B) 6.6170 us/op 7.4840 us/op 0.88
transfer serialized Small SignedBeaconBlock (128000 B) 2.5980 us/op 2.7220 us/op 0.95
copy serialized Small SignedBeaconBlock (128000 B) 17.778 us/op 20.313 us/op 0.88
transfer serialized Avg SignedBeaconBlock (200000 B) 2.8680 us/op 3.2970 us/op 0.87
copy serialized Avg SignedBeaconBlock (200000 B) 25.138 us/op 28.762 us/op 0.87
transfer serialized BlobsSidecar (524380 B) 2.9020 us/op 3.8730 us/op 0.75
copy serialized BlobsSidecar (524380 B) 104.17 us/op 109.22 us/op 0.95
transfer serialized Big SignedBeaconBlock (1000000 B) 3.1830 us/op 4.3390 us/op 0.73
copy serialized Big SignedBeaconBlock (1000000 B) 157.30 us/op 175.43 us/op 0.90
pass gossip attestations to forkchoice per slot 4.2637 ms/op 4.4950 ms/op 0.95
forkChoice updateHead vc 100000 bc 64 eq 0 671.41 us/op 694.79 us/op 0.97
forkChoice updateHead vc 600000 bc 64 eq 0 5.3438 ms/op 5.1568 ms/op 1.04
forkChoice updateHead vc 1000000 bc 64 eq 0 7.5013 ms/op 7.2222 ms/op 1.04
forkChoice updateHead vc 600000 bc 320 eq 0 4.3239 ms/op 4.3090 ms/op 1.00
forkChoice updateHead vc 600000 bc 1200 eq 0 4.2488 ms/op 4.4621 ms/op 0.95
forkChoice updateHead vc 600000 bc 7200 eq 0 5.7175 ms/op 5.6238 ms/op 1.02
forkChoice updateHead vc 600000 bc 64 eq 1000 11.280 ms/op 11.688 ms/op 0.97
forkChoice updateHead vc 600000 bc 64 eq 10000 11.988 ms/op 12.519 ms/op 0.96
forkChoice updateHead vc 600000 bc 64 eq 300000 17.933 ms/op 16.274 ms/op 1.10
computeDeltas 500000 validators 300 proto nodes 6.5504 ms/op 6.4767 ms/op 1.01
computeDeltas 500000 validators 1200 proto nodes 6.3882 ms/op 6.5292 ms/op 0.98
computeDeltas 500000 validators 7200 proto nodes 6.3149 ms/op 6.3254 ms/op 1.00
computeDeltas 750000 validators 300 proto nodes 9.7324 ms/op 10.136 ms/op 0.96
computeDeltas 750000 validators 1200 proto nodes 10.041 ms/op 9.8984 ms/op 1.01
computeDeltas 750000 validators 7200 proto nodes 9.7853 ms/op 10.087 ms/op 0.97
computeDeltas 1400000 validators 300 proto nodes 18.318 ms/op 19.360 ms/op 0.95
computeDeltas 1400000 validators 1200 proto nodes 17.888 ms/op 19.894 ms/op 0.90
computeDeltas 1400000 validators 7200 proto nodes 18.000 ms/op 20.067 ms/op 0.90
computeDeltas 2100000 validators 300 proto nodes 28.717 ms/op 31.969 ms/op 0.90
computeDeltas 2100000 validators 1200 proto nodes 27.702 ms/op 33.623 ms/op 0.82
computeDeltas 2100000 validators 7200 proto nodes 27.792 ms/op 35.427 ms/op 0.78
computeProposerBoostScoreFromBalances 500000 validators 3.3535 ms/op 3.6346 ms/op 0.92
computeProposerBoostScoreFromBalances 750000 validators 3.4047 ms/op 3.6754 ms/op 0.93
computeProposerBoostScoreFromBalances 1400000 validators 3.4787 ms/op 3.4217 ms/op 1.02
computeProposerBoostScoreFromBalances 2100000 validators 3.4480 ms/op 3.4613 ms/op 1.00
altair processAttestation - 250000 vs - 7PWei normalcase 3.4422 ms/op 2.3066 ms/op 1.49
altair processAttestation - 250000 vs - 7PWei worstcase 4.9691 ms/op 7.1374 ms/op 0.70
altair processAttestation - setStatus - 1/6 committees join 167.29 us/op 330.35 us/op 0.51
altair processAttestation - setStatus - 1/3 committees join 315.32 us/op 663.53 us/op 0.48
altair processAttestation - setStatus - 1/2 committees join 472.54 us/op 618.34 us/op 0.76
altair processAttestation - setStatus - 2/3 committees join 544.81 us/op 725.74 us/op 0.75
altair processAttestation - setStatus - 4/5 committees join 722.06 us/op 990.79 us/op 0.73
altair processAttestation - setStatus - 100% committees join 904.89 us/op 1.0123 ms/op 0.89
altair processBlock - 250000 vs - 7PWei normalcase 11.644 ms/op 10.274 ms/op 1.13
altair processBlock - 250000 vs - 7PWei normalcase hashState 39.999 ms/op 35.865 ms/op 1.12
altair processBlock - 250000 vs - 7PWei worstcase 45.673 ms/op 43.228 ms/op 1.06
altair processBlock - 250000 vs - 7PWei worstcase hashState 109.18 ms/op 85.551 ms/op 1.28
phase0 processBlock - 250000 vs - 7PWei normalcase 3.4470 ms/op 2.2669 ms/op 1.52
phase0 processBlock - 250000 vs - 7PWei worstcase 37.565 ms/op 30.185 ms/op 1.24
altair processEth1Data - 250000 vs - 7PWei normalcase 673.91 us/op 696.35 us/op 0.97
getExpectedWithdrawals 250000 eb:1,eth1:1,we:0,wn:0,smpl:15 11.626 us/op 20.921 us/op 0.56
getExpectedWithdrawals 250000 eb:0.95,eth1:0.1,we:0.05,wn:0,smpl:219 95.109 us/op 70.809 us/op 1.34
getExpectedWithdrawals 250000 eb:0.95,eth1:0.3,we:0.05,wn:0,smpl:42 31.749 us/op 30.307 us/op 1.05
getExpectedWithdrawals 250000 eb:0.95,eth1:0.7,we:0.05,wn:0,smpl:18 13.720 us/op 20.776 us/op 0.66
getExpectedWithdrawals 250000 eb:0.1,eth1:0.1,we:0,wn:0,smpl:1020 241.33 us/op 247.88 us/op 0.97
getExpectedWithdrawals 250000 eb:0.03,eth1:0.03,we:0,wn:0,smpl:11777 1.9956 ms/op 1.8919 ms/op 1.05
getExpectedWithdrawals 250000 eb:0.01,eth1:0.01,we:0,wn:0,smpl:16384 2.6039 ms/op 2.4015 ms/op 1.08
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,smpl:16384 2.4259 ms/op 2.0195 ms/op 1.20
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,nocache,smpl:16384 4.2503 ms/op 4.2838 ms/op 0.99
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,smpl:16384 3.1565 ms/op 3.2648 ms/op 0.97
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,nocache,smpl:16384 7.5321 ms/op 6.5361 ms/op 1.15
Tree 40 250000 create 455.63 ms/op 631.29 ms/op 0.72
Tree 40 250000 get(125000) 221.65 ns/op 258.78 ns/op 0.86
Tree 40 250000 set(125000) 1.3068 us/op 1.9120 us/op 0.68
Tree 40 250000 toArray() 22.679 ms/op 28.383 ms/op 0.80
Tree 40 250000 iterate all - toArray() + loop 23.749 ms/op 24.735 ms/op 0.96
Tree 40 250000 iterate all - get(i) 82.126 ms/op 80.893 ms/op 1.02
MutableVector 250000 create 19.014 ms/op 12.845 ms/op 1.48
MutableVector 250000 get(125000) 6.8560 ns/op 8.1650 ns/op 0.84
MutableVector 250000 set(125000) 317.90 ns/op 541.56 ns/op 0.59
MutableVector 250000 toArray() 4.1536 ms/op 4.8533 ms/op 0.86
MutableVector 250000 iterate all - toArray() + loop 4.6017 ms/op 4.8025 ms/op 0.96
MutableVector 250000 iterate all - get(i) 1.5794 ms/op 1.7620 ms/op 0.90
Array 250000 create 4.0546 ms/op 4.4067 ms/op 0.92
Array 250000 clone - spread 1.4387 ms/op 1.6691 ms/op 0.86
Array 250000 get(125000) 0.69000 ns/op 0.84500 ns/op 0.82
Array 250000 set(125000) 0.76900 ns/op 0.88300 ns/op 0.87
Array 250000 iterate all - loop 87.750 us/op 90.697 us/op 0.97
effectiveBalanceIncrements clone Uint8Array 300000 44.053 us/op 47.973 us/op 0.92
effectiveBalanceIncrements clone MutableVector 300000 437.00 ns/op 308.00 ns/op 1.42
effectiveBalanceIncrements rw all Uint8Array 300000 190.34 us/op 192.86 us/op 0.99
effectiveBalanceIncrements rw all MutableVector 300000 97.172 ms/op 98.531 ms/op 0.99
phase0 afterProcessEpoch - 250000 vs - 7PWei 118.52 ms/op 135.29 ms/op 0.88
phase0 beforeProcessEpoch - 250000 vs - 7PWei 46.600 ms/op 56.801 ms/op 0.82
altair processEpoch - mainnet_e81889 515.42 ms/op 550.21 ms/op 0.94
mainnet_e81889 - altair beforeProcessEpoch 83.461 ms/op 93.141 ms/op 0.90
mainnet_e81889 - altair processJustificationAndFinalization 20.853 us/op 24.284 us/op 0.86
mainnet_e81889 - altair processInactivityUpdates 7.4481 ms/op 8.2881 ms/op 0.90
mainnet_e81889 - altair processRewardsAndPenalties 87.765 ms/op 89.353 ms/op 0.98
mainnet_e81889 - altair processRegistryUpdates 5.4620 us/op 4.7110 us/op 1.16
mainnet_e81889 - altair processSlashings 626.00 ns/op 1.1910 us/op 0.53
mainnet_e81889 - altair processEth1DataReset 1.1440 us/op 962.00 ns/op 1.19
mainnet_e81889 - altair processEffectiveBalanceUpdates 1.6585 ms/op 2.0217 ms/op 0.82
mainnet_e81889 - altair processSlashingsReset 4.7710 us/op 5.7050 us/op 0.84
mainnet_e81889 - altair processRandaoMixesReset 8.1500 us/op 8.4520 us/op 0.96
mainnet_e81889 - altair processHistoricalRootsUpdate 1.3990 us/op 1.5780 us/op 0.89
mainnet_e81889 - altair processParticipationFlagUpdates 3.9270 us/op 4.6330 us/op 0.85
mainnet_e81889 - altair processSyncCommitteeUpdates 1.7880 us/op 1.0460 us/op 1.71
mainnet_e81889 - altair afterProcessEpoch 125.34 ms/op 139.36 ms/op 0.90
capella processEpoch - mainnet_e217614 2.5773 s/op 2.5556 s/op 1.01
mainnet_e217614 - capella beforeProcessEpoch 492.03 ms/op 556.09 ms/op 0.88
mainnet_e217614 - capella processJustificationAndFinalization 21.647 us/op 25.144 us/op 0.86
mainnet_e217614 - capella processInactivityUpdates 23.087 ms/op 23.953 ms/op 0.96
mainnet_e217614 - capella processRewardsAndPenalties 577.10 ms/op 562.92 ms/op 1.03
mainnet_e217614 - capella processRegistryUpdates 30.994 us/op 31.251 us/op 0.99
mainnet_e217614 - capella processSlashings 1.4600 us/op 868.00 ns/op 1.68
mainnet_e217614 - capella processEth1DataReset 704.00 ns/op 632.00 ns/op 1.11
mainnet_e217614 - capella processEffectiveBalanceUpdates 4.1662 ms/op 4.1302 ms/op 1.01
mainnet_e217614 - capella processSlashingsReset 5.0540 us/op 2.2780 us/op 2.22
mainnet_e217614 - capella processRandaoMixesReset 8.5760 us/op 4.7590 us/op 1.80
mainnet_e217614 - capella processHistoricalRootsUpdate 997.00 ns/op 550.00 ns/op 1.81
mainnet_e217614 - capella processParticipationFlagUpdates 3.0500 us/op 1.6810 us/op 1.81
mainnet_e217614 - capella afterProcessEpoch 315.88 ms/op 330.34 ms/op 0.96
phase0 processEpoch - mainnet_e58758 506.14 ms/op 439.98 ms/op 1.15
mainnet_e58758 - phase0 beforeProcessEpoch 152.56 ms/op 115.02 ms/op 1.33
mainnet_e58758 - phase0 processJustificationAndFinalization 19.033 us/op 16.773 us/op 1.13
mainnet_e58758 - phase0 processRewardsAndPenalties 70.548 ms/op 60.945 ms/op 1.16
mainnet_e58758 - phase0 processRegistryUpdates 11.330 us/op 13.912 us/op 0.81
mainnet_e58758 - phase0 processSlashings 474.00 ns/op 661.00 ns/op 0.72
mainnet_e58758 - phase0 processEth1DataReset 526.00 ns/op 784.00 ns/op 0.67
mainnet_e58758 - phase0 processEffectiveBalanceUpdates 1.3162 ms/op 1.0614 ms/op 1.24
mainnet_e58758 - phase0 processSlashingsReset 2.7930 us/op 3.5770 us/op 0.78
mainnet_e58758 - phase0 processRandaoMixesReset 6.6680 us/op 5.3390 us/op 1.25
mainnet_e58758 - phase0 processHistoricalRootsUpdate 462.00 ns/op 541.00 ns/op 0.85
mainnet_e58758 - phase0 processParticipationRecordUpdates 5.6200 us/op 5.6000 us/op 1.00
mainnet_e58758 - phase0 afterProcessEpoch 101.33 ms/op 112.53 ms/op 0.90
phase0 processEffectiveBalanceUpdates - 250000 normalcase 2.2850 ms/op 1.7399 ms/op 1.31
phase0 processEffectiveBalanceUpdates - 250000 worstcase 0.5 2.3026 ms/op 1.9294 ms/op 1.19
altair processInactivityUpdates - 250000 normalcase 28.557 ms/op 23.580 ms/op 1.21
altair processInactivityUpdates - 250000 worstcase 29.694 ms/op 24.315 ms/op 1.22
phase0 processRegistryUpdates - 250000 normalcase 11.054 us/op 15.586 us/op 0.71
phase0 processRegistryUpdates - 250000 badcase_full_deposits 603.77 us/op 474.60 us/op 1.27
phase0 processRegistryUpdates - 250000 worstcase 0.5 134.09 ms/op 145.64 ms/op 0.92
altair processRewardsAndPenalties - 250000 normalcase 83.111 ms/op 81.418 ms/op 1.02
altair processRewardsAndPenalties - 250000 worstcase 58.348 ms/op 73.598 ms/op 0.79
phase0 getAttestationDeltas - 250000 normalcase 10.655 ms/op 13.436 ms/op 0.79
phase0 getAttestationDeltas - 250000 worstcase 10.657 ms/op 13.577 ms/op 0.78
phase0 processSlashings - 250000 worstcase 2.4428 ms/op 2.6160 ms/op 0.93
altair processSyncCommitteeUpdates - 250000 159.69 ms/op 186.28 ms/op 0.86
BeaconState.hashTreeRoot - No change 256.00 ns/op 360.00 ns/op 0.71
BeaconState.hashTreeRoot - 1 full validator 148.64 us/op 168.29 us/op 0.88
BeaconState.hashTreeRoot - 32 full validator 1.3444 ms/op 1.9134 ms/op 0.70
BeaconState.hashTreeRoot - 512 full validator 15.753 ms/op 22.000 ms/op 0.72
BeaconState.hashTreeRoot - 1 validator.effectiveBalance 196.14 us/op 222.80 us/op 0.88
BeaconState.hashTreeRoot - 32 validator.effectiveBalance 2.4396 ms/op 3.0557 ms/op 0.80
BeaconState.hashTreeRoot - 512 validator.effectiveBalance 31.588 ms/op 38.071 ms/op 0.83
BeaconState.hashTreeRoot - 1 balances 143.80 us/op 177.43 us/op 0.81
BeaconState.hashTreeRoot - 32 balances 1.3954 ms/op 1.6978 ms/op 0.82
BeaconState.hashTreeRoot - 512 balances 12.335 ms/op 13.604 ms/op 0.91
BeaconState.hashTreeRoot - 250000 balances 230.19 ms/op 226.27 ms/op 1.02
aggregationBits - 2048 els - zipIndexesInBitList 15.942 us/op 21.656 us/op 0.74
byteArrayEquals 32 50.546 ns/op 55.158 ns/op 0.92
Buffer.compare 32 55.466 ns/op 61.685 ns/op 0.90
byteArrayEquals 1024 1.4718 us/op 1.5777 us/op 0.93
Buffer.compare 1024 70.017 ns/op 74.722 ns/op 0.94
byteArrayEquals 16384 23.350 us/op 24.475 us/op 0.95
Buffer.compare 16384 260.35 ns/op 306.44 ns/op 0.85
byteArrayEquals 123687377 175.98 ms/op 198.82 ms/op 0.89
Buffer.compare 123687377 6.6070 ms/op 10.189 ms/op 0.65
byteArrayEquals 32 - diff last byte 49.819 ns/op 63.758 ns/op 0.78
Buffer.compare 32 - diff last byte 55.944 ns/op 60.776 ns/op 0.92
byteArrayEquals 1024 - diff last byte 1.4961 us/op 1.6792 us/op 0.89
Buffer.compare 1024 - diff last byte 71.386 ns/op 80.809 ns/op 0.88
byteArrayEquals 16384 - diff last byte 23.919 us/op 27.651 us/op 0.87
Buffer.compare 16384 - diff last byte 251.26 ns/op 331.89 ns/op 0.76
byteArrayEquals 123687377 - diff last byte 174.30 ms/op 195.67 ms/op 0.89
Buffer.compare 123687377 - diff last byte 6.4112 ms/op 10.756 ms/op 0.60
byteArrayEquals 32 - random bytes 5.8640 ns/op 7.7960 ns/op 0.75
Buffer.compare 32 - random bytes 59.833 ns/op 69.628 ns/op 0.86
byteArrayEquals 1024 - random bytes 5.6810 ns/op 7.4430 ns/op 0.76
Buffer.compare 1024 - random bytes 59.139 ns/op 64.388 ns/op 0.92
byteArrayEquals 16384 - random bytes 5.7870 ns/op 7.4410 ns/op 0.78
Buffer.compare 16384 - random bytes 59.194 ns/op 67.552 ns/op 0.88
byteArrayEquals 123687377 - random bytes 8.7400 ns/op 9.7900 ns/op 0.89
Buffer.compare 123687377 - random bytes 62.060 ns/op 74.370 ns/op 0.83
regular array get 100000 times 32.919 us/op 41.622 us/op 0.79
wrappedArray get 100000 times 32.771 us/op 36.505 us/op 0.90
arrayWithProxy get 100000 times 14.829 ms/op 16.682 ms/op 0.89
ssz.Root.equals 49.467 ns/op 55.204 ns/op 0.90
byteArrayEquals 48.299 ns/op 54.459 ns/op 0.89
Buffer.compare 10.642 ns/op 12.455 ns/op 0.85
shuffle list - 16384 els 6.8821 ms/op 7.1844 ms/op 0.96
shuffle list - 250000 els 101.01 ms/op 107.38 ms/op 0.94
processSlot - 1 slots 15.012 us/op 16.436 us/op 0.91
processSlot - 32 slots 2.6535 ms/op 3.0493 ms/op 0.87
getEffectiveBalanceIncrementsZeroInactive - 250000 vs - 7PWei 59.405 ms/op 57.877 ms/op 1.03
getCommitteeAssignments - req 1 vs - 250000 vc 2.4541 ms/op 2.6816 ms/op 0.92
getCommitteeAssignments - req 100 vs - 250000 vc 3.6160 ms/op 3.8871 ms/op 0.93
getCommitteeAssignments - req 1000 vs - 250000 vc 3.9766 ms/op 4.3503 ms/op 0.91
findModifiedValidators - 10000 modified validators 553.79 ms/op 567.36 ms/op 0.98
findModifiedValidators - 1000 modified validators 437.20 ms/op 459.24 ms/op 0.95
findModifiedValidators - 100 modified validators 423.55 ms/op 454.98 ms/op 0.93
findModifiedValidators - 10 modified validators 389.28 ms/op 482.54 ms/op 0.81
findModifiedValidators - 1 modified validators 414.55 ms/op 513.02 ms/op 0.81
findModifiedValidators - no difference 373.33 ms/op 464.47 ms/op 0.80
compare ViewDUs 4.7585 s/op 4.8692 s/op 0.98
compare each validator Uint8Array 1.8757 s/op 2.1703 s/op 0.86
compare ViewDU to Uint8Array 1.1541 s/op 1.6938 s/op 0.68
migrate state 1000000 validators, 24 modified, 0 new 819.13 ms/op 1.1511 s/op 0.71
migrate state 1000000 validators, 1700 modified, 1000 new 1.1924 s/op 1.5756 s/op 0.76
migrate state 1000000 validators, 3400 modified, 2000 new 1.4329 s/op 1.6209 s/op 0.88
migrate state 1500000 validators, 24 modified, 0 new 890.34 ms/op 950.29 ms/op 0.94
migrate state 1500000 validators, 1700 modified, 1000 new 1.2914 s/op 1.5397 s/op 0.84
migrate state 1500000 validators, 3400 modified, 2000 new 1.4728 s/op 1.8725 s/op 0.79
RootCache.getBlockRootAtSlot - 250000 vs - 7PWei 5.1100 ns/op 6.1400 ns/op 0.83
state getBlockRootAtSlot - 250000 vs - 7PWei 731.83 ns/op 775.03 ns/op 0.94
computeProposers - vc 250000 9.7926 ms/op 11.644 ms/op 0.84
computeEpochShuffling - vc 250000 110.22 ms/op 119.75 ms/op 0.92
getNextSyncCommittee - vc 250000 178.12 ms/op 209.49 ms/op 0.85
computeSigningRoot for AttestationData 31.710 us/op 31.636 us/op 1.00
hash AttestationData serialized data then Buffer.toString(base64) 2.4360 us/op 2.5234 us/op 0.97
toHexString serialized data 1.2653 us/op 1.5267 us/op 0.83
Buffer.toString(base64) 249.02 ns/op 292.90 ns/op 0.85

by benchmarkbot/action

Copy link
Member

@matthewkeil matthewkeil left a comment

Choose a reason for hiding this comment

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

Not sure this is the right idea or not. Am wondering if it is better to run this as a separate workflow, on-demand, so that we do not get hit with the debug build overhead on every run. What are your thoughts?

if: ${{ failure() && steps.unit_tests.conclusion == 'failure' }}
uses: actions/upload-artifact@v2
with:
name: core-dump
Copy link
Member

Choose a reason for hiding this comment

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

will this over-write the existing if there are multiple?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

I think it is associated to the workflow run. So it will rewritten only if we re-run the workflow.

Comment on lines 203 to 205
- name: List down all files
if: ${{ failure() && steps.unit_tests.conclusion == 'failure' }}
run: ls -l
Copy link
Member

Choose a reason for hiding this comment

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

Curious!!! How does this fit into the solution? Is it to make sure we log the dump to stdout or something?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

This is for debugging purposes, to make sure. the coredump was generated with correct or may be different file names.

Comment on lines 188 to 189
- name: Replace nodejs with debug build
run: sudo cp -f node $(which node)
Copy link
Member

Choose a reason for hiding this comment

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

Curious why you chose to only replace for unit-tests

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Because we were observing the Segfault only during the unit tests.

@nazarhussain
Copy link
Contributor Author

@matthewkeil I tried triggering on-demand over 20 times and Segfault never appear even for once. So why I wanted to make it default, so it runs every-time an if we may encounter the Segfault we should get it right there.

- name: Install unzip
run: sudo apt-get install unzip
- name: Download nodejs debug build
run: curl -L "https://drive.google.com/uc?export=download&id=1hlhbbQi-NJi8_WjULvOdo-K_tfZFzN3Z&confirm=t" > nodejs.zip
Copy link
Contributor

@dapplion dapplion Nov 20, 2023

Choose a reason for hiding this comment

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

You can compress all the steps in a single multi-line inlined script, not sure if you need so much granularity at the UI level

Copy link
Contributor Author

Choose a reason for hiding this comment

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

I don't see any issue even performing granular steps. Seems more useful while looking in the logs and seeing the UI. In the end both achieve the same thing.

Copy link
Contributor

Choose a reason for hiding this comment

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

True, just an organizational detail. More verbose code and more lines in exchange for step by step reporting at the UI level. I would prefer to compact them but don't want to spend days fighting over this detail either

Copy link
Contributor Author

Choose a reason for hiding this comment

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

As I said I prefer this granular approach, otherwise we can compact a lot of workflow in single bash script files and run in single step to avoid multi step reporting on the UI.

@nazarhussain
Copy link
Contributor Author

@matthewkeil @dapplion I restructured the workflow actions. Please re-review now so we can close this PR.

Copy link
Member

@matthewkeil matthewkeil left a comment

Choose a reason for hiding this comment

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

The restructuring you did looks great!! As @dapplion mentioned the output is a bit verbose though.

I still tend to think that running with debug for all CI runs, but only on unit-tests, is not the right approach but you are determined and I can definitely get behind that aspect of this PR. I have had challenges catching this so another approach seems helpful and is appreciated.

LGTM 👍

Copy link
Member

@wemeetagain wemeetagain left a comment

Choose a reason for hiding this comment

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

We can enable this for now and assess the pain of the slowdown.
Hopefully we will capture fruitful coredumps quickly, and if not, we can timebox this approach and revert this after N months.

@nazarhussain
Copy link
Contributor Author

@matthewkeil Running only for unit tests is because we observed segfault only during the unit tests so far. And each job run in isolation so can't affect each other behavior. If we observed segfault anywhere else we can reuse the same actions.

I just want to get the coredump at least once 🦀

@nazarhussain
Copy link
Contributor Author

We can enable this for now and assess the pain of the slowdown. Hopefully we will capture fruitful coredumps quickly, and if not, we can timebox this approach and revert this after N months.

Yes I agree, if we don't observe the coredump in a week or two, we should revert it. But keeping the custom actions to reuse in future if needed. So why I restructured those actions as independent actions and not part of the workflow.

@nazarhussain nazarhussain merged commit 228d7ba into unstable Nov 24, 2023
15 checks passed
@nazarhussain nazarhussain deleted the nh/coredump-test branch November 24, 2023 13:34
@wemeetagain
Copy link
Member

🎉 This PR is included in v1.13.0 🎉

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.

4 participants