-
Notifications
You must be signed in to change notification settings - Fork 62
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
docs: Add test reporting doc to benchmarks dir #3238
base: master
Are you sure you want to change the base?
Conversation
This is a draft to get inputs on the formatting and content. |
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.
Thanks for this! I've added a couple of comments and suggestions on what other sections to add.
2362ed1
to
e01a61e
Compare
@fryorcraken I wonder if the TL;DR section is not too wordy? Is the requirement not to have it be something very short that can be read quickly and easily remembered such as:
and then if the reader wants more info (such as the network size and message rate for the simulations where the above values were obtained, they can look at the |
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.
A few more comments. :)
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.
Thanks! LGTM now. :) I know there's still an outstanding section on relevance to Status, but happy to see this merged once that is done.
Hi @plopezlpz, could you please have a look and maybe provide some inputs? |
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.
This looks really good 👍
|
||
> ## TL;DR | ||
> | ||
> - Average Waku bandwidth usage: ~**10 KB/s** (minus discv5 Discovery) for 1KB message size and message injection rate of 1msg/s. |
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.
Maybe more interesting to read the bandwidth overhead.
I would not exclude discv5
So something like:
for 1KB message per second, sent by 2000 publisher nodes (all nodes in network are publisher). The total bandwidth is 3MBps. Knowing that data injected to the network is 2MBs (1KB * 2000 per second). There is an overheard of 1MBps (gossipsub amplification + peer discovery discv5).
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.
@fryorcraken I don't think the regression tests currently measure total bandwidth usage per node (@AlbertoSoutullo could you please confirm this), we can only approximate using the libp2p and discv5 data we have and the payload size and msg rate data:
e.g.
Knowing that data injected to the network is 2MBs (1KB * 2000 per second) and knowing that
libp2p in and out is 2x 8 KB/s and discv5 in and out is 10.2 + 1.6 KB/s.
We have a total of bandwidth usage of approx. 2.1 MBs
Is this sufficient for now?
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.
We don't report the total usage but the median one. But still, the total libp2p and discv5 usage can be measured and reported. Actually, in the v0.35 report we found that the bandwidth usage of discv5 in some nodes is extremely high compared with the libp2p one.
> - Average time for a message to propagate to 100% of nodes: **0.4s** for topologies of up to 2000 Relay nodes. | ||
> - Average per-node bandwidth usage of the discv5 protocol: **8 KB/s** for incoming traffic and **7.4 KB/s** for outgoing traffic, | ||
in a network with 100 continuously online nodes. | ||
> - Relevancy to Status App: **TODO** |
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.
The aim is to produce a messaging API, whose default values should be the one used by Status and perform benchmarks using the messaging API so it's all relevant for Status or any app using said API.
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.
Would it make sense to add something here like:
Future Improvements: A messaging API is currently in development to streamline interactions with the Waku protocol suite.
Once completed, Waku will be able to provide benchmarks at the messaging API level of the software stack, enabling applications using the API to more easily compare their own benchmark results.
or rather just leave it out for now?
The average per-node `libp2p` bandwidth usage in a 1000-node Relay network with 1KB messages at varying injection rates. | ||
|
||
|
||
| Message Injection Rate | Average libp2p incoming bandwidth (KB/s) | Average libp2p outgoing bandwidth (KB/s) | | ||
|------------------------|------------------------------------------|------------------------------------------| | ||
| 1 msg/s | ~10.1 | ~10.3 | | ||
| 1 msg/10s | ~1.8 | ~1.9 | |
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.
Would be good to state the obvious of application data injected (1msg/s *1000 nodes) and data measured so we understand the overhead.
Description
This PR is a first pass at adding a nwaku test summary page which aims to provide a quick reference for anyone implementing the waku protocol using nwaku to see the expected performance as well as have quick access to test reports.
Changes
docs/benchmarks/test-results-summary.md
How to test