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

chore: release v1.27.0 #7439

Closed
wants to merge 10 commits into from
Closed

chore: release v1.27.0 #7439

wants to merge 10 commits into from

Conversation

wemeetagain
Copy link
Member

Motivation

nflaig and others added 10 commits February 3, 2025 10:15
…#7420)

**Motivation**

Based on observations from mainnet nodes, it seems like we reject
builder blocks in some cases either due to not being sent within cutoff
time or due to timeout on the api call but looking at the response times
these have been timely. The reason why those were rejected is either we
started the block production race too late into the slot, which is
mostly due to the fact that we take too much time to produce the common
block body or the timeout was handled by the node with a delay, both of
these cases are likely caused by event loop lag either due to GC or
processing something else.

See
[discord](https://discord.com/channels/593655374469660673/1331991458152058991/1335576180815958088)
for details.

**Description**

Increase block production timeouts to account for event loop lag
…tation (#7419)

Since ChainSafe/ssz#456 it's possible to use
`getAllReadonly()` with uncommited changes. This PR essential reverts
changes done in #7375 as it
causes more memory allocation which is not ideal.
Closes #6908, this flag is
widely used already and people are aware of the trade-offs, ie.
increased storage but works well enough for their use cases.
Eth1 data poll is not needed anymore in Pectra after all eth1 deposits
are processed.

Introduce mechanism to stop the polling.

Note in the case of Lodestar starting up in Electra, Eth1 data poll may
run for 1 epoch but no data will actually get polled and then
`PrepareNextSlotScheduler.stopEth1Polling()` will stop it.

Part of #6341

---------

Co-authored-by: Nico Flaig <[email protected]>
**Motivation**

Benchmarks show `snappy-wasm` is faster at compressing and uncompressing
than `snappyjs`.

**Description**

- Use `snappy-wasm` for compressing / uncompressing gossip payloads
- Add more `snappy` vs `snappyjs` vs `snappy-wasm` benchmarks

**TODO**
- [x] deploy this branch on our test fleet - deployed on feat3

```
  network / gossip / snappy
    compress
      ✔ 100 bytes - compress - snappyjs                                     335566.9 ops/s    2.980032 us/op        -        685 runs   2.54 s
      ✔ 100 bytes - compress - snappy                                       388610.3 ops/s    2.573272 us/op        -        870 runs   2.74 s
      ✔ 100 bytes - compress - snappy-wasm                                  583254.0 ops/s    1.714519 us/op        -        476 runs   1.32 s
      ✔ 100 bytes - compress - snappy-wasm - prealloc                        1586695 ops/s    630.2410 ns/op        -        481 runs  0.804 s
      ✔ 200 bytes - compress - snappyjs                                     298272.8 ops/s    3.352636 us/op        -        213 runs   1.22 s
      ✔ 200 bytes - compress - snappy                                       419528.0 ops/s    2.383631 us/op        -        926 runs   2.71 s
      ✔ 200 bytes - compress - snappy-wasm                                  472468.5 ops/s    2.116543 us/op        -        577 runs   1.72 s
      ✔ 200 bytes - compress - snappy-wasm - prealloc                        1430445 ops/s    699.0830 ns/op        -        868 runs   1.11 s
      ✔ 300 bytes - compress - snappyjs                                     265124.9 ops/s    3.771807 us/op        -        137 runs   1.02 s
      ✔ 300 bytes - compress - snappy                                       361683.9 ops/s    2.764845 us/op        -       1332 runs   4.18 s
      ✔ 300 bytes - compress - snappy-wasm                                  443688.4 ops/s    2.253834 us/op        -        859 runs   2.44 s
      ✔ 300 bytes - compress - snappy-wasm - prealloc                        1213825 ops/s    823.8420 ns/op        -        370 runs  0.807 s
      ✔ 400 bytes - compress - snappyjs                                     262168.5 ops/s    3.814341 us/op        -        358 runs   1.87 s
      ✔ 400 bytes - compress - snappy                                       382494.9 ops/s    2.614414 us/op        -       1562 runs   4.58 s
      ✔ 400 bytes - compress - snappy-wasm                                  406373.2 ops/s    2.460792 us/op        -        797 runs   2.46 s
      ✔ 400 bytes - compress - snappy-wasm - prealloc                        1111715 ops/s    899.5110 ns/op        -        450 runs  0.906 s
      ✔ 500 bytes - compress - snappyjs                                     229213.1 ops/s    4.362753 us/op        -        359 runs   2.07 s
      ✔ 500 bytes - compress - snappy                                       373695.8 ops/s    2.675973 us/op        -       2050 runs   5.99 s
      ✔ 500 bytes - compress - snappy-wasm                                  714917.4 ops/s    1.398763 us/op        -        960 runs   1.84 s
      ✔ 500 bytes - compress - snappy-wasm - prealloc                        1054619 ops/s    948.2100 ns/op        -        427 runs  0.907 s
      ✔ 1000 bytes - compress - snappyjs                                    148702.3 ops/s    6.724847 us/op        -        171 runs   1.65 s
      ✔ 1000 bytes - compress - snappy                                      423688.1 ops/s    2.360227 us/op        -        525 runs   1.74 s
      ✔ 1000 bytes - compress - snappy-wasm                                 524350.6 ops/s    1.907121 us/op        -        273 runs   1.03 s
      ✔ 1000 bytes - compress - snappy-wasm - prealloc                      685191.5 ops/s    1.459446 us/op        -        349 runs   1.01 s
      ✔ 10000 bytes - compress - snappyjs                                   21716.92 ops/s    46.04704 us/op        -         16 runs   1.24 s
      ✔ 10000 bytes - compress - snappy                                     98051.32 ops/s    10.19874 us/op        -        184 runs   2.39 s
      ✔ 10000 bytes - compress - snappy-wasm                                114681.8 ops/s    8.719783 us/op        -         49 runs  0.937 s
      ✔ 10000 bytes - compress - snappy-wasm - prealloc                     111203.6 ops/s    8.992518 us/op        -         49 runs  0.953 s
      ✔ 100000 bytes - compress - snappyjs                                  2947.313 ops/s    339.2921 us/op        -         12 runs   4.74 s
      ✔ 100000 bytes - compress - snappy                                    14963.78 ops/s    66.82801 us/op        -         70 runs   5.19 s
      ✔ 100000 bytes - compress - snappy-wasm                               19868.33 ops/s    50.33136 us/op        -         14 runs   1.21 s
      ✔ 100000 bytes - compress - snappy-wasm - prealloc                    24579.34 ops/s    40.68457 us/op        -         13 runs   1.06 s
    uncompress
      ✔ 100 bytes - uncompress - snappyjs                                   589201.6 ops/s    1.697212 us/op        -        242 runs  0.911 s
      ✔ 100 bytes - uncompress - snappy                                     537424.1 ops/s    1.860728 us/op        -        220 runs  0.910 s
      ✔ 100 bytes - uncompress - snappy-wasm                                634966.2 ops/s    1.574887 us/op        -        194 runs  0.808 s
      ✔ 100 bytes - uncompress - snappy-wasm - prealloc                      1846964 ops/s    541.4290 ns/op        -        559 runs  0.804 s
      ✔ 200 bytes - uncompress - snappyjs                                   395141.8 ops/s    2.530737 us/op        -        281 runs   1.22 s
      ✔ 200 bytes - uncompress - snappy                                     536862.6 ops/s    1.862674 us/op        -        274 runs   1.01 s
      ✔ 200 bytes - uncompress - snappy-wasm                                420251.6 ops/s    2.379527 us/op        -        129 runs  0.810 s
      ✔ 200 bytes - uncompress - snappy-wasm - prealloc                      1746167 ops/s    572.6830 ns/op        -        529 runs  0.804 s
      ✔ 300 bytes - uncompress - snappyjs                                   441676.2 ops/s    2.264102 us/op        -        898 runs   2.53 s
      ✔ 300 bytes - uncompress - snappy                                     551313.2 ops/s    1.813851 us/op        -        336 runs   1.11 s
      ✔ 300 bytes - uncompress - snappy-wasm                                494773.0 ops/s    2.021129 us/op        -        203 runs  0.912 s
      ✔ 300 bytes - uncompress - snappy-wasm - prealloc                      1528680 ops/s    654.1590 ns/op        -        465 runs  0.805 s
      ✔ 400 bytes - uncompress - snappyjs                                   383746.1 ops/s    2.605890 us/op        -        235 runs   1.11 s
      ✔ 400 bytes - uncompress - snappy                                     515986.6 ops/s    1.938035 us/op        -        158 runs  0.809 s
      ✔ 400 bytes - uncompress - snappy-wasm                                392947.8 ops/s    2.544867 us/op        -        322 runs   1.32 s
      ✔ 400 bytes - uncompress - snappy-wasm - prealloc                      1425978 ops/s    701.2730 ns/op        -        721 runs   1.01 s
      ✔ 500 bytes - uncompress - snappyjs                                   330727.5 ops/s    3.023637 us/op        -        173 runs   1.02 s
      ✔ 500 bytes - uncompress - snappy                                     513874.1 ops/s    1.946002 us/op        -        157 runs  0.806 s
      ✔ 500 bytes - uncompress - snappy-wasm                                389263.0 ops/s    2.568957 us/op        -        161 runs  0.914 s
      ✔ 500 bytes - uncompress - snappy-wasm - prealloc                      1330936 ops/s    751.3510 ns/op        -        672 runs   1.01 s
      ✔ 1000 bytes - uncompress - snappyjs                                  241393.9 ops/s    4.142606 us/op        -        126 runs   1.03 s
      ✔ 1000 bytes - uncompress - snappy                                    491119.6 ops/s    2.036164 us/op        -        201 runs  0.911 s
      ✔ 1000 bytes - uncompress - snappy-wasm                               361794.5 ops/s    2.764000 us/op        -        148 runs  0.910 s
      ✔ 1000 bytes - uncompress - snappy-wasm - prealloc                    959026.5 ops/s    1.042724 us/op        -        390 runs  0.909 s
      ✔ 10000 bytes - uncompress - snappyjs                                 40519.03 ops/s    24.67976 us/op        -         16 runs  0.913 s
      ✔ 10000 bytes - uncompress - snappy                                   202537.6 ops/s    4.937355 us/op        -        796 runs   4.43 s
      ✔ 10000 bytes - uncompress - snappy-wasm                              165017.6 ops/s    6.059960 us/op        -         52 runs  0.822 s
      ✔ 10000 bytes - uncompress - snappy-wasm - prealloc                   175061.5 ops/s    5.712277 us/op        -        130 runs   1.25 s
      ✔ 100000 bytes - uncompress - snappyjs                                4030.391 ops/s    248.1149 us/op        -         12 runs   3.71 s
      ✔ 100000 bytes - uncompress - snappy                                  35459.43 ops/s    28.20124 us/op        -         41 runs   1.67 s
      ✔ 100000 bytes - uncompress - snappy-wasm                             22449.16 ops/s    44.54509 us/op        -         13 runs   1.11 s
      ✔ 100000 bytes - uncompress - snappy-wasm - prealloc                  27169.50 ops/s    36.80598 us/op        -         13 runs  0.997 s
```

Closes #4170

---------

Co-authored-by: Nico Flaig <[email protected]>
- repeat of #7204 because we reverted it
- See the review in #6483

Co-authored-by: Matthew Keil <[email protected]>
**Motivation**

- #6869

**Description**
- add `MIN_EPOCHS_FOR_BLOCK_REQUESTS` config (PS we're missing a lot of
the network config entries from the consensus specs)
- add `--chain.pruneHistory` flag, default to false
- when chain.pruneHistory is true
- prune all historical blocks/states on startup and then on every
subsequent finalization

---------

Co-authored-by: Nico Flaig <[email protected]>
@wemeetagain wemeetagain requested a review from a team as a code owner February 7, 2025 19:52
@wemeetagain wemeetagain marked this pull request as draft February 7, 2025 19:52
Copy link

codecov bot commented Feb 7, 2025

Codecov Report

Attention: Patch coverage is 50.94340% with 26 lines in your changes missing coverage. Please review.

Project coverage is 50.25%. Comparing base (54229fd) to head (98a2766).

Additional details and impacted files
@@            Coverage Diff             @@
##           stable    #7439      +/-   ##
==========================================
- Coverage   50.26%   50.25%   -0.01%     
==========================================
  Files         602      602              
  Lines       40376    40403      +27     
  Branches     2205     2204       -1     
==========================================
+ Hits        20294    20306      +12     
- Misses      20042    20057      +15     
  Partials       40       40              

Copy link
Contributor

github-actions bot commented Feb 7, 2025

Performance Report

✔️ no performance regression detected

Full benchmark results
Benchmark suite Current: 2822699 Previous: null Ratio
getPubkeys - index2pubkey - req 1000 vs - 250000 vc 966.26 us/op
getPubkeys - validatorsArr - req 1000 vs - 250000 vc 35.259 us/op
BLS verify - blst 1.2789 ms/op
BLS verifyMultipleSignatures 3 - blst 1.3724 ms/op
BLS verifyMultipleSignatures 8 - blst 2.4180 ms/op
BLS verifyMultipleSignatures 32 - blst 6.2646 ms/op
BLS verifyMultipleSignatures 64 - blst 10.632 ms/op
BLS verifyMultipleSignatures 128 - blst 17.041 ms/op
BLS deserializing 10000 signatures 694.04 ms/op
BLS deserializing 100000 signatures 7.1037 s/op
BLS verifyMultipleSignatures - same message - 3 - blst 1.1650 ms/op
BLS verifyMultipleSignatures - same message - 8 - blst 1.2931 ms/op
BLS verifyMultipleSignatures - same message - 32 - blst 1.7733 ms/op
BLS verifyMultipleSignatures - same message - 64 - blst 2.8270 ms/op
BLS verifyMultipleSignatures - same message - 128 - blst 4.5480 ms/op
BLS aggregatePubkeys 32 - blst 21.692 us/op
BLS aggregatePubkeys 128 - blst 73.459 us/op
notSeenSlots=1 numMissedVotes=1 numBadVotes=10 57.795 ms/op
notSeenSlots=1 numMissedVotes=0 numBadVotes=4 61.213 ms/op
notSeenSlots=2 numMissedVotes=1 numBadVotes=10 52.537 ms/op
getSlashingsAndExits - default max 137.04 us/op
getSlashingsAndExits - 2k 335.46 us/op
proposeBlockBody type=full, size=empty 4.9067 ms/op
isKnown best case - 1 super set check 219.00 ns/op
isKnown normal case - 2 super set checks 220.00 ns/op
isKnown worse case - 16 super set checks 214.00 ns/op
InMemoryCheckpointStateCache - add get delete 2.6720 us/op
validate api signedAggregateAndProof - struct 2.7209 ms/op
validate gossip signedAggregateAndProof - struct 1.6440 ms/op
batch validate gossip attestation - vc 640000 - chunk 32 129.38 us/op
batch validate gossip attestation - vc 640000 - chunk 64 108.00 us/op
batch validate gossip attestation - vc 640000 - chunk 128 100.90 us/op
batch validate gossip attestation - vc 640000 - chunk 256 102.39 us/op
pickEth1Vote - no votes 963.62 us/op
pickEth1Vote - max votes 5.5769 ms/op
pickEth1Vote - Eth1Data hashTreeRoot value x2048 11.719 ms/op
pickEth1Vote - Eth1Data hashTreeRoot tree x2048 17.227 ms/op
pickEth1Vote - Eth1Data fastSerialize value x2048 449.98 us/op
pickEth1Vote - Eth1Data fastSerialize tree x2048 2.2635 ms/op
bytes32 toHexString 371.00 ns/op
bytes32 Buffer.toString(hex) 239.00 ns/op
bytes32 Buffer.toString(hex) from Uint8Array 324.00 ns/op
bytes32 Buffer.toString(hex) + 0x 241.00 ns/op
Object access 1 prop 0.12100 ns/op
Map access 1 prop 0.12700 ns/op
Object get x1000 6.2970 ns/op
Map get x1000 6.2240 ns/op
Object set x1000 30.432 ns/op
Map set x1000 20.540 ns/op
Return object 10000 times 0.28970 ns/op
Throw Error 10000 times 4.4241 us/op
toHex 134.53 ns/op
Buffer.from 124.87 ns/op
shared Buffer 80.540 ns/op
fastMsgIdFn sha256 / 200 bytes 2.1940 us/op
fastMsgIdFn h32 xxhash / 200 bytes 232.00 ns/op
fastMsgIdFn h64 xxhash / 200 bytes 265.00 ns/op
fastMsgIdFn sha256 / 1000 bytes 7.2110 us/op
fastMsgIdFn h32 xxhash / 1000 bytes 339.00 ns/op
fastMsgIdFn h64 xxhash / 1000 bytes 338.00 ns/op
fastMsgIdFn sha256 / 10000 bytes 64.040 us/op
fastMsgIdFn h32 xxhash / 10000 bytes 1.8360 us/op
fastMsgIdFn h64 xxhash / 10000 bytes 1.2290 us/op
100 bytes - compress - snappyjs 1.2173 us/op
100 bytes - compress - snappy 1.0825 us/op
100 bytes - compress - snappy-wasm 617.83 ns/op
100 bytes - compress - snappy-wasm - prealloc 395.87 ns/op
200 bytes - compress - snappyjs 1.6933 us/op
200 bytes - compress - snappy 1.1354 us/op
200 bytes - compress - snappy-wasm 926.19 ns/op
200 bytes - compress - snappy-wasm - prealloc 429.45 ns/op
300 bytes - compress - snappyjs 2.4997 us/op
300 bytes - compress - snappy 1.1785 us/op
300 bytes - compress - snappy-wasm 1.4139 us/op
300 bytes - compress - snappy-wasm - prealloc 530.91 ns/op
400 bytes - compress - snappyjs 2.8348 us/op
400 bytes - compress - snappy 1.2430 us/op
400 bytes - compress - snappy-wasm 1.2445 us/op
400 bytes - compress - snappy-wasm - prealloc 628.13 ns/op
500 bytes - compress - snappyjs 3.2921 us/op
500 bytes - compress - snappy 1.3208 us/op
500 bytes - compress - snappy-wasm 1.7438 us/op
500 bytes - compress - snappy-wasm - prealloc 623.74 ns/op
1000 bytes - compress - snappyjs 4.2982 us/op
1000 bytes - compress - snappy 1.4497 us/op
1000 bytes - compress - snappy-wasm 2.0409 us/op
1000 bytes - compress - snappy-wasm - prealloc 882.07 ns/op
10000 bytes - compress - snappyjs 28.974 us/op
10000 bytes - compress - snappy 28.651 us/op
10000 bytes - compress - snappy-wasm 6.8073 us/op
10000 bytes - compress - snappy-wasm - prealloc 6.5462 us/op
100 bytes - uncompress - snappyjs 761.32 ns/op
100 bytes - uncompress - snappy 993.43 ns/op
100 bytes - uncompress - snappy-wasm 562.48 ns/op
100 bytes - uncompress - snappy-wasm - prealloc 320.63 ns/op
200 bytes - uncompress - snappyjs 1.1876 us/op
200 bytes - uncompress - snappy 1.0425 us/op
200 bytes - uncompress - snappy-wasm 992.76 ns/op
200 bytes - uncompress - snappy-wasm - prealloc 318.38 ns/op
300 bytes - uncompress - snappyjs 1.5488 us/op
300 bytes - uncompress - snappy 1.0539 us/op
300 bytes - uncompress - snappy-wasm 1.1265 us/op
300 bytes - uncompress - snappy-wasm - prealloc 360.76 ns/op
400 bytes - uncompress - snappyjs 1.5714 us/op
400 bytes - uncompress - snappy 1.1474 us/op
400 bytes - uncompress - snappy-wasm 1.4225 us/op
400 bytes - uncompress - snappy-wasm - prealloc 427.08 ns/op
500 bytes - uncompress - snappyjs 1.5622 us/op
500 bytes - uncompress - snappy 1.1528 us/op
500 bytes - uncompress - snappy-wasm 1.5032 us/op
500 bytes - uncompress - snappy-wasm - prealloc 452.11 ns/op
1000 bytes - uncompress - snappyjs 2.4210 us/op
1000 bytes - uncompress - snappy 1.4818 us/op
1000 bytes - uncompress - snappy-wasm 1.6830 us/op
1000 bytes - uncompress - snappy-wasm - prealloc 743.13 ns/op
10000 bytes - uncompress - snappyjs 13.737 us/op
10000 bytes - uncompress - snappy 34.181 us/op
10000 bytes - uncompress - snappy-wasm 4.7187 us/op
10000 bytes - uncompress - snappy-wasm - prealloc 4.0693 us/op
send data - 1000 256B messages 10.908 ms/op
send data - 1000 512B messages 17.275 ms/op
send data - 1000 1024B messages 25.626 ms/op
send data - 1000 1200B messages 21.172 ms/op
send data - 1000 2048B messages 22.424 ms/op
send data - 1000 4096B messages 27.050 ms/op
send data - 1000 16384B messages 67.719 ms/op
send data - 1000 65536B messages 187.29 ms/op
enrSubnets - fastDeserialize 64 bits 843.00 ns/op
enrSubnets - ssz BitVector 64 bits 322.00 ns/op
enrSubnets - fastDeserialize 4 bits 133.00 ns/op
enrSubnets - ssz BitVector 4 bits 312.00 ns/op
prioritizePeers score -10:0 att 32-0.1 sync 2-0 115.49 us/op
prioritizePeers score 0:0 att 32-0.25 sync 2-0.25 132.40 us/op
prioritizePeers score 0:0 att 32-0.5 sync 2-0.5 191.03 us/op
prioritizePeers score 0:0 att 64-0.75 sync 4-0.75 359.44 us/op
prioritizePeers score 0:0 att 64-1 sync 4-1 435.02 us/op
array of 16000 items push then shift 1.5532 us/op
LinkedList of 16000 items push then shift 6.6970 ns/op
array of 16000 items push then pop 72.617 ns/op
LinkedList of 16000 items push then pop 6.6240 ns/op
array of 24000 items push then shift 2.2979 us/op
LinkedList of 24000 items push then shift 6.7240 ns/op
array of 24000 items push then pop 97.446 ns/op
LinkedList of 24000 items push then pop 6.5930 ns/op
intersect bitArray bitLen 8 6.1260 ns/op
intersect array and set length 8 36.268 ns/op
intersect bitArray bitLen 128 28.497 ns/op
intersect array and set length 128 595.72 ns/op
bitArray.getTrueBitIndexes() bitLen 128 964.00 ns/op
bitArray.getTrueBitIndexes() bitLen 248 1.7040 us/op
bitArray.getTrueBitIndexes() bitLen 512 3.5110 us/op
Buffer.concat 32 items 583.00 ns/op
Uint8Array.set 32 items 1.1670 us/op
Buffer.copy 2.2220 us/op
Uint8Array.set - with subarray 2.0530 us/op
Uint8Array.set - without subarray 1.4060 us/op
getUint32 - dataview 202.00 ns/op
getUint32 - manual 128.00 ns/op
Set add up to 64 items then delete first 2.1170 us/op
OrderedSet add up to 64 items then delete first 3.1350 us/op
Set add up to 64 items then delete last 2.4341 us/op
OrderedSet add up to 64 items then delete last 3.4960 us/op
Set add up to 64 items then delete middle 2.3166 us/op
OrderedSet add up to 64 items then delete middle 5.0130 us/op
Set add up to 128 items then delete first 4.9092 us/op
OrderedSet add up to 128 items then delete first 7.6317 us/op
Set add up to 128 items then delete last 4.7758 us/op
OrderedSet add up to 128 items then delete last 7.1860 us/op
Set add up to 128 items then delete middle 4.8143 us/op
OrderedSet add up to 128 items then delete middle 13.942 us/op
Set add up to 256 items then delete first 10.182 us/op
OrderedSet add up to 256 items then delete first 15.860 us/op
Set add up to 256 items then delete last 9.5444 us/op
OrderedSet add up to 256 items then delete last 14.396 us/op
Set add up to 256 items then delete middle 9.4944 us/op
OrderedSet add up to 256 items then delete middle 40.858 us/op
transfer serialized Status (84 B) 2.9460 us/op
copy serialized Status (84 B) 1.3960 us/op
transfer serialized SignedVoluntaryExit (112 B) 2.6050 us/op
copy serialized SignedVoluntaryExit (112 B) 1.4000 us/op
transfer serialized ProposerSlashing (416 B) 2.7630 us/op
copy serialized ProposerSlashing (416 B) 2.1760 us/op
transfer serialized Attestation (485 B) 2.7960 us/op
copy serialized Attestation (485 B) 1.6730 us/op
transfer serialized AttesterSlashing (33232 B) 2.9380 us/op
copy serialized AttesterSlashing (33232 B) 4.1880 us/op
transfer serialized Small SignedBeaconBlock (128000 B) 3.1370 us/op
copy serialized Small SignedBeaconBlock (128000 B) 9.0930 us/op
transfer serialized Avg SignedBeaconBlock (200000 B) 3.5760 us/op
copy serialized Avg SignedBeaconBlock (200000 B) 12.969 us/op
transfer serialized BlobsSidecar (524380 B) 3.6010 us/op
copy serialized BlobsSidecar (524380 B) 70.658 us/op
transfer serialized Big SignedBeaconBlock (1000000 B) 3.9200 us/op
copy serialized Big SignedBeaconBlock (1000000 B) 109.77 us/op
pass gossip attestations to forkchoice per slot 2.7224 ms/op
forkChoice updateHead vc 100000 bc 64 eq 0 448.69 us/op
forkChoice updateHead vc 600000 bc 64 eq 0 2.8552 ms/op
forkChoice updateHead vc 1000000 bc 64 eq 0 4.7385 ms/op
forkChoice updateHead vc 600000 bc 320 eq 0 2.7656 ms/op
forkChoice updateHead vc 600000 bc 1200 eq 0 2.8074 ms/op
forkChoice updateHead vc 600000 bc 7200 eq 0 3.0819 ms/op
forkChoice updateHead vc 600000 bc 64 eq 1000 10.267 ms/op
forkChoice updateHead vc 600000 bc 64 eq 10000 10.210 ms/op
forkChoice updateHead vc 600000 bc 64 eq 300000 14.542 ms/op
computeDeltas 500000 validators 300 proto nodes 3.7817 ms/op
computeDeltas 500000 validators 1200 proto nodes 3.7514 ms/op
computeDeltas 500000 validators 7200 proto nodes 3.7826 ms/op
computeDeltas 750000 validators 300 proto nodes 5.6811 ms/op
computeDeltas 750000 validators 1200 proto nodes 5.7052 ms/op
computeDeltas 750000 validators 7200 proto nodes 5.6607 ms/op
computeDeltas 1400000 validators 300 proto nodes 10.680 ms/op
computeDeltas 1400000 validators 1200 proto nodes 10.682 ms/op
computeDeltas 1400000 validators 7200 proto nodes 10.589 ms/op
computeDeltas 2100000 validators 300 proto nodes 16.055 ms/op
computeDeltas 2100000 validators 1200 proto nodes 16.005 ms/op
computeDeltas 2100000 validators 7200 proto nodes 16.056 ms/op
altair processAttestation - 250000 vs - 7PWei normalcase 2.0141 ms/op
altair processAttestation - 250000 vs - 7PWei worstcase 3.0395 ms/op
altair processAttestation - setStatus - 1/6 committees join 121.13 us/op
altair processAttestation - setStatus - 1/3 committees join 237.89 us/op
altair processAttestation - setStatus - 1/2 committees join 329.14 us/op
altair processAttestation - setStatus - 2/3 committees join 427.41 us/op
altair processAttestation - setStatus - 4/5 committees join 584.02 us/op
altair processAttestation - setStatus - 100% committees join 697.28 us/op
altair processBlock - 250000 vs - 7PWei normalcase 4.1728 ms/op
altair processBlock - 250000 vs - 7PWei normalcase hashState 44.437 ms/op
altair processBlock - 250000 vs - 7PWei worstcase 46.216 ms/op
altair processBlock - 250000 vs - 7PWei worstcase hashState 111.29 ms/op
phase0 processBlock - 250000 vs - 7PWei normalcase 1.9316 ms/op
phase0 processBlock - 250000 vs - 7PWei worstcase 27.722 ms/op
altair processEth1Data - 250000 vs - 7PWei normalcase 342.69 us/op
getExpectedWithdrawals 250000 eb:1,eth1:1,we:0,wn:0,smpl:15 7.1170 us/op
getExpectedWithdrawals 250000 eb:0.95,eth1:0.1,we:0.05,wn:0,smpl:219 41.376 us/op
getExpectedWithdrawals 250000 eb:0.95,eth1:0.3,we:0.05,wn:0,smpl:42 7.2340 us/op
getExpectedWithdrawals 250000 eb:0.95,eth1:0.7,we:0.05,wn:0,smpl:18 7.5860 us/op
getExpectedWithdrawals 250000 eb:0.1,eth1:0.1,we:0,wn:0,smpl:1020 112.54 us/op
getExpectedWithdrawals 250000 eb:0.03,eth1:0.03,we:0,wn:0,smpl:11777 993.92 us/op
getExpectedWithdrawals 250000 eb:0.01,eth1:0.01,we:0,wn:0,smpl:16384 1.6314 ms/op
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,smpl:16384 1.4821 ms/op
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,nocache,smpl:16384 3.4158 ms/op
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,smpl:16384 2.1325 ms/op
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,nocache,smpl:16384 3.5095 ms/op
Tree 40 250000 create 435.58 ms/op
Tree 40 250000 get(125000) 143.31 ns/op
Tree 40 250000 set(125000) 1.4798 us/op
Tree 40 250000 toArray() 20.149 ms/op
Tree 40 250000 iterate all - toArray() + loop 20.211 ms/op
Tree 40 250000 iterate all - get(i) 51.560 ms/op
Array 250000 create 2.3611 ms/op
Array 250000 clone - spread 820.72 us/op
Array 250000 get(125000) 0.46000 ns/op
Array 250000 set(125000) 0.42700 ns/op
Array 250000 iterate all - loop 82.678 us/op
phase0 afterProcessEpoch - 250000 vs - 7PWei 49.921 ms/op
Array.fill - length 1000000 5.9339 ms/op
Array push - length 1000000 19.362 ms/op
Array.get 0.27846 ns/op
Uint8Array.get 0.44236 ns/op
phase0 beforeProcessEpoch - 250000 vs - 7PWei 18.974 ms/op
altair processEpoch - mainnet_e81889 311.90 ms/op
mainnet_e81889 - altair beforeProcessEpoch 19.246 ms/op
mainnet_e81889 - altair processJustificationAndFinalization 6.6140 us/op
mainnet_e81889 - altair processInactivityUpdates 5.5661 ms/op
mainnet_e81889 - altair processRewardsAndPenalties 45.671 ms/op
mainnet_e81889 - altair processRegistryUpdates 845.00 ns/op
mainnet_e81889 - altair processSlashings 199.00 ns/op
mainnet_e81889 - altair processEth1DataReset 179.00 ns/op
mainnet_e81889 - altair processEffectiveBalanceUpdates 1.2629 ms/op
mainnet_e81889 - altair processSlashingsReset 1.1200 us/op
mainnet_e81889 - altair processRandaoMixesReset 1.3070 us/op
mainnet_e81889 - altair processHistoricalRootsUpdate 182.00 ns/op
mainnet_e81889 - altair processParticipationFlagUpdates 540.00 ns/op
mainnet_e81889 - altair processSyncCommitteeUpdates 142.00 ns/op
mainnet_e81889 - altair afterProcessEpoch 51.767 ms/op
capella processEpoch - mainnet_e217614 1.0694 s/op
mainnet_e217614 - capella beforeProcessEpoch 70.988 ms/op
mainnet_e217614 - capella processJustificationAndFinalization 5.8480 us/op
mainnet_e217614 - capella processInactivityUpdates 16.526 ms/op
mainnet_e217614 - capella processRewardsAndPenalties 200.68 ms/op
mainnet_e217614 - capella processRegistryUpdates 6.4880 us/op
mainnet_e217614 - capella processSlashings 172.00 ns/op
mainnet_e217614 - capella processEth1DataReset 168.00 ns/op
mainnet_e217614 - capella processEffectiveBalanceUpdates 10.164 ms/op
mainnet_e217614 - capella processSlashingsReset 1.0950 us/op
mainnet_e217614 - capella processRandaoMixesReset 1.3410 us/op
mainnet_e217614 - capella processHistoricalRootsUpdate 176.00 ns/op
mainnet_e217614 - capella processParticipationFlagUpdates 554.00 ns/op
mainnet_e217614 - capella afterProcessEpoch 123.09 ms/op
phase0 processEpoch - mainnet_e58758 309.14 ms/op
mainnet_e58758 - phase0 beforeProcessEpoch 84.959 ms/op
mainnet_e58758 - phase0 processJustificationAndFinalization 5.6170 us/op
mainnet_e58758 - phase0 processRewardsAndPenalties 40.260 ms/op
mainnet_e58758 - phase0 processRegistryUpdates 3.1240 us/op
mainnet_e58758 - phase0 processSlashings 177.00 ns/op
mainnet_e58758 - phase0 processEth1DataReset 170.00 ns/op
mainnet_e58758 - phase0 processEffectiveBalanceUpdates 1.0321 ms/op
mainnet_e58758 - phase0 processSlashingsReset 1.0220 us/op
mainnet_e58758 - phase0 processRandaoMixesReset 1.2170 us/op
mainnet_e58758 - phase0 processHistoricalRootsUpdate 174.00 ns/op
mainnet_e58758 - phase0 processParticipationRecordUpdates 956.00 ns/op
mainnet_e58758 - phase0 afterProcessEpoch 45.286 ms/op
phase0 processEffectiveBalanceUpdates - 250000 normalcase 1.3645 ms/op
phase0 processEffectiveBalanceUpdates - 250000 worstcase 0.5 2.1098 ms/op
altair processInactivityUpdates - 250000 normalcase 19.167 ms/op
altair processInactivityUpdates - 250000 worstcase 16.860 ms/op
phase0 processRegistryUpdates - 250000 normalcase 6.6650 us/op
phase0 processRegistryUpdates - 250000 badcase_full_deposits 316.45 us/op
phase0 processRegistryUpdates - 250000 worstcase 0.5 106.81 ms/op
altair processRewardsAndPenalties - 250000 normalcase 52.658 ms/op
altair processRewardsAndPenalties - 250000 worstcase 44.865 ms/op
phase0 getAttestationDeltas - 250000 normalcase 7.4636 ms/op
phase0 getAttestationDeltas - 250000 worstcase 6.2654 ms/op
phase0 processSlashings - 250000 worstcase 107.03 us/op
altair processSyncCommitteeUpdates - 250000 132.75 ms/op
BeaconState.hashTreeRoot - No change 296.00 ns/op
BeaconState.hashTreeRoot - 1 full validator 84.835 us/op
BeaconState.hashTreeRoot - 32 full validator 929.59 us/op
BeaconState.hashTreeRoot - 512 full validator 11.740 ms/op
BeaconState.hashTreeRoot - 1 validator.effectiveBalance 94.694 us/op
BeaconState.hashTreeRoot - 32 validator.effectiveBalance 1.8169 ms/op
BeaconState.hashTreeRoot - 512 validator.effectiveBalance 21.025 ms/op
BeaconState.hashTreeRoot - 1 balances 90.937 us/op
BeaconState.hashTreeRoot - 32 balances 760.56 us/op
BeaconState.hashTreeRoot - 512 balances 8.6436 ms/op
BeaconState.hashTreeRoot - 250000 balances 180.48 ms/op
aggregationBits - 2048 els - zipIndexesInBitList 22.477 us/op
byteArrayEquals 32 54.064 ns/op
Buffer.compare 32 17.291 ns/op
byteArrayEquals 1024 1.6073 us/op
Buffer.compare 1024 27.383 ns/op
byteArrayEquals 16384 25.534 us/op
Buffer.compare 16384 180.68 ns/op
byteArrayEquals 123687377 196.21 ms/op
Buffer.compare 123687377 8.1282 ms/op
byteArrayEquals 32 - diff last byte 53.044 ns/op
Buffer.compare 32 - diff last byte 17.319 ns/op
byteArrayEquals 1024 - diff last byte 1.6052 us/op
Buffer.compare 1024 - diff last byte 26.243 ns/op
byteArrayEquals 16384 - diff last byte 25.636 us/op
Buffer.compare 16384 - diff last byte 180.05 ns/op
byteArrayEquals 123687377 - diff last byte 195.76 ms/op
Buffer.compare 123687377 - diff last byte 6.5555 ms/op
byteArrayEquals 32 - random bytes 5.1660 ns/op
Buffer.compare 32 - random bytes 17.336 ns/op
byteArrayEquals 1024 - random bytes 5.1730 ns/op
Buffer.compare 1024 - random bytes 17.345 ns/op
byteArrayEquals 16384 - random bytes 5.1790 ns/op
Buffer.compare 16384 - random bytes 17.352 ns/op
byteArrayEquals 123687377 - random bytes 6.2500 ns/op
Buffer.compare 123687377 - random bytes 18.410 ns/op
regular array get 100000 times 41.563 us/op
wrappedArray get 100000 times 32.880 us/op
arrayWithProxy get 100000 times 13.724 ms/op
ssz.Root.equals 46.524 ns/op
byteArrayEquals 45.548 ns/op
Buffer.compare 10.350 ns/op
processSlot - 1 slots 10.433 us/op
processSlot - 32 slots 3.2416 ms/op
getEffectiveBalanceIncrementsZeroInactive - 250000 vs - 7PWei 64.145 ms/op
getCommitteeAssignments - req 1 vs - 250000 vc 2.0670 ms/op
getCommitteeAssignments - req 100 vs - 250000 vc 3.9974 ms/op
getCommitteeAssignments - req 1000 vs - 250000 vc 4.2695 ms/op
findModifiedValidators - 10000 modified validators 738.05 ms/op
findModifiedValidators - 1000 modified validators 749.82 ms/op
findModifiedValidators - 100 modified validators 225.80 ms/op
findModifiedValidators - 10 modified validators 147.51 ms/op
findModifiedValidators - 1 modified validators 136.83 ms/op
findModifiedValidators - no difference 200.22 ms/op
compare ViewDUs 6.4174 s/op
compare each validator Uint8Array 1.7546 s/op
compare ViewDU to Uint8Array 927.85 ms/op
migrate state 1000000 validators, 24 modified, 0 new 903.21 ms/op
migrate state 1000000 validators, 1700 modified, 1000 new 1.2143 s/op
migrate state 1000000 validators, 3400 modified, 2000 new 1.4518 s/op
migrate state 1500000 validators, 24 modified, 0 new 985.20 ms/op
migrate state 1500000 validators, 1700 modified, 1000 new 1.2365 s/op
migrate state 1500000 validators, 3400 modified, 2000 new 1.4427 s/op
RootCache.getBlockRootAtSlot - 250000 vs - 7PWei 4.1700 ns/op
state getBlockRootAtSlot - 250000 vs - 7PWei 930.97 ns/op
computeProposers - vc 250000 7.4861 ms/op
computeEpochShuffling - vc 250000 41.857 ms/op
getNextSyncCommittee - vc 250000 147.13 ms/op
computeSigningRoot for AttestationData 26.266 us/op
hash AttestationData serialized data then Buffer.toString(base64) 1.5280 us/op
toHexString serialized data 797.56 ns/op
Buffer.toString(base64) 161.99 ns/op
nodejs block root to RootHex using toHex 141.94 ns/op
nodejs block root to RootHex using toRootHex 85.076 ns/op
browser block root to RootHex using the deprecated toHexString 211.65 ns/op
browser block root to RootHex using toHex 171.28 ns/op
browser block root to RootHex using toRootHex 159.47 ns/op

by benchmarkbot/action

@philknows philknows closed this Feb 12, 2025
@philknows philknows deleted the rc/v1.27.0 branch February 12, 2025 21:27
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