-
Notifications
You must be signed in to change notification settings - Fork 43
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
Create a performance dashboard #156
Comments
I have some more thoughts on what the runner looks like and what implmentations should implement here: https://github.com/libp2p/test-plans/blob/marco/perf/perf-dashboard/README.md |
@mxinden : Some thoughts immediately coming to mind when taking a look at https://observablehq.com/@mxinden-workspace/libp2p-performance-dashboard
What are the next steps in your mind? Has or will there be a maintainer review? I would like to make sure the team is aligned on where we're headed and will end up. Thanks for putting this together. |
👍 Good point. Thanks. I plan to increase the sample size of the upload and download tests. Will also make the sample size more explicit on the dashboard.
In regards to security protocols, yes, though only tracked as a follow-up, i.e. not in the first iteration. Tracked in "Outstanding work for future pull requests:" in #184. In regards to muxers, we really only have one muxer per transport protocol. E.g. on TCP we only have Yamux at this point. I don't we should consider mplex a valid option at this point. See libp2p/specs#402.
Today there is a single version per implementation only. Once we have more than one version per implementation we can visualize the data. Support for multiple versions per implementation is already in #184. Adding support in the dashboard is not difficult. A placeholder is already on the dashboard, see bottom:
Sounds good to me. You can already filter implementations in the visualizations, i.e. disable showing some. I suggest once we have more graphs, we can introduce more advanced filtering mechanisms. Though at this point, I don't want to add a filtering mechanism without the need for filtering.
Not yet. At this point I want to drive consensus and get the first iteration of #184 into Thanks @BigLep. Updated the task list in the issue description. |
The libp2p Performance Dashboard is now ready for review. https://observablehq.com/@libp2p-workspace/performance-dashboard @libp2p/github-mgmt-stewards, @sukunrt and @thomaseizinger I welcome your feedback and suggestions.. If you have an ObservableHQ account feel free to comment on the notebook directly. If not, comments on this GitHub issue are just fine. I am tracking outstanding tasks in the description of this GitHub issue and on #63. Also in case you have an ObservableHQ account and would like to be part of the libp2p ObservableHQ workspace, ping me. |
It is really cool! From looking at it, I take that we've moved away from the idea of making this an interactive blog post and instead just represent the data? For a blog post, the text between the visualisations is a bit sparse. I know you've been identifying and fixing some minor issues already as a result of this work and #63 tracks additional work around the tooling. Do we also have an issue that collects ideas on how we can improve performance based on these measurements? |
Nice! Are there plans to include other languages here? |
@thomaseizinger blog post is shelved for now, waiting for some optimizations to land. Non-sparse draft can be found here: https://observablehq.com/@mxinden-workspace/libp2p-perf
Not so far. Some items thus far:
@ianopolous ideally all of them, including jvm-libp2p. Do you have time to drive a jvm-libp2p integration? Vague guess is that this would take you 4h total. Happy to help. See https://github.com/libp2p/test-plans/blob/master/perf/README.md#adding-a-new-implementation |
@mxinden Is the current methodology to spin up an instance, make a measurement, and then kill it? If so we'll need to change this to have some warm up to get meaningful results for the jitted languages like JS and Java. |
Correct. No warm-up phase currently. Each iteration is a new process.
Good point. Though, based on intuition, I suggest we give it a shot anyways. I would assume that neither of of our tests today (latency, throughput) are CPU bound. Let's not prematurely fix this issue without seeing it happen. |
Status Update
Friendly ping @libp2p/github-mgmt-stewards, @sukunrt in case you want to review. |
Thanks @mxinden . Things coming to mind when looking at https://observablehq.com/@libp2p-workspace/performance-dashboard fresh...
|
This has to be the time from when we open the stream to when we read EOF from the server. The issue is we don't really know when the bytes have been uploaded and received. Even if they are given to the kernel they still haven't been sent. And even then they may be dropped and need to be retransmitted. The only true measurement we can make is when the test ends. |
Good points - makes sense. This still affirms for me that we should be explicit for the benchmarks we're reporting on "when" the timer starts/stops and "where" the timer is (client or server). |
I guess this is fine as is. The dashboard links to https://github.com/libp2p/test-plans/tree/master/perf, which under the implementation section discusses "the measurement includes the time to (1) establish the connection, (2) upload the bytes and (3) download the bytes". I think it would be ideal to make it more front and center when/where the timing is happening, but the information is discoverable, so this can be skipped. |
On my TODO list for
Dashboard is linked here: https://github.com/libp2p/test-plans/tree/master/perf#libp2p-performance-benchmarking Another "inroad" will be the blog post.
Saw them. Thanks @BigLep. |
I addressed all dashboard-related outstanding items, thus closing here. I will take the last outstanding item, namely to " ideally mirrored in the URL for better sharing" to the main tracking issue. |
Overarching tracking issue: #63
Goal
Create a dashboard that can showcase libp2p performance benchmark results, more specifically
benchmark-results.json
.Tasks
The text was updated successfully, but these errors were encountered: