-
Notifications
You must be signed in to change notification settings - Fork 3
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
Flood publish #15
base: main
Are you sure you want to change the base?
Flood publish #15
Conversation
Thank you @ackintosh for providing these numbers. That is very helpful. I acknowledge that libp2p/rust-libp2p#3666 shows a significant change in sending latency. Though one also needs to keep in mind that those nodes outside of the mesh will only receive the message on the next heartbeat, thus have a significant delay. I wonder whether the problem should be solved at the Gossipsub level, or whether it is worth investing into the lower transport layer, improving base bandwidth. Out of curiosity, I wonder how this would play out when using a more powerful transport protocol. Early results from our measurements show that libp2p/rust-libp2p#3454 has a significant bandwidth improvement compared to our existing See libp2p/test-plans#184 for details. Would you mind running this test with libp2p/rust-libp2p#3454? |
@mxinden I have created another test plan to run this test with the quic implementation. The result shows ~5% improvement on latency. |
@mxinden and @ackintosh do any of you have a hypothesis that could explain why a 10x increase in throughput resulted in only a 5% improvement in latency when using QUIC? |
👷 This PR will be ready for review once the improvement on flood publishing has been merged. 👷
Flood Publish Simulation
This simulation creates a number of nodes in which flood publishing is enabled
and help users to measure the latency of messages.
In this simulation, pictured below, each node logs the time when they emit a
HandlerIn::Message
event to the handler, and whenhandle_received_message()
is called.NOTE: Both the event and function are defined inside of rust-libp2p. So this simulation uses a forked rust-libp2p that includes the logging. See here for the diffs in the forked one.
Using
measure_latency.py
we can measure the time between the two.Running the Simulation
The type of flood publishing can be switched via
--test-param flood_publish=heartbeat
. Please read theflood_publishing/manifest.toml
to understand test parameters.Measurement Results
It appears that latency has been reduced by approximately 30% when comparing the Rapid and Heartbeat.
Rapid
Command
Heartbeat
Command