Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 6 additions & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,11 +16,16 @@ jobs:
with:
version: 0.16.0

- name: Build examples and benchmark
- name: Build examples and benchmark tools
run: zig build

- name: Run tests
run: zig build test

- name: Build optimized artifacts
run: zig build -Doptimize=ReleaseFast

- name: Remote benchmark integration
run: |
sudo prlimit --pid $$ --memlock=8388608:8388608
python3 bench/remote-smoke.py
3 changes: 3 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
# Changelog

## Unreleased
- Add configurable standalone `bench-server` build target and trusted-network remote benchmark protocol
- Account unique remote NON receipts/loss, isolate run leases, and load DTLS PSKs from bounded files
- Add per-client multi-thread CON windows; fix plain benchmark MID-wrap/duplicate accounting and startup errors
- Breaking: CON response APIs take caller-owned buffers; remove result allocation/deinit and sentinel flags
- Bound Block2 reassembly; correlate capacity failures and support local request cancellation
- Preserve Block2 tokens/handles, sort continuation options, and handle empty ACK/RST and separate replies
Expand Down
17 changes: 15 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -922,8 +922,8 @@ Log messages:
## Benchmarks

The included bench suite runs a matrix of scenarios grouped by transport
(Plain/DTLS) × type (NON/CON) × threads × payload size. NON throughput
is measured server-side via shared-memory counters; CON measures echo
(Plain/DTLS) × type (NON/CON) × threads × payload size. Embedded NON throughput
uses shared-memory counters; remote NON uses unique receipt accounting. CON measures echo
round-trip latency. Results vary by hardware — run on your own system:

```bash
Expand All @@ -940,6 +940,19 @@ workers synchronize after handshake/warmup and use one common wall interval
for successful CON response throughput. See [bounded response storage and
matched benchmarks](docs/CON_BUFFERS.md) and [the Zig 0.16 migration measurements](docs/ZIG_016_PERFORMANCE.md).

For two-machine testing, build the dedicated configurable server:

```sh
zig build bench-server -Doptimize=ReleaseFast
./zig-out/bin/bench-server --bind <server-wireguard-ip> --threads 8 --allocator smp
```

Connect with `--no-server --host <server-wireguard-ip>`. `--window` and
`--multi-window` configure per-client CON concurrency. The server supports bounded
NON receipt accounting, DTLS credential files, capacity/rate/affinity controls,
and one measurement lease at a time. Plain controls require a trusted network.
See [remote benchmark setup and accounting](docs/REMOTE_BENCHMARKS.md).

## Requirements

- Linux (io_uring support, kernel 5.13+ for multishot recvmsg)
Expand Down
Loading
Loading