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

Reduce max old space size to 4096 #3516

Merged
merged 1 commit into from
Dec 15, 2021
Merged

Reduce max old space size to 4096 #3516

merged 1 commit into from
Dec 15, 2021

Conversation

dapplion
Copy link
Contributor

@dapplion dapplion commented Dec 13, 2021

Motivation

There's a 1.5GB difference between total process memory and the heap used old-space-size. Current old-space-size value of 6000 causes machines with 8GB of ram to never OOM but stall.

Part of #3515

Description

Reduce max old space size to 4096.

  • Testing shows that old space size oscillates between 1.5GB and 2GB. A 4GB wide safety margin
  • Machines with 8GB will OOM when there's memory issues

Screenshot from 2021-12-13 17-59-25

@codeclimate
Copy link

codeclimate bot commented Dec 13, 2021

Code Climate has analyzed commit ac494cb and detected 0 issues on this pull request.

View more on Code Climate.

@codecov
Copy link

codecov bot commented Dec 13, 2021

Codecov Report

Merging #3516 (ac494cb) into master (78b23bc) will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##           master    #3516   +/-   ##
=======================================
  Coverage   37.90%   37.90%           
=======================================
  Files         308      308           
  Lines        8129     8129           
  Branches     1248     1248           
=======================================
  Hits         3081     3081           
  Misses       4900     4900           
  Partials      148      148           

@github-actions
Copy link
Contributor

Performance Report

✔️ no performance regression detected

Full benchmark results
Benchmark suite Current: ee643f1 Previous: 78b23bc Ratio
BeaconState.hashTreeRoot - No change 580.00 ns/op 772.00 ns/op 0.75
BeaconState.hashTreeRoot - 1 full validator 84.683 us/op 100.05 us/op 0.85
BeaconState.hashTreeRoot - 32 full validator 1.0641 ms/op 1.3217 ms/op 0.81
BeaconState.hashTreeRoot - 512 full validator 15.425 ms/op 15.814 ms/op 0.98
BeaconState.hashTreeRoot - 1 validator.effectiveBalance 75.953 us/op 90.577 us/op 0.84
BeaconState.hashTreeRoot - 32 validator.effectiveBalance 1.3063 ms/op 1.5115 ms/op 0.86
BeaconState.hashTreeRoot - 512 validator.effectiveBalance 17.989 ms/op 19.229 ms/op 0.94
BeaconState.hashTreeRoot - 1 balances 54.339 us/op 66.031 us/op 0.82
BeaconState.hashTreeRoot - 32 balances 475.59 us/op 556.66 us/op 0.85
BeaconState.hashTreeRoot - 512 balances 4.4786 ms/op 5.3087 ms/op 0.84
BeaconState.hashTreeRoot - 250000 balances 88.342 ms/op 102.04 ms/op 0.87
processSlot - 1 slots 39.012 us/op 41.149 us/op 0.95
processSlot - 32 slots 2.0817 ms/op 2.3730 ms/op 0.88
getCommitteeAssignments - req 1 vs - 250000 vc 5.2840 ms/op 6.3270 ms/op 0.84
getCommitteeAssignments - req 100 vs - 250000 vc 7.3427 ms/op 8.9598 ms/op 0.82
getCommitteeAssignments - req 1000 vs - 250000 vc 7.8861 ms/op 9.4782 ms/op 0.83
computeProposers - vc 250000 21.282 ms/op 23.801 ms/op 0.89
computeEpochShuffling - vc 250000 201.60 ms/op 219.80 ms/op 0.92
getNextSyncCommittee - vc 250000 339.24 ms/op 390.62 ms/op 0.87
altair processAttestation - 250000 vs - 7PWei normalcase 43.194 ms/op 41.010 ms/op 1.05
altair processAttestation - 250000 vs - 7PWei worstcase 44.836 ms/op 49.836 ms/op 0.90
altair processAttestation - setStatus - 1/6 committees join 10.133 ms/op 9.2231 ms/op 1.10
altair processAttestation - setStatus - 1/3 committees join 20.901 ms/op 19.229 ms/op 1.09
altair processAttestation - setStatus - 1/2 committees join 31.397 ms/op 30.076 ms/op 1.04
altair processAttestation - setStatus - 2/3 committees join 42.331 ms/op 38.832 ms/op 1.09
altair processAttestation - setStatus - 4/5 committees join 52.225 ms/op 46.583 ms/op 1.12
altair processAttestation - setStatus - 100% committees join 64.667 ms/op 60.434 ms/op 1.07
altair processAttestation - updateEpochParticipants - 1/6 committees join 10.200 ms/op 11.057 ms/op 0.92
altair processAttestation - updateEpochParticipants - 1/3 committees join 21.602 ms/op 20.515 ms/op 1.05
altair processAttestation - updateEpochParticipants - 1/2 committees join 28.101 ms/op 26.833 ms/op 1.05
altair processAttestation - updateEpochParticipants - 2/3 committees join 25.996 ms/op 30.417 ms/op 0.85
altair processAttestation - updateEpochParticipants - 4/5 committees join 27.708 ms/op 36.208 ms/op 0.77
altair processAttestation - updateEpochParticipants - 100% committees join 28.623 ms/op 33.007 ms/op 0.87
altair processAttestation - updateAllStatus 19.968 ms/op 23.259 ms/op 0.86
altair processBlock - 250000 vs - 7PWei normalcase 44.489 ms/op 50.736 ms/op 0.88
altair processBlock - 250000 vs - 7PWei worstcase 115.17 ms/op 129.45 ms/op 0.89
altair processEpoch - mainnet_e81889 940.45 ms/op 1.0621 s/op 0.89
mainnet_e81889 - altair beforeProcessEpoch 279.59 ms/op 300.45 ms/op 0.93
mainnet_e81889 - altair processJustificationAndFinalization 67.832 us/op 98.067 us/op 0.69
mainnet_e81889 - altair processInactivityUpdates 18.740 ms/op 20.676 ms/op 0.91
mainnet_e81889 - altair processRewardsAndPenalties 117.84 ms/op 137.34 ms/op 0.86
mainnet_e81889 - altair processRegistryUpdates 8.5680 us/op 14.329 us/op 0.60
mainnet_e81889 - altair processSlashings 1.5410 us/op 4.0250 us/op 0.38
mainnet_e81889 - altair processEth1DataReset 1.3450 us/op 4.3060 us/op 0.31
mainnet_e81889 - altair processEffectiveBalanceUpdates 11.344 ms/op 14.084 ms/op 0.81
mainnet_e81889 - altair processSlashingsReset 11.161 us/op 20.921 us/op 0.53
mainnet_e81889 - altair processRandaoMixesReset 14.295 us/op 28.819 us/op 0.50
mainnet_e81889 - altair processHistoricalRootsUpdate 1.9770 us/op 6.0430 us/op 0.33
mainnet_e81889 - altair processParticipationFlagUpdates 152.56 ms/op 173.29 ms/op 0.88
mainnet_e81889 - altair processSyncCommitteeUpdates 1.0830 us/op 3.3870 us/op 0.32
mainnet_e81889 - altair afterProcessEpoch 222.93 ms/op 256.51 ms/op 0.87
altair processInactivityUpdates - 250000 normalcase 65.638 ms/op 68.733 ms/op 0.95
altair processInactivityUpdates - 250000 worstcase 65.917 ms/op 67.792 ms/op 0.97
altair processParticipationFlagUpdates - 250000 anycase 88.980 ms/op 100.04 ms/op 0.89
altair processRewardsAndPenalties - 250000 normalcase 121.69 ms/op 133.35 ms/op 0.91
altair processRewardsAndPenalties - 250000 worstcase 136.96 ms/op 158.70 ms/op 0.86
altair processSyncCommitteeUpdates - 250000 362.24 ms/op 407.85 ms/op 0.89
Tree 40 250000 create 523.24 ms/op 495.65 ms/op 1.06
Tree 40 250000 get(125000) 331.36 ns/op 359.68 ns/op 0.92
Tree 40 250000 set(125000) 1.6701 us/op 1.5241 us/op 1.10
Tree 40 250000 toArray() 44.810 ms/op 40.594 ms/op 1.10
Tree 40 250000 iterate all - toArray() + loop 38.115 ms/op 41.094 ms/op 0.93
Tree 40 250000 iterate all - get(i) 118.18 ms/op 141.35 ms/op 0.84
MutableVector 250000 create 18.344 ms/op 23.963 ms/op 0.77
MutableVector 250000 get(125000) 13.545 ns/op 16.137 ns/op 0.84
MutableVector 250000 set(125000) 512.68 ns/op 534.45 ns/op 0.96
MutableVector 250000 toArray() 8.5248 ms/op 9.4279 ms/op 0.90
MutableVector 250000 iterate all - toArray() + loop 8.6065 ms/op 9.6559 ms/op 0.89
MutableVector 250000 iterate all - get(i) 3.4218 ms/op 4.1775 ms/op 0.82
Array 250000 create 5.2810 ms/op 6.7107 ms/op 0.79
Array 250000 clone - spread 1.8138 ms/op 2.0804 ms/op 0.87
Array 250000 get(125000) 0.89000 ns/op 1.0760 ns/op 0.83
Array 250000 set(125000) 0.89700 ns/op 1.0960 ns/op 0.82
Array 250000 iterate all - loop 168.64 us/op 196.63 us/op 0.86
aggregationBits - 2048 els - readonlyValues 211.02 us/op 244.15 us/op 0.86
aggregationBits - 2048 els - zipIndexesInBitList 37.661 us/op 47.607 us/op 0.79
regular array get 100000 times 67.399 us/op 77.979 us/op 0.86
wrappedArray get 100000 times 67.400 us/op 77.977 us/op 0.86
arrayWithProxy get 100000 times 29.023 ms/op 39.127 ms/op 0.74
ssz.Root.equals 1.1540 us/op 1.3300 us/op 0.87
ssz.Root.equals with valueOf() 1.3980 us/op 1.4600 us/op 0.96
byteArrayEquals with valueOf() 1.3060 us/op 1.4310 us/op 0.91
phase0 processBlock - 250000 vs - 7PWei normalcase 10.341 ms/op 11.294 ms/op 0.92
phase0 processBlock - 250000 vs - 7PWei worstcase 73.403 ms/op 77.743 ms/op 0.94
phase0 afterProcessEpoch - 250000 vs - 7PWei 225.36 ms/op 228.72 ms/op 0.99
phase0 beforeProcessEpoch - 250000 vs - 7PWei 581.29 ms/op 578.84 ms/op 1.00
phase0 processEpoch - mainnet_e58758 769.21 ms/op 857.33 ms/op 0.90
mainnet_e58758 - phase0 beforeProcessEpoch 471.59 ms/op 492.23 ms/op 0.96
mainnet_e58758 - phase0 processJustificationAndFinalization 55.139 us/op 95.980 us/op 0.57
mainnet_e58758 - phase0 processRewardsAndPenalties 82.199 ms/op 118.56 ms/op 0.69
mainnet_e58758 - phase0 processRegistryUpdates 37.085 us/op 60.104 us/op 0.62
mainnet_e58758 - phase0 processSlashings 1.2840 us/op 4.2750 us/op 0.30
mainnet_e58758 - phase0 processEth1DataReset 1.3260 us/op 2.9580 us/op 0.45
mainnet_e58758 - phase0 processEffectiveBalanceUpdates 9.0113 ms/op 10.839 ms/op 0.83
mainnet_e58758 - phase0 processSlashingsReset 7.3000 us/op 20.649 us/op 0.35
mainnet_e58758 - phase0 processRandaoMixesReset 11.462 us/op 24.249 us/op 0.47
mainnet_e58758 - phase0 processHistoricalRootsUpdate 1.5770 us/op 4.8520 us/op 0.33
mainnet_e58758 - phase0 processParticipationRecordUpdates 7.7640 us/op 14.376 us/op 0.54
mainnet_e58758 - phase0 afterProcessEpoch 208.31 ms/op 206.14 ms/op 1.01
phase0 processEffectiveBalanceUpdates - 250000 normalcase 11.213 ms/op 13.050 ms/op 0.86
phase0 processEffectiveBalanceUpdates - 250000 worstcase 0.5 1.2117 s/op 1.1730 s/op 1.03
phase0 processRegistryUpdates - 250000 normalcase 32.897 us/op 68.448 us/op 0.48
phase0 processRegistryUpdates - 250000 badcase_full_deposits 2.7564 ms/op 2.8266 ms/op 0.98
phase0 processRegistryUpdates - 250000 worstcase 0.5 1.4579 s/op 1.4963 s/op 0.97
phase0 getAttestationDeltas - 250000 normalcase 45.323 ms/op 44.373 ms/op 1.02
phase0 getAttestationDeltas - 250000 worstcase 38.514 ms/op 44.435 ms/op 0.87
phase0 processSlashings - 250000 worstcase 30.953 ms/op 33.289 ms/op 0.93
shuffle list - 16384 els 12.637 ms/op 14.968 ms/op 0.84
shuffle list - 250000 els 182.55 ms/op 208.02 ms/op 0.88
getEffectiveBalances - 250000 vs - 7PWei 12.611 ms/op 14.019 ms/op 0.90
computeDeltas 3.8868 ms/op 4.1180 ms/op 0.94
getPubkeys - index2pubkey - req 1000 vs - 250000 vc 2.5678 ms/op 2.2514 ms/op 1.14
getPubkeys - validatorsArr - req 1000 vs - 250000 vc 704.68 us/op 748.01 us/op 0.94
BLS verify - blst-native 1.8534 ms/op 2.1416 ms/op 0.87
BLS verifyMultipleSignatures 3 - blst-native 3.8043 ms/op 4.4207 ms/op 0.86
BLS verifyMultipleSignatures 8 - blst-native 8.2053 ms/op 9.5266 ms/op 0.86
BLS verifyMultipleSignatures 32 - blst-native 29.789 ms/op 34.725 ms/op 0.86
BLS aggregatePubkeys 32 - blst-native 40.011 us/op 46.169 us/op 0.87
BLS aggregatePubkeys 128 - blst-native 153.22 us/op 177.48 us/op 0.86
getAttestationsForBlock 82.313 ms/op 89.389 ms/op 0.92
CheckpointStateCache - add get delete 15.794 us/op 16.627 us/op 0.95
validate gossip signedAggregateAndProof - struct 4.4564 ms/op 5.0903 ms/op 0.88
validate gossip signedAggregateAndProof - treeBacked 4.4873 ms/op 4.9887 ms/op 0.90
validate gossip attestation - struct 2.0914 ms/op 2.3748 ms/op 0.88
validate gossip attestation - treeBacked 2.1102 ms/op 2.4131 ms/op 0.87
Object access 1 prop 0.35000 ns/op 0.37600 ns/op 0.93
Map access 1 prop 0.28600 ns/op 0.32500 ns/op 0.88
Object get x1000 17.355 ns/op 21.330 ns/op 0.81
Map get x1000 1.1040 ns/op 1.1270 ns/op 0.98
Object set x1000 113.69 ns/op 123.22 ns/op 0.92
Map set x1000 68.750 ns/op 74.572 ns/op 0.92
Return object 10000 times 0.37270 ns/op 0.42690 ns/op 0.87
Throw Error 10000 times 6.0599 us/op 6.7281 us/op 0.90

by benchmarkbot/action

@dapplion dapplion merged commit 434891d into master Dec 15, 2021
@dapplion dapplion deleted the dapplion/max-old-space branch December 15, 2021 11:30
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.

None yet

2 participants