Commit Graph

23 Commits

Author SHA1 Message Date
Piotr Galar ed111cdc25
feat: add new implementation versions (go, js, rust) (#349)
* feat: add new implementation versions (go)

* ci: generalise adding new implementation versions

* ci: automate new version addition for rust-libp2p and js-libp2p
2024-03-26 17:13:03 +00:00
Max Inden 9e2ae17326
chore(perf): update to rust-libp2p v0.53.2 (#341)
Update `perf/impl/rust-libp2p/v0.53` to rust-libp2p `v0.53.2`. With this patch
release comes the rust-yamux stream receive window auto-tuning.

https://github.com/libp2p/rust-libp2p/pull/4970

https://github.com/libp2p/rust-libp2p/releases/tag/libp2p-v0.53.2
2023-12-30 20:39:05 +01:00
Alex Potsides 7fab93f625
fix: update js-libp2p perf to include v1 release (#336)
Update deps to non-next versions.

---------

Co-authored-by: achingbrain <achingbrain@users.noreply.github.com>
2023-12-04 13:30:59 +00:00
Alex Potsides 9a4c969523
fix: re-enable js-libp2p under node.js (#325)
Adds perf tests for js-libp2p 0.46.x and 1.0 (via the `next` tag).

---------

Co-authored-by: achingbrain <achingbrain@users.noreply.github.com>
2023-11-21 08:22:56 +00:00
Max Inden 0a8dbab87c
feat(perf): continuosly measure on single conn (iperf-style) (#276)
Our current throughput tests open a connection, open a stream,
up- or download 100MB and close the connection. 100 MB is not enough on the
given path (60ms, ~5gbit/s) to exit congestion controller's slow-start. See
https://github.com/libp2p/test-plans/issues/261 for details.

Instead of downloading 100MB multiple times, each on a new connection, establish
a single connection and continuously measure the throughput for a fixed
duration (20s).
2023-10-25 13:24:08 +02:00
Chad Nehemiah a96d930eb4
fix(perf): re-introduce js-libp2p + add encryption (#299) 2023-09-14 18:49:46 +02:00
github-actions[bot] 09d15c0e8b
chore: add go-libp2p@v0.31.0 to perf/impl/go-libp2p (#295)
* chore: add go-libp2p@v0.31.0 to perf/impl/go-libp2p

* perf: update benchmark results

---------

Co-authored-by: galargh <galargh@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2023-09-04 11:28:35 +02:00
Max Inden 73dba1a5bc
feat(perf/rust-libp2p): upgrade to v0.52.3 and remove master (#290)
- Upgrade rust-libp2p `v0.52` implementation to rust-libp2p `v0.52.3`.
- Remove rust-libp2p `master` implementation. Given that `v0.52.3` contains the
  stable QUIC implementation, there is no more need for `master`.
2023-09-01 19:59:53 +02:00
Chad Nehemiah fbb92b75b2
fix(perf): adjust cli flags for perf runner for testing purposes (#275)
Co-authored-by: Max Inden <mail@max-inden.de>
2023-09-01 19:59:30 +02:00
Max Inden a68c19699e
Revert "feat(perf): add js-libp2p NodeJS (#244)" (#292)
This reverts commit c39bfb9b32.

Reverting due to https://github.com/libp2p/test-plans/issues/291. Can revert
revert once resolved.
2023-09-01 19:58:31 +02:00
Chad Nehemiah c39bfb9b32
feat(perf): add js-libp2p NodeJS (#244)
Co-authored-by: Max Inden <mail@max-inden.de>
2023-08-25 11:09:01 +02:00
Max Inden d1ff642e9b
fix(perf): remove obsolete quinn build infra (#274)
Implementation has been removed with https://github.com/libp2p/test-plans/pull/246.
2023-08-24 15:08:23 +02:00
Chad Nehemiah eebc07b1b4
docs(perf): Added new CLI flags for iterations + updated docs (#258) 2023-08-23 23:19:11 -07:00
Max Inden f57408de37
chore(perf): install NodeJS LTS on VMs (#266)
Needed for js-libp2p perf implementation.

https://github.com/libp2p/test-plans/pull/244/
2023-08-18 14:23:06 +02:00
Max Inden 8e2c837599
fix(perf): increase maximum udp send buffer size (#254)
Previously only the maximum udp **receive** buffer size was increased to
`2500000` bytes. With this commit both the send and the receive buffer size is increase.
2023-08-14 16:08:41 +02:00
Max Inden ad43602e63
fix(perf): increase root volume size (#249)
Multiple perf runs have failed due to "no space left on device". See e.g. https://github.com/libp2p/test-plans/actions/runs/5727165977/job/15527780097.

The perf terraform launch template previously did not specify a root volume
size. Thus terraform used the default:

```
df -h

Filesystem      Size  Used Avail Use% Mounted on
devtmpfs        4.0M     0  4.0M   0% /dev
tmpfs            63G     0   63G   0% /dev/shm
tmpfs            25G  540K   25G   1% /run
/dev/nvme0n1p1  8.0G  1.9G  6.1G  24% /
tmpfs            63G     0   63G   0% /tmp
tmpfs            13G     0   13G   0% /run/user/1000
```

With this commit the root volume is increased to 100GB:

```
df -h

Filesystem      Size  Used Avail Use% Mounted on
devtmpfs        4.0M     0  4.0M   0% /dev
tmpfs            63G     0   63G   0% /dev/shm
tmpfs            25G  564K   25G   1% /run
/dev/nvme0n1p1  100G  2.6G   98G   3% /
tmpfs            63G  8.0K   63G   1% /tmp
tmpfs            13G     0   13G   0% /run/user/0
tmpfs            13G     0   13G   0% /run/user/1000
```
2023-08-04 18:50:32 +02:00
Max Inden cfd1049e8a
fix(perf): run iperf on TCP and set TCP windows to bdp (#241)
This commit makes iperf use TCP instead of UDP. Using UDP allows the sender to
send as much data as they can, not as much data as the receiver can handle.
Using TCP measures the actual bandwidth of the connection.

This commit sets the TCP send and receive window to the bandwidth-delay-product.
In order to exhaust the whole bandwidth between the two nodes, TCP needs to be
able to buffer all bytes on the wire in the case of packet loss.
2023-08-04 10:23:47 +02:00
Max Inden ffc7ae0d5f
fix(perf): replace rust-libp2p-quinn/ with rust-libp2p/master (#246)
With https://github.com/libp2p/rust-libp2p/pull/3454 merged we can now test the
new rust-libp2p QUIC implementation based on upstream quinn directly from
rust-libp2p `master`.

This commit does the following in libp2p/test-plans:

1. Remove the `perf/impl/rust-libp2p-quinn` implementation.
2. Introduce the `perf/impl/rust-libp2p/master` version of the rust-libp2p implementation.

We can promote the latter to a proper version on the next rust-libp2p release.
2023-08-01 16:40:02 +02:00
Max Inden 35eb403b2d
feat(perf): add go-libp2p v0.29 (#242) 2023-07-26 14:01:46 +02:00
Max Inden d7391f13e1
fix(perf): increase iterations (#213)
- Increase upload/download benchmark iterations. Still conservative value of `10` due to slow rust-libp2p tcp. See https://github.com/libp2p/rust-yamux/issues/162. Note however that this is 10x an upload of 100MB.
- Increase latency benchmark iterations.
2023-07-10 05:06:51 +02:00
Max Inden 67960902e8
feat(perf/go-libp2p): add v0.28.1 (#209) 2023-06-27 03:24:19 +02:00
Max Inden cdf7820037
refactor(perf): expose single latency measurement (#207) 2023-06-26 10:35:44 +02:00
Max Inden 53ff8b5db1
feat(perf): add (automation, provision, build, run) tooling (#184)
This project includes the following components:

- `terraform/`: a Terraform scripts to provision infrastructure
- `impl/`: implementations of the [libp2p perf
  protocol](https://github.com/libp2p/specs/blob/master/perf/perf.md) running on
  top of e.g. go-libp2p, rust-libp2p or Go's std-library https stack
- `runner/`: a set of scripts building and running the above implementations on
  the above infrastructure, reporting the results in `benchmark-results.json`

Benchmark results can be visualized with
https://observablehq.com/@mxinden-workspace/libp2p-performance-dashboard.

Co-authored-by: Marco Munizaga <git@marcopolo.io>
Co-authored-by: Marten Seemann <martenseemann@gmail.com>
Co-authored-by: Piotr Galar <piotr.galar@gmail.com>
2023-06-22 13:54:09 +02:00