perf(p2p): Delete expensive debug log already slated for deletion#3412
perf(p2p): Delete expensive debug log already slated for deletion#3412
Conversation
|
How often this code is hit? Because in most-cases we assume that the channel is present in both sender or receivers. |
|
This is used in every single packet send! Would be great if we can avoid even needing this check in the future, this map access is actually still showing in CPU profiles after the debug log is removed, since there are so many packets. |
|
Actually, this code is only run if we don't return true, which means that the channel does not exist. |
|
Ah your right. Here is a profile where we are seeing it taking a large amount of total osmosis load: This is the same profile where we saw gossipDataRoutine taking shockingly long amounts of time (and I suspected busy waiting) #3414 , maybe this helps us tell us the problem? |
I don't understand it either. If all nodes have the same set of channels, then this debug line shouldn't ever be reached. |
|
I would also change |
I am pretty sure that traversing a byte array is faster than using a map. Almost 100% sure. We could use the |
|
I'm going to merge this, but we still need to understand where inefficiency is coming from #3412 (comment) |
|
@mergify backport v1.x |
✅ Backports have been createdDetails
|
) Delete an expensive debug log that has already been slated for deletion. On the osmosis fork (with many other debug logs removed), this debug log ended up taking 1.5% of all CPU time when we had many large blocks. (All from outbound gossip curiously enough) This caused 12GB of total memory allocation over an hour in that benchmark (out of 180GB total. With other optimizations in PR's / merged since that benchmark, would have been 12GB / ~120GB total) I am just making a PR to delete it, since it already had a code comment indicating we should delete it later. (Rather than waiting for #2989 Note that under normal benchmarks (e.g. the last one I did), this is fairly low impact. (68MB over an hour, out of 69 GB, so .1%) --- #### PR checklist - [x] Tests written/updated - [ ] Changelog entry added in `.changelog` (we use [unclog](https://github.com/informalsystems/unclog) to manage our changelog) - didn't add one, since its just deleting a debug log - [x] Updated relevant documentation (`docs/` or `spec/`) and code comments - [x] Title follows the [Conventional Commits](https://www.conventionalcommits.org/en/v1.0.0/) spec (cherry picked from commit 1964898)
…ckport #3412) (#3488) Delete an expensive debug log that has already been slated for deletion. On the osmosis fork (with many other debug logs removed), this debug log ended up taking 1.5% of all CPU time when we had many large blocks. (All from outbound gossip curiously enough) This caused 12GB of total memory allocation over an hour in that benchmark (out of 180GB total. With other optimizations in PR's / merged since that benchmark, would have been 12GB / ~120GB total) I am just making a PR to delete it, since it already had a code comment indicating we should delete it later. (Rather than waiting for #2989 Note that under normal benchmarks (e.g. the last one I did), this is fairly low impact. (68MB over an hour, out of 69 GB, so .1%) --- #### PR checklist - [x] Tests written/updated - [ ] Changelog entry added in `.changelog` (we use [unclog](https://github.com/informalsystems/unclog) to manage our changelog) - didn't add one, since its just deleting a debug log - [x] Updated relevant documentation (`docs/` or `spec/`) and code comments - [x] Title follows the [Conventional Commits](https://www.conventionalcommits.org/en/v1.0.0/) spec <hr>This is an automatic backport of pull request #3412 done by [Mergify](https://mergify.com). Co-authored-by: Dev Ojha <ValarDragon@users.noreply.github.com> Co-authored-by: Anton Kaliaev <anton.kalyaev@gmail.com>
) Delete an expensive debug log that has already been slated for deletion. On the osmosis fork (with many other debug logs removed), this debug log ended up taking 1.5% of all CPU time when we had many large blocks. (All from outbound gossip curiously enough) This caused 12GB of total memory allocation over an hour in that benchmark (out of 180GB total. With other optimizations in PR's / merged since that benchmark, would have been 12GB / ~120GB total) I am just making a PR to delete it, since it already had a code comment indicating we should delete it later. (Rather than waiting for #2989 Note that under normal benchmarks (e.g. the last one I did), this is fairly low impact. (68MB over an hour, out of 69 GB, so .1%) --- #### PR checklist - [x] Tests written/updated - [ ] Changelog entry added in `.changelog` (we use [unclog](https://github.com/informalsystems/unclog) to manage our changelog) - didn't add one, since its just deleting a debug log - [x] Updated relevant documentation (`docs/` or `spec/`) and code comments - [x] Title follows the [Conventional Commits](https://www.conventionalcommits.org/en/v1.0.0/) spec
) Delete an expensive debug log that has already been slated for deletion. On the osmosis fork (with many other debug logs removed), this debug log ended up taking 1.5% of all CPU time when we had many large blocks. (All from outbound gossip curiously enough) This caused 12GB of total memory allocation over an hour in that benchmark (out of 180GB total. With other optimizations in PR's / merged since that benchmark, would have been 12GB / ~120GB total) I am just making a PR to delete it, since it already had a code comment indicating we should delete it later. (Rather than waiting for #2989 Note that under normal benchmarks (e.g. the last one I did), this is fairly low impact. (68MB over an hour, out of 69 GB, so .1%) --- #### PR checklist - [x] Tests written/updated - [ ] Changelog entry added in `.changelog` (we use [unclog](https://github.com/informalsystems/unclog) to manage our changelog) - didn't add one, since its just deleting a debug log - [x] Updated relevant documentation (`docs/` or `spec/`) and code comments - [x] Title follows the [Conventional Commits](https://www.conventionalcommits.org/en/v1.0.0/) spec

Delete an expensive debug log that has already been slated for deletion. On the osmosis fork (with many other debug logs removed), this debug log ended up taking 1.5% of all CPU time when we had many large blocks. (All from outbound gossip curiously enough) This caused 12GB of total memory allocation over an hour in that benchmark (out of 180GB total. With other optimizations in PR's / merged since that benchmark, would have been 12GB / ~120GB total)
I am just making a PR to delete it, since it already had a code comment indicating we should delete it later. (Rather than waiting for #2989
Note that under normal benchmarks (e.g. the last one I did), this is fairly low impact. (68MB over an hour, out of 69 GB, so .1%)
PR checklist
.changelog(we use unclog to manage our changelog) - didn't add one, since its just deleting a debug logdocs/orspec/) and code comments