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

V21.3 service release #3140

Merged
merged 13 commits into from
Mar 18, 2021
Merged

V21.3 service release #3140

merged 13 commits into from
Mar 18, 2021

Conversation

clemahieu
Copy link
Contributor

@clemahieu clemahieu commented Mar 14, 2021

Removes peer-banning. This compounds synchronization delays if the network is already out of sync by disconnecting from good nodes
Requests frontiers by age which will reduce the bandwidth consumed during the frontier comparison process
Rebroadcasting blocks only when an election is active. This will stop block propagation for blocks that don't have an open election.
Removed bootstrap restarting code as ineffective.
Reduce the number of confirmation requests per batch from 20 to 2.
Added an optional flag was added to the frontier request message which requests that the response should include confirmed frontiers rather than the unconfirmed frontiers.

clemahieu and others added 7 commits March 12, 2021 12:49
from 128GB to 256GB
Up until "recently", a new write transaction was opened to update work on the ledger for every single block. Now with deferred work updates on the block processor, it is no more expensive than processing a new block, so it makes sense to remove this constraint of having been recently dropped. This improves quality of service.

The previously implicit check for confirmed dependents (since the election was dropped) is now explicit. The work on the ledger is updated regardless of that check passing.

The election is not immediately inserted as *active* anymore, same behavior as the normal election insertion path.

Note that if an election is active, the work is **not** updated on the ledger. That behavior also seems desirable. This could be achieved by updating the store after the block is identified as old, directly within `ledger::process`. For post-processing, a flag can be passed to `blockprocessor::process_old`, at which point `active_transactions::restart` can be scrapped since it becomes a simple election insertion + stats update (with a dependents confirmed check). Since this change would touch ledger code I am leaving for others to do it. There's also the question if the confirmed status should be checked within the ledger processing code.

Note: only tested via core_test.

# Conflicts:
#	nano/core_test/active_transactions.cpp
#	nano/core_test/node.cpp
#	nano/lib/locks.cpp
#	nano/lib/locks.hpp
#	nano/node/active_transactions.cpp
#	nano/node/active_transactions.hpp
@zhyatt zhyatt added this to Pending testing evaluation in V22.0DB12/DB13 via automation Mar 15, 2021
…o 280/sec -> 28/sec. This option is also made configurable.

Confirm_req batches are used in the bootstrap process and excessive requests to reps can degrade performance and often get dropped.

# Conflicts:
#	nano/node/active_transactions.cpp
#	nano/node/confirmation_solicitor.cpp
#	nano/node/nodeconfig.cpp
#	nano/node/nodeconfig.hpp
…ause unnecessary restarting of the bootstrap process.
@zhyatt zhyatt removed this from Pending testing evaluation in V22.0DB12/DB13 Mar 16, 2021
@zhyatt zhyatt requested a review from SergiySW March 18, 2021 13:36
@zhyatt zhyatt added the performance Performance/resource utilization improvement label Mar 18, 2021
@zhyatt zhyatt added this to the V21.3 milestone Mar 18, 2021
@zhyatt zhyatt requested review from zhyatt and removed request for SergiySW March 18, 2021 15:27
@clemahieu clemahieu changed the title V21.3 and synchronization improvements V21.3 service release Mar 18, 2021
@clemahieu clemahieu merged commit 15b7db9 into releases/v21 Mar 18, 2021
@zhyatt zhyatt added documentation This item indicates the need for or supplies updated or expanded documentation protocol change Change to protocol requiring new version labels Mar 18, 2021
@zhyatt zhyatt deleted the frontier_perf_improvements branch September 21, 2021 21:51
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
documentation This item indicates the need for or supplies updated or expanded documentation performance Performance/resource utilization improvement protocol change Change to protocol requiring new version
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants