Skip to content

Commit

Permalink
Update, add more and reorganize bench results
Browse files Browse the repository at this point in the history
Signed-off-by: Jens Reidel <[email protected]>
  • Loading branch information
Gelbpunkt committed Feb 10, 2025
1 parent ee873c1 commit 4c9c544
Show file tree
Hide file tree
Showing 25 changed files with 65 additions and 786 deletions.
3 changes: 3 additions & 0 deletions .cargo/config.toml
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,9 @@ rustflags = ["-C", "target-cpu=native", "-C", "panic=abort", "-Z", "panic_abort_
[target.aarch64-unknown-linux-gnu]
rustflags = ["-C", "target-feature=+neon", "-C", "panic=abort", "-Z", "panic_abort_tests"]

[target.aarch64-unknown-linux-musl]
rustflags = ["-C", "target-cpu=native", "-C", "panic=abort", "-Z", "panic_abort_tests"]

[target.armv7-unknown-linux-gnueabi]
rustflags = ["-C", "target-feature=+neon", "-C", "panic=abort", "-Z", "panic_abort_tests"]

Expand Down
79 changes: 62 additions & 17 deletions benches/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,9 @@ It is a bit tricky to benchmark WebSocket libraries, since you're going to be li

## Environment

I run these benchmarks irregularly on my main system (CPU: `AMD Ryzen 9 7950X`, RAM: `32GB`). The kernel version last used is:
The benchmarks are run irregularly on a bunch of different systems to get a rough idea for the scaling of the library on different hardware. All hardware is bare-metal, not virtualized.

```
$ uname -a
Linux ceres 6.7.0-0.rc3.20231129gt18d46e76.329.vanilla.fc39.x86_64 #1 SMP PREEMPT_DYNAMIC Wed Nov 29 06:20:06 UTC 2023 x86_64 GNU/Linux
```

and the benchmarks are run in a podman container based on Alpine Linux Edge.
All benchmarks are run in a podman container based on Chimera Linux.

## Methodology

Expand All @@ -30,22 +25,72 @@ The benchmarking script was taken from [fastwebsockets](https://github.com/denol

## Results

### 10 connections, 1024 byte payloads
### AMD Epyc 7402P, Linux 6.12.7

This target uses AVX2.

<details>

<summary>Expand results</summary>

#### 10 connections, 1024 byte payloads

![10 Connections, 1024 byte payloads](./results/x86_64-avx2/10-1024-chart.png)

#### 10 connections, 16384 byte payloads

![10 Connections, 16384 byte payloads](./results/x86_64-avx2/10-16384-chart.png)

#### 100 connections, 0 byte payloads

![100 Connections, 0 byte payloads](./results/x86_64-avx2/100-0-chart.png)

#### 100 connections, 20 byte payloads

![100 Connections, 20 byte payloads](./results/x86_64-avx2/100-20-chart.png)

#### 200 connections, 16384 byte payloads

![200 Connections, 16384 byte payloads](./results/x86_64-avx2/200-16384-chart.png)

#### 500 connections, 16384 byte payloads

![500 Connections, 16384 byte payloads](./results/x86_64-avx2/500-16384-chart.png)

</details>

### Neoverse N1, Linux 6.12.11

This target uses NEON.

<details>

<summary>Expand results</summary>

#### 10 connections, 1024 byte payloads

![10 Connections, 1024 byte payloads](./results/aarch64-neon/10-1024-chart.png)

#### 10 connections, 16384 byte payloads

![10 Connections, 16384 byte payloads](./results/aarch64-neon/10-16384-chart.png)

#### 100 connections, 0 byte payloads

![100 Connections, 0 byte payloads](./results/aarch64-neon/100-0-chart.png)

![10 Connections, 1024 byte payloads](./results/10-1024-chart.svg)
#### 100 connections, 20 byte payloads

### 10 connections, 16384 byte payloads
![100 Connections, 20 byte payloads](./results/aarch64-neon/100-20-chart.png)

![10 Connections, 16384 byte payloads](./results/10-16384-chart.svg)
#### 200 connections, 16384 byte payloads

### 100 connections, 20 byte payloads
![200 Connections, 16384 byte payloads](./results/aarch64-neon/200-16384-chart.png)

![100 Connections, 20 byte payloads](./results/100-20-chart.svg)
#### 500 connections, 16384 byte payloads

### 200 connections, 16384 byte payloads
![500 Connections, 16384 byte payloads](./results/aarch64-neon/500-16384-chart.png)

![200 Connections, 16384 byte payloads](./results/200-16384-chart.svg)
</details>

### 500 connections, 16384 byte payloads

![500 Connections, 16384 byte payloads](./results/500-16384-chart.svg)
Binary file removed benches/results/10-1024-chart.png
Binary file not shown.
141 changes: 0 additions & 141 deletions benches/results/10-1024-chart.svg

This file was deleted.

Binary file removed benches/results/10-16384-chart.png
Binary file not shown.
Loading

0 comments on commit 4c9c544

Please sign in to comment.