-
Notifications
You must be signed in to change notification settings - Fork 340
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
shares shreds' payload between window-service and retransmit-stage #4803
shares shreds' payload between window-service and retransmit-stage #4803
Conversation
c8f42a9
to
a91c1d3
Compare
@vadorovsky has been looking into a possible change to back |
I would not like to tie this with that other work (which I am not even confident is the right thing to do).
|
The recyclers operate on
As an FYI, I think we're leaning pretty heavily towards ripping the GPU code out: #3817
Got it, we can discuss over there
Fair enough. We can optimize things as they are and if |
Still does not sound like to me it will work with the recycler.
That is terrible. Sigverify is more of a major bottleneck than whatever #3817 is going to solve.
Not using |
let mut addrs: Vec<_> = self.addrs.iter().collect(); | ||
let reverse_count = |(_addr, count): &_| Reverse(*count); | ||
if addrs.len() > MAX_NUM_ADDRS { | ||
addrs.select_nth_unstable_by_key(MAX_NUM_ADDRS, reverse_count); | ||
addrs.truncate(MAX_NUM_ADDRS); | ||
} | ||
addrs.sort_unstable_by_key(reverse_count); | ||
info!( | ||
"num addresses: {}, top packets by source: {:?}", | ||
self.addrs.len(), | ||
addrs | ||
); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Removing this info!
log (and associated addrs
bookkeeping) here because it is pretty inefficient to collect emit these logs here.
I will look into putting something similar elsewhere in the pipeline (maybe shred-fetch-stage or sigverify).
3653ce0
to
631996b
Compare
631996b
to
fbaf03c
Compare
Shreds received from turbine are concurrently sent to window-service to be deserialized and inserted into blockstore, while their payload is sent to retransmit-stage. Using a shared payload between the two concurrent paths will reduce allocations and memcopies.
fbaf03c
to
4e240b9
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
lgtm
Backports to the beta branch are to be avoided unless absolutely necessary for fixing bugs, security issues, and perf regressions. Changes intended for backport should be structured such that a minimum effective diff can be committed separately from any refactoring, plumbing, cleanup, etc that are not strictly necessary to achieve the goal. Any of the latter should go only into master and ride the normal stabilization schedule. Exceptions include CI/metrics changes, CLI improvements and documentation updates on a case by case basis. |
…4803) Shreds received from turbine are concurrently sent to window-service to be deserialized and inserted into blockstore, while their payload is sent to retransmit-stage. Using a shared payload between the two concurrent paths will reduce allocations and memcopies. (cherry picked from commit d590995)
Problem
Shreds received from turbine are concurrently sent to window-service to be deserialized and inserted into blockstore, while their payload is sent to retransmit-stage. Using a shared payload between the two concurrent paths will reduce allocations and memcopies.
Summary of Changes
The commit shares shreds' payload between window-service and retransmit-stage.