From 126d02079d4c887ed27207e18637a2065c576077 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christoffer=20Vikstr=C3=B6m?= Date: Mon, 12 Oct 2026 20:47:08 +0200 Subject: [PATCH] fix: bound DTLS handshake maintenance --- bench/dtls-maintenance.py | 87 ++ docs/DTLS_MAINTENANCE.md | 89 ++ docs/DTLS_MAINTENANCE_PLAIN_RESULTS.json | 1024 +++++++++++++ docs/DTLS_MAINTENANCE_RESULTS.json | 1696 ++++++++++++++++++++++ src/Server.zig | 103 +- 5 files changed, 2997 insertions(+), 2 deletions(-) create mode 100644 bench/dtls-maintenance.py create mode 100644 docs/DTLS_MAINTENANCE.md create mode 100644 docs/DTLS_MAINTENANCE_PLAIN_RESULTS.json create mode 100644 docs/DTLS_MAINTENANCE_RESULTS.json diff --git a/bench/dtls-maintenance.py b/bench/dtls-maintenance.py new file mode 100644 index 0000000..bc17087 --- /dev/null +++ b/bench/dtls-maintenance.py @@ -0,0 +1,87 @@ +#!/usr/bin/env python3 +"""Compare original and fixed DTLS maintenance with identical benchmark clients.""" +import argparse +import hashlib +import json +import os +from pathlib import Path +import platform +import re +import signal +import statistics +import subprocess + +ANSI = re.compile(r"\x1b\[[0-9;]*[A-Za-z]") +ROW = re.compile(r"\b([14])T\s+(0|100|1000)B\s+([\d,]+)\s+([\d.]+|-)\s+([\d.]+|-)\s+([\d.]+|-)\s+([\d,]+)") + + +def run(command): + with subprocess.Popen(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE, + text=True, start_new_session=True) as process: + try: + stdout, stderr = process.communicate(timeout=120) + except BaseException: + try: + os.killpg(process.pid, signal.SIGTERM) + process.communicate(timeout=5) + except subprocess.TimeoutExpired: + os.killpg(process.pid, signal.SIGKILL) + process.communicate() + except ProcessLookupError: + pass + raise + if process.returncode: + raise RuntimeError(stdout + stderr) + return ANSI.sub("", stdout + stderr) + + +def main(): + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument("baseline", type=Path) + parser.add_argument("fixed", type=Path) + parser.add_argument("--output", type=Path, required=True) + parser.add_argument("--count", type=int, default=300000) + parser.add_argument("--repetitions", type=int, default=5) + parser.add_argument("--plain", action="store_true", help="Plain CON control instead of DTLS") + args = parser.parse_args() + if min(args.count, args.repetitions) <= 0: + parser.error("counts must be positive") + binaries = {key: value.resolve() for key, value in (("baseline", args.baseline), ("fixed", args.fixed))} + data = {"machine": platform.platform(), "zig": subprocess.check_output(["zig", "version"], text=True).strip(), + "binary_sha256": {key: hashlib.sha256(path.read_bytes()).hexdigest() for key, path in binaries.items()}, + "count": args.count, "warmup": 1000, "single_window": 32, "multi_window_per_worker": 64, + "transport": "plain" if args.plain else "dtls", "repetitions": args.repetitions, "samples": []} + args.output.parent.mkdir(parents=True, exist_ok=True) + for threads in (1, 4): + for payload in (0, 100, 1000): + for repeat in range(args.repetitions): + order = ("baseline", "fixed") if repeat % 2 == 0 else ("fixed", "baseline") + for backend in order: + command = [str(binaries[backend]), "--plain-only" if args.plain else "--dtls-only", "--con-only", + "--single-only" if threads == 1 else "--multi-only", "--threads", "4", + "--window", "32", "--payload-only", str(payload), "--count", str(args.count), "--warmup", "1000"] + output = run(command) + matches = list(ROW.finditer(output)) + if len(matches) != 1: + raise RuntimeError(output) + values = matches[0].groups() + rps, errors = int(values[2].replace(",", "")), int(values[6].replace(",", "")) + if (int(values[0]), int(values[1])) != (threads, payload) or not rps or errors: + raise RuntimeError(f"Invalid or failed benchmark: {output}") + sample = dict(backend=backend, threads=threads, payload=payload, repeat=repeat, + rps=rps, p50_us=float(values[3].replace("-", "0")), + p99_us=float(values[4].replace("-", "0")), p999_us=float(values[5].replace("-", "0")), + errors=errors, command=command, output=output) + data["samples"].append(sample) + args.output.write_text(json.dumps(data, indent=2) + "\n") + print(f"{backend:8} {threads}T {payload:4}B run {repeat + 1}: {rps:,} req/s", flush=True) + print("\nArithmetic means:") + for threads in (1, 4): + for payload in (0, 100, 1000): + means = {key: statistics.mean(s["rps"] for s in data["samples"] + if (s["backend"], s["threads"], s["payload"]) == (key, threads, payload)) for key in binaries} + print(f"{threads}T {payload:4}B: {means['baseline']:,.0f} -> {means['fixed']:,.0f} ({means['fixed']/means['baseline']:.3f}x)") + + +if __name__ == "__main__": + main() diff --git a/docs/DTLS_MAINTENANCE.md b/docs/DTLS_MAINTENANCE.md new file mode 100644 index 0000000..8d68940 --- /dev/null +++ b/docs/DTLS_MAINTENANCE.md @@ -0,0 +1,89 @@ +# DTLS handshake maintenance fix + +Baseline: `39c42dc` (unmodified original implementation). Fixed version uses the +same benchmark, crypto, client pipeline, capacity and socket settings. This is +not the Zio experiment and changes no public API or configured limits. + +## Cause and fix + +`Server.tick()` called `checkDtlsRetransmits()` after every completion batch. +That loop visited all 65,536 allocated capacity slots even with one established +session and no pending handshake. A one-million-request profile attributed +70.2% of combined client/server sampled user CPU to that state check. + +The fix checks at most once per 50ms using the existing idle tick wakeups and +walks the existing live-session LRU chain, not free capacity. Only handshaking +sessions with cached flights can retransmit. The successor is saved before +release so timeouts can unlink head/interior/tail nodes safely. The cadence +adds up to one check interval plus existing tick processing/wakeup latency; +handshake retry counts, cached bytes and exponential-backoff limits are unchanged. + +No capacity reduction, new collection, allocation or thread was introduced. + +## Tests + +183/183 tests pass in Debug and ReleaseSafe. ReleaseFast library, examples and +benchmark build. New regressions cover expired head/tail removal, established +sessions with cached flights, slot reuse, empty live lists, cadence boundaries, +uncached handshakes, retransmission bytes and capped exponential backoff. + +## Throughput + +AMD Ryzen AI MAX+ 395, Linux 7.1.11-arch1-1, Zig 0.16.0, ReleaseFast. +Each DTLS scenario: 300,000 measured requests, 1,000 warmup, five repetitions, +alternating original/fixed execution order, one new embedded server per run. +Single-worker window 32; four-worker window 64 per worker. All runs report +nonzero throughput and zero errors. Arithmetic means, requests/second: + +| Workers | Payload | Original | Fixed | Change | +|---:|---:|---:|---:|---:| +| 1 | 0 | 183,498 | 182,031 | -0.8% | +| 1 | 100 | 176,570 | 177,729 | +0.7% | +| 1 | 1000 | 144,206 | 147,581 | +2.3% | +| 4 | 0 | 139,873 | 158,603 | +13.4% | +| 4 | 100 | 140,281 | 150,623 | +7.4% | +| 4 | 1000 | 154,925 | 178,363 | +15.1% | + +Across all payloads, means improve **0.6% single-worker** and **12.1% +four-worker**. There is no demonstrated 2x throughput gain from this fix alone. + +An additional 36-run plain-CON control (100,000 requests, three repetitions) +changes aggregate mean throughput by +0.3% single-worker and -0.3% four-worker. +Individual short multi-worker measurements vary substantially; no statistical +significance is claimed for those small aggregate differences. + +## Follow-up profile + +Same 100-byte, window-32 workload, one million measured requests. Sampling uses +`perf record -m 1 -e cpu-clock -F 499 -g`; small perf buffers avoid exhausting +locked-memory resources needed by io_uring. Invalid zero-throughput profiling +attempts were discarded, never treated as successful runs. + +After the fix, `Server.tick` accounts for 8.7% of sampled user CPU; the old +capacity-scan hotspot is absent. Combined sampled user CPU event count fell +from approximately 4.81 to 2.39 CPU-seconds. A separate `perf stat` pair reported +user CPU 4.48 -> 2.24 seconds, while wall time was 6.20 -> 5.98 seconds. These +single profiling pairs include setup/warmup and are diagnostic, not repeated +performance estimates. System CPU remained substantial. + +The next large user-space hotspot is `memset` (34.8%), with CCM authentication +14.4%. Removing the full-capacity scan saves CPU but does not eliminate the +original client/I/O/remaining tick costs. The previous Zio whole-system speed +gap must not be attributed exclusively to this loop. + +## Reproduction + +Build the original and fixed checkouts with `zig build -Doptimize=ReleaseFast`. +From the fixed checkout: + +```sh +python3 bench/dtls-maintenance.py ../zio-baseline/zig-out/bin/bench \ + zig-out/bin/bench --output docs/DTLS_MAINTENANCE_RESULTS.json +python3 bench/dtls-maintenance.py ../zio-baseline/zig-out/bin/bench \ + zig-out/bin/bench --plain --count 100000 --repetitions 3 \ + --output docs/DTLS_MAINTENANCE_PLAIN_RESULTS.json +``` + +Raw JSON includes executable SHA-256, every command/output and latency +percentiles. The harness rejects zero throughput, errors or wrong scenarios +and cleans isolated process groups on interruption/timeout. diff --git a/docs/DTLS_MAINTENANCE_PLAIN_RESULTS.json b/docs/DTLS_MAINTENANCE_PLAIN_RESULTS.json new file mode 100644 index 0000000..c31ae7e --- /dev/null +++ b/docs/DTLS_MAINTENANCE_PLAIN_RESULTS.json @@ -0,0 +1,1024 @@ +{ + "machine": "Linux-7.1.11-arch1-1-x86_64-with-glibc2.44", + "zig": "0.16.0", + "binary_sha256": { + "baseline": "bf7d452c487f3131bef7de06cc84dc042bd25d371fe9d2c7c9896f7a5cb5d4f1", + "fixed": "295fe2a7ef4ed0765e1f07e1a836111d49a8e9f3e4efe4e02dc05edec1ec9679" + }, + "count": 100000, + "warmup": 1000, + "single_window": 32, + "multi_window_per_worker": 64, + "transport": "plain", + "repetitions": 3, + "samples": [ + { + "backend": "baseline", + "threads": 1, + "payload": 0, + "repeat": 0, + "rps": 634538, + "p50_us": 54.1, + "p99_us": 120.6, + "p999_us": 185.7, + "errors": 0, + "command": [ + "/home/cvi/projects/coap/.worktrees/zio-baseline/zig-out/bin/bench", + "--plain-only", + "--con-only", + "--single-only", + "--threads", + "4", + "--window", + "32", + "--payload-only", + "0", + "--count", + "100000", + "--warmup", + "1000" + ], + "output": "\u2500\u2500 benchmark suite \u2500\u2500\n\n host 127.0.0.1:5683\n threads 4 (single: 1, multi: 4)\n server bufs 512 \u00d7 1280B\n client window 32 (1T), 64 (multi)\n warmup 1,000\n requests 100,000\n\n\n [1/1] Plain CON 1T 0B ...\n\u2500\u2500 results (4 CPUs) \u2500\u2500\n\n Scenarios\n \u2514\u2500 Plain\n \u2514\u2500 CON req/s p50 \u00b5s p99 \u00b5s p99.9 \u00b5s errs\n \u2514\u2500 1T 0B 634,538 54.1 120.6 185.7 0\n\n" + }, + { + "backend": "fixed", + "threads": 1, + "payload": 0, + "repeat": 0, + "rps": 626209, + "p50_us": 54.4, + "p99_us": 120.7, + "p999_us": 206.1, + "errors": 0, + "command": [ + "/home/cvi/projects/coap/.worktrees/dtls-maintenance/zig-out/bin/bench", + "--plain-only", + "--con-only", + "--single-only", + "--threads", + "4", + "--window", + "32", + "--payload-only", + "0", + "--count", + "100000", + "--warmup", + "1000" + ], + "output": "\u2500\u2500 benchmark suite \u2500\u2500\n\n host 127.0.0.1:5683\n threads 4 (single: 1, multi: 4)\n server bufs 512 \u00d7 1280B\n client window 32 (1T), 64 (multi)\n warmup 1,000\n requests 100,000\n\n\n [1/1] Plain CON 1T 0B ...\n\u2500\u2500 results (4 CPUs) \u2500\u2500\n\n Scenarios\n \u2514\u2500 Plain\n \u2514\u2500 CON req/s p50 \u00b5s p99 \u00b5s p99.9 \u00b5s errs\n \u2514\u2500 1T 0B 626,209 54.4 120.7 206.1 0\n\n" + }, + { + "backend": "fixed", + "threads": 1, + "payload": 0, + "repeat": 1, + "rps": 739806, + "p50_us": 40.3, + "p99_us": 90.5, + "p999_us": 134.0, + "errors": 0, + "command": [ + "/home/cvi/projects/coap/.worktrees/dtls-maintenance/zig-out/bin/bench", + "--plain-only", + "--con-only", + "--single-only", + "--threads", + "4", + "--window", + "32", + "--payload-only", + "0", + "--count", + "100000", + "--warmup", + "1000" + ], + "output": "\u2500\u2500 benchmark suite \u2500\u2500\n\n host 127.0.0.1:5683\n threads 4 (single: 1, multi: 4)\n server bufs 512 \u00d7 1280B\n client window 32 (1T), 64 (multi)\n warmup 1,000\n requests 100,000\n\n\n [1/1] Plain CON 1T 0B ...\n\u2500\u2500 results (4 CPUs) \u2500\u2500\n\n Scenarios\n \u2514\u2500 Plain\n \u2514\u2500 CON req/s p50 \u00b5s p99 \u00b5s p99.9 \u00b5s errs\n \u2514\u2500 1T 0B 739,806 40.3 90.5 134.0 0\n\n" + }, + { + "backend": "baseline", + "threads": 1, + "payload": 0, + "repeat": 1, + "rps": 750199, + "p50_us": 39.9, + "p99_us": 62.4, + "p999_us": 172.5, + "errors": 0, + "command": [ + "/home/cvi/projects/coap/.worktrees/zio-baseline/zig-out/bin/bench", + "--plain-only", + "--con-only", + "--single-only", + "--threads", + "4", + "--window", + "32", + "--payload-only", + "0", + "--count", + "100000", + "--warmup", + "1000" + ], + "output": "\u2500\u2500 benchmark suite \u2500\u2500\n\n host 127.0.0.1:5683\n threads 4 (single: 1, multi: 4)\n server bufs 512 \u00d7 1280B\n client window 32 (1T), 64 (multi)\n warmup 1,000\n requests 100,000\n\n\n [1/1] Plain CON 1T 0B ...\n\u2500\u2500 results (4 CPUs) \u2500\u2500\n\n Scenarios\n \u2514\u2500 Plain\n \u2514\u2500 CON req/s p50 \u00b5s p99 \u00b5s p99.9 \u00b5s errs\n \u2514\u2500 1T 0B 750,199 39.9 62.4 172.5 0\n\n" + }, + { + "backend": "baseline", + "threads": 1, + "payload": 0, + "repeat": 2, + "rps": 775771, + "p50_us": 39.7, + "p99_us": 63.8, + "p999_us": 139.6, + "errors": 0, + "command": [ + "/home/cvi/projects/coap/.worktrees/zio-baseline/zig-out/bin/bench", + "--plain-only", + "--con-only", + "--single-only", + "--threads", + "4", + "--window", + "32", + "--payload-only", + "0", + "--count", + "100000", + "--warmup", + "1000" + ], + "output": "\u2500\u2500 benchmark suite \u2500\u2500\n\n host 127.0.0.1:5683\n threads 4 (single: 1, multi: 4)\n server bufs 512 \u00d7 1280B\n client window 32 (1T), 64 (multi)\n warmup 1,000\n requests 100,000\n\n\n [1/1] Plain CON 1T 0B ...\n\u2500\u2500 results (4 CPUs) \u2500\u2500\n\n Scenarios\n \u2514\u2500 Plain\n \u2514\u2500 CON req/s p50 \u00b5s p99 \u00b5s p99.9 \u00b5s errs\n \u2514\u2500 1T 0B 775,771 39.7 63.8 139.6 0\n\n" + }, + { + "backend": "fixed", + "threads": 1, + "payload": 0, + "repeat": 2, + "rps": 779143, + "p50_us": 38.7, + "p99_us": 88.5, + "p999_us": 158.7, + "errors": 0, + "command": [ + "/home/cvi/projects/coap/.worktrees/dtls-maintenance/zig-out/bin/bench", + "--plain-only", + "--con-only", + "--single-only", + "--threads", + "4", + "--window", + "32", + "--payload-only", + "0", + "--count", + "100000", + "--warmup", + "1000" + ], + "output": "\u2500\u2500 benchmark suite \u2500\u2500\n\n host 127.0.0.1:5683\n threads 4 (single: 1, multi: 4)\n server bufs 512 \u00d7 1280B\n client window 32 (1T), 64 (multi)\n warmup 1,000\n requests 100,000\n\n\n [1/1] Plain CON 1T 0B ...\n\u2500\u2500 results (4 CPUs) \u2500\u2500\n\n Scenarios\n \u2514\u2500 Plain\n \u2514\u2500 CON req/s p50 \u00b5s p99 \u00b5s p99.9 \u00b5s errs\n \u2514\u2500 1T 0B 779,143 38.7 88.5 158.7 0\n\n" + }, + { + "backend": "baseline", + "threads": 1, + "payload": 100, + "repeat": 0, + "rps": 766503, + "p50_us": 39.4, + "p99_us": 89.9, + "p999_us": 124.0, + "errors": 0, + "command": [ + "/home/cvi/projects/coap/.worktrees/zio-baseline/zig-out/bin/bench", + "--plain-only", + "--con-only", + "--single-only", + "--threads", + "4", + "--window", + "32", + "--payload-only", + "100", + "--count", + "100000", + "--warmup", + "1000" + ], + "output": "\u2500\u2500 benchmark suite \u2500\u2500\n\n host 127.0.0.1:5683\n threads 4 (single: 1, multi: 4)\n server bufs 512 \u00d7 1280B\n client window 32 (1T), 64 (multi)\n warmup 1,000\n requests 100,000\n\n\n [1/1] Plain CON 1T 100B ...\n\u2500\u2500 results (4 CPUs) \u2500\u2500\n\n Scenarios\n \u2514\u2500 Plain\n \u2514\u2500 CON req/s p50 \u00b5s p99 \u00b5s p99.9 \u00b5s errs\n \u2514\u2500 1T 100B 766,503 39.4 89.9 124.0 0\n\n" + }, + { + "backend": "fixed", + "threads": 1, + "payload": 100, + "repeat": 0, + "rps": 770712, + "p50_us": 39.9, + "p99_us": 61.6, + "p999_us": 105.0, + "errors": 0, + "command": [ + "/home/cvi/projects/coap/.worktrees/dtls-maintenance/zig-out/bin/bench", + "--plain-only", + "--con-only", + "--single-only", + "--threads", + "4", + "--window", + "32", + "--payload-only", + "100", + "--count", + "100000", + "--warmup", + "1000" + ], + "output": "\u2500\u2500 benchmark suite \u2500\u2500\n\n host 127.0.0.1:5683\n threads 4 (single: 1, multi: 4)\n server bufs 512 \u00d7 1280B\n client window 32 (1T), 64 (multi)\n warmup 1,000\n requests 100,000\n\n\n [1/1] Plain CON 1T 100B ...\n\u2500\u2500 results (4 CPUs) \u2500\u2500\n\n Scenarios\n \u2514\u2500 Plain\n \u2514\u2500 CON req/s p50 \u00b5s p99 \u00b5s p99.9 \u00b5s errs\n \u2514\u2500 1T 100B 770,712 39.9 61.6 105.0 0\n\n" + }, + { + "backend": "fixed", + "threads": 1, + "payload": 100, + "repeat": 1, + "rps": 738471, + "p50_us": 40.3, + "p99_us": 90.5, + "p999_us": 121.6, + "errors": 0, + "command": [ + "/home/cvi/projects/coap/.worktrees/dtls-maintenance/zig-out/bin/bench", + "--plain-only", + "--con-only", + "--single-only", + "--threads", + "4", + "--window", + "32", + "--payload-only", + "100", + "--count", + "100000", + "--warmup", + "1000" + ], + "output": "\u2500\u2500 benchmark suite \u2500\u2500\n\n host 127.0.0.1:5683\n threads 4 (single: 1, multi: 4)\n server bufs 512 \u00d7 1280B\n client window 32 (1T), 64 (multi)\n warmup 1,000\n requests 100,000\n\n\n [1/1] Plain CON 1T 100B ...\n\u2500\u2500 results (4 CPUs) \u2500\u2500\n\n Scenarios\n \u2514\u2500 Plain\n \u2514\u2500 CON req/s p50 \u00b5s p99 \u00b5s p99.9 \u00b5s errs\n \u2514\u2500 1T 100B 738,471 40.3 90.5 121.6 0\n\n" + }, + { + "backend": "baseline", + "threads": 1, + "payload": 100, + "repeat": 1, + "rps": 782395, + "p50_us": 39.0, + "p99_us": 87.9, + "p999_us": 122.2, + "errors": 0, + "command": [ + "/home/cvi/projects/coap/.worktrees/zio-baseline/zig-out/bin/bench", + "--plain-only", + "--con-only", + "--single-only", + "--threads", + "4", + "--window", + "32", + "--payload-only", + "100", + "--count", + "100000", + "--warmup", + "1000" + ], + "output": "\u2500\u2500 benchmark suite \u2500\u2500\n\n host 127.0.0.1:5683\n threads 4 (single: 1, multi: 4)\n server bufs 512 \u00d7 1280B\n client window 32 (1T), 64 (multi)\n warmup 1,000\n requests 100,000\n\n\n [1/1] Plain CON 1T 100B ...\n\u2500\u2500 results (4 CPUs) \u2500\u2500\n\n Scenarios\n \u2514\u2500 Plain\n \u2514\u2500 CON req/s p50 \u00b5s p99 \u00b5s p99.9 \u00b5s errs\n \u2514\u2500 1T 100B 782,395 39.0 87.9 122.2 0\n\n" + }, + { + "backend": "baseline", + "threads": 1, + "payload": 100, + "repeat": 2, + "rps": 742662, + "p50_us": 39.8, + "p99_us": 117.6, + "p999_us": 187.2, + "errors": 0, + "command": [ + "/home/cvi/projects/coap/.worktrees/zio-baseline/zig-out/bin/bench", + "--plain-only", + "--con-only", + "--single-only", + "--threads", + "4", + "--window", + "32", + "--payload-only", + "100", + "--count", + "100000", + "--warmup", + "1000" + ], + "output": "\u2500\u2500 benchmark suite \u2500\u2500\n\n host 127.0.0.1:5683\n threads 4 (single: 1, multi: 4)\n server bufs 512 \u00d7 1280B\n client window 32 (1T), 64 (multi)\n warmup 1,000\n requests 100,000\n\n\n [1/1] Plain CON 1T 100B ...\n\u2500\u2500 results (4 CPUs) \u2500\u2500\n\n Scenarios\n \u2514\u2500 Plain\n \u2514\u2500 CON req/s p50 \u00b5s p99 \u00b5s p99.9 \u00b5s errs\n \u2514\u2500 1T 100B 742,662 39.8 117.6 187.2 0\n\n" + }, + { + "backend": "fixed", + "threads": 1, + "payload": 100, + "repeat": 2, + "rps": 722770, + "p50_us": 40.4, + "p99_us": 98.4, + "p999_us": 190.7, + "errors": 0, + "command": [ + "/home/cvi/projects/coap/.worktrees/dtls-maintenance/zig-out/bin/bench", + "--plain-only", + "--con-only", + "--single-only", + "--threads", + "4", + "--window", + "32", + "--payload-only", + "100", + "--count", + "100000", + "--warmup", + "1000" + ], + "output": "\u2500\u2500 benchmark suite \u2500\u2500\n\n host 127.0.0.1:5683\n threads 4 (single: 1, multi: 4)\n server bufs 512 \u00d7 1280B\n client window 32 (1T), 64 (multi)\n warmup 1,000\n requests 100,000\n\n\n [1/1] Plain CON 1T 100B ...\n\u2500\u2500 results (4 CPUs) \u2500\u2500\n\n Scenarios\n \u2514\u2500 Plain\n \u2514\u2500 CON req/s p50 \u00b5s p99 \u00b5s p99.9 \u00b5s errs\n \u2514\u2500 1T 100B 722,770 40.4 98.4 190.7 0\n\n" + }, + { + "backend": "baseline", + "threads": 1, + "payload": 1000, + "repeat": 0, + "rps": 686081, + "p50_us": 42.3, + "p99_us": 98.5, + "p999_us": 187.1, + "errors": 0, + "command": [ + "/home/cvi/projects/coap/.worktrees/zio-baseline/zig-out/bin/bench", + "--plain-only", + "--con-only", + "--single-only", + "--threads", + "4", + "--window", + "32", + "--payload-only", + "1000", + "--count", + "100000", + "--warmup", + "1000" + ], + "output": "\u2500\u2500 benchmark suite \u2500\u2500\n\n host 127.0.0.1:5683\n threads 4 (single: 1, multi: 4)\n server bufs 512 \u00d7 1280B\n client window 32 (1T), 64 (multi)\n warmup 1,000\n requests 100,000\n\n\n [1/1] Plain CON 1T 1000B ...\n\u2500\u2500 results (4 CPUs) \u2500\u2500\n\n Scenarios\n \u2514\u2500 Plain\n \u2514\u2500 CON req/s p50 \u00b5s p99 \u00b5s p99.9 \u00b5s errs\n \u2514\u2500 1T 1000B 686,081 42.3 98.5 187.1 0\n\n" + }, + { + "backend": "fixed", + "threads": 1, + "payload": 1000, + "repeat": 0, + "rps": 717781, + "p50_us": 41.5, + "p99_us": 98.7, + "p999_us": 148.0, + "errors": 0, + "command": [ + "/home/cvi/projects/coap/.worktrees/dtls-maintenance/zig-out/bin/bench", + "--plain-only", + "--con-only", + "--single-only", + "--threads", + "4", + "--window", + "32", + "--payload-only", + "1000", + "--count", + "100000", + "--warmup", + "1000" + ], + "output": "\u2500\u2500 benchmark suite \u2500\u2500\n\n host 127.0.0.1:5683\n threads 4 (single: 1, multi: 4)\n server bufs 512 \u00d7 1280B\n client window 32 (1T), 64 (multi)\n warmup 1,000\n requests 100,000\n\n\n [1/1] Plain CON 1T 1000B ...\n\u2500\u2500 results (4 CPUs) \u2500\u2500\n\n Scenarios\n \u2514\u2500 Plain\n \u2514\u2500 CON req/s p50 \u00b5s p99 \u00b5s p99.9 \u00b5s errs\n \u2514\u2500 1T 1000B 717,781 41.5 98.7 148.0 0\n\n" + }, + { + "backend": "fixed", + "threads": 1, + "payload": 1000, + "repeat": 1, + "rps": 732337, + "p50_us": 41.5, + "p99_us": 92.0, + "p999_us": 178.3, + "errors": 0, + "command": [ + "/home/cvi/projects/coap/.worktrees/dtls-maintenance/zig-out/bin/bench", + "--plain-only", + "--con-only", + "--single-only", + "--threads", + "4", + "--window", + "32", + "--payload-only", + "1000", + "--count", + "100000", + "--warmup", + "1000" + ], + "output": "\u2500\u2500 benchmark suite \u2500\u2500\n\n host 127.0.0.1:5683\n threads 4 (single: 1, multi: 4)\n server bufs 512 \u00d7 1280B\n client window 32 (1T), 64 (multi)\n warmup 1,000\n requests 100,000\n\n\n [1/1] Plain CON 1T 1000B ...\n\u2500\u2500 results (4 CPUs) \u2500\u2500\n\n Scenarios\n \u2514\u2500 Plain\n \u2514\u2500 CON req/s p50 \u00b5s p99 \u00b5s p99.9 \u00b5s errs\n \u2514\u2500 1T 1000B 732,337 41.5 92.0 178.3 0\n\n" + }, + { + "backend": "baseline", + "threads": 1, + "payload": 1000, + "repeat": 1, + "rps": 714763, + "p50_us": 41.6, + "p99_us": 90.9, + "p999_us": 163.1, + "errors": 0, + "command": [ + "/home/cvi/projects/coap/.worktrees/zio-baseline/zig-out/bin/bench", + "--plain-only", + "--con-only", + "--single-only", + "--threads", + "4", + "--window", + "32", + "--payload-only", + "1000", + "--count", + "100000", + "--warmup", + "1000" + ], + "output": "\u2500\u2500 benchmark suite \u2500\u2500\n\n host 127.0.0.1:5683\n threads 4 (single: 1, multi: 4)\n server bufs 512 \u00d7 1280B\n client window 32 (1T), 64 (multi)\n warmup 1,000\n requests 100,000\n\n\n [1/1] Plain CON 1T 1000B ...\n\u2500\u2500 results (4 CPUs) \u2500\u2500\n\n Scenarios\n \u2514\u2500 Plain\n \u2514\u2500 CON req/s p50 \u00b5s p99 \u00b5s p99.9 \u00b5s errs\n \u2514\u2500 1T 1000B 714,763 41.6 90.9 163.1 0\n\n" + }, + { + "backend": "baseline", + "threads": 1, + "payload": 1000, + "repeat": 2, + "rps": 661415, + "p50_us": 42.6, + "p99_us": 98.4, + "p999_us": 175.0, + "errors": 0, + "command": [ + "/home/cvi/projects/coap/.worktrees/zio-baseline/zig-out/bin/bench", + "--plain-only", + "--con-only", + "--single-only", + "--threads", + "4", + "--window", + "32", + "--payload-only", + "1000", + "--count", + "100000", + "--warmup", + "1000" + ], + "output": "\u2500\u2500 benchmark suite \u2500\u2500\n\n host 127.0.0.1:5683\n threads 4 (single: 1, multi: 4)\n server bufs 512 \u00d7 1280B\n client window 32 (1T), 64 (multi)\n warmup 1,000\n requests 100,000\n\n\n [1/1] Plain CON 1T 1000B ...\n\u2500\u2500 results (4 CPUs) \u2500\u2500\n\n Scenarios\n \u2514\u2500 Plain\n \u2514\u2500 CON req/s p50 \u00b5s p99 \u00b5s p99.9 \u00b5s errs\n \u2514\u2500 1T 1000B 661,415 42.6 98.4 175.0 0\n\n" + }, + { + "backend": "fixed", + "threads": 1, + "payload": 1000, + "repeat": 2, + "rps": 707965, + "p50_us": 41.8, + "p99_us": 109.4, + "p999_us": 153.8, + "errors": 0, + "command": [ + "/home/cvi/projects/coap/.worktrees/dtls-maintenance/zig-out/bin/bench", + "--plain-only", + "--con-only", + "--single-only", + "--threads", + "4", + "--window", + "32", + "--payload-only", + "1000", + "--count", + "100000", + "--warmup", + "1000" + ], + "output": "\u2500\u2500 benchmark suite \u2500\u2500\n\n host 127.0.0.1:5683\n threads 4 (single: 1, multi: 4)\n server bufs 512 \u00d7 1280B\n client window 32 (1T), 64 (multi)\n warmup 1,000\n requests 100,000\n\n\n [1/1] Plain CON 1T 1000B ...\n\u2500\u2500 results (4 CPUs) \u2500\u2500\n\n Scenarios\n \u2514\u2500 Plain\n \u2514\u2500 CON req/s p50 \u00b5s p99 \u00b5s p99.9 \u00b5s errs\n \u2514\u2500 1T 1000B 707,965 41.8 109.4 153.8 0\n\n" + }, + { + "backend": "baseline", + "threads": 4, + "payload": 0, + "repeat": 0, + "rps": 2114620, + "p50_us": 101.1, + "p99_us": 168.5, + "p999_us": 351.6, + "errors": 0, + "command": [ + "/home/cvi/projects/coap/.worktrees/zio-baseline/zig-out/bin/bench", + "--plain-only", + "--con-only", + "--multi-only", + "--threads", + "4", + "--window", + "32", + "--payload-only", + "0", + "--count", + "100000", + "--warmup", + "1000" + ], + "output": "\u2500\u2500 benchmark suite \u2500\u2500\n\n host 127.0.0.1:5683\n threads 4 (single: 1, multi: 4)\n server bufs 512 \u00d7 1280B\n client window 32 (1T), 64 (multi)\n warmup 1,000\n requests 100,000\n\n\n [1/1] Plain CON 4T 0B ...\n\u2500\u2500 results (4 CPUs) \u2500\u2500\n\n Scenarios\n \u2514\u2500 Plain\n \u2514\u2500 CON req/s p50 \u00b5s p99 \u00b5s p99.9 \u00b5s errs\n \u2514\u2500 4T 0B 2,114,620 101.1 168.5 351.6 0\n\n" + }, + { + "backend": "fixed", + "threads": 4, + "payload": 0, + "repeat": 0, + "rps": 1285300, + "p50_us": 155.5, + "p99_us": 252.7, + "p999_us": 347.6, + "errors": 0, + "command": [ + "/home/cvi/projects/coap/.worktrees/dtls-maintenance/zig-out/bin/bench", + "--plain-only", + "--con-only", + "--multi-only", + "--threads", + "4", + "--window", + "32", + "--payload-only", + "0", + "--count", + "100000", + "--warmup", + "1000" + ], + "output": "\u2500\u2500 benchmark suite \u2500\u2500\n\n host 127.0.0.1:5683\n threads 4 (single: 1, multi: 4)\n server bufs 512 \u00d7 1280B\n client window 32 (1T), 64 (multi)\n warmup 1,000\n requests 100,000\n\n\n [1/1] Plain CON 4T 0B ...\n\u2500\u2500 results (4 CPUs) \u2500\u2500\n\n Scenarios\n \u2514\u2500 Plain\n \u2514\u2500 CON req/s p50 \u00b5s p99 \u00b5s p99.9 \u00b5s errs\n \u2514\u2500 4T 0B 1,285,300 155.5 252.7 347.6 0\n\n" + }, + { + "backend": "fixed", + "threads": 4, + "payload": 0, + "repeat": 1, + "rps": 1421958, + "p50_us": 117.4, + "p99_us": 238.7, + "p999_us": 373.3, + "errors": 0, + "command": [ + "/home/cvi/projects/coap/.worktrees/dtls-maintenance/zig-out/bin/bench", + "--plain-only", + "--con-only", + "--multi-only", + "--threads", + "4", + "--window", + "32", + "--payload-only", + "0", + "--count", + "100000", + "--warmup", + "1000" + ], + "output": "\u2500\u2500 benchmark suite \u2500\u2500\n\n host 127.0.0.1:5683\n threads 4 (single: 1, multi: 4)\n server bufs 512 \u00d7 1280B\n client window 32 (1T), 64 (multi)\n warmup 1,000\n requests 100,000\n\n\n [1/1] Plain CON 4T 0B ...\n\u2500\u2500 results (4 CPUs) \u2500\u2500\n\n Scenarios\n \u2514\u2500 Plain\n \u2514\u2500 CON req/s p50 \u00b5s p99 \u00b5s p99.9 \u00b5s errs\n \u2514\u2500 4T 0B 1,421,958 117.4 238.7 373.3 0\n\n" + }, + { + "backend": "baseline", + "threads": 4, + "payload": 0, + "repeat": 1, + "rps": 1040089, + "p50_us": 216.5, + "p99_us": 268.0, + "p999_us": 306.9, + "errors": 0, + "command": [ + "/home/cvi/projects/coap/.worktrees/zio-baseline/zig-out/bin/bench", + "--plain-only", + "--con-only", + "--multi-only", + "--threads", + "4", + "--window", + "32", + "--payload-only", + "0", + "--count", + "100000", + "--warmup", + "1000" + ], + "output": "\u2500\u2500 benchmark suite \u2500\u2500\n\n host 127.0.0.1:5683\n threads 4 (single: 1, multi: 4)\n server bufs 512 \u00d7 1280B\n client window 32 (1T), 64 (multi)\n warmup 1,000\n requests 100,000\n\n\n [1/1] Plain CON 4T 0B ...\n\u2500\u2500 results (4 CPUs) \u2500\u2500\n\n Scenarios\n \u2514\u2500 Plain\n \u2514\u2500 CON req/s p50 \u00b5s p99 \u00b5s p99.9 \u00b5s errs\n \u2514\u2500 4T 0B 1,040,089 216.5 268.0 306.9 0\n\n" + }, + { + "backend": "baseline", + "threads": 4, + "payload": 0, + "repeat": 2, + "rps": 886543, + "p50_us": 285.3, + "p99_us": 323.7, + "p999_us": 370.7, + "errors": 0, + "command": [ + "/home/cvi/projects/coap/.worktrees/zio-baseline/zig-out/bin/bench", + "--plain-only", + "--con-only", + "--multi-only", + "--threads", + "4", + "--window", + "32", + "--payload-only", + "0", + "--count", + "100000", + "--warmup", + "1000" + ], + "output": "\u2500\u2500 benchmark suite \u2500\u2500\n\n host 127.0.0.1:5683\n threads 4 (single: 1, multi: 4)\n server bufs 512 \u00d7 1280B\n client window 32 (1T), 64 (multi)\n warmup 1,000\n requests 100,000\n\n\n [1/1] Plain CON 4T 0B ...\n\u2500\u2500 results (4 CPUs) \u2500\u2500\n\n Scenarios\n \u2514\u2500 Plain\n \u2514\u2500 CON req/s p50 \u00b5s p99 \u00b5s p99.9 \u00b5s errs\n \u2514\u2500 4T 0B 886,543 285.3 323.7 370.7 0\n\n" + }, + { + "backend": "fixed", + "threads": 4, + "payload": 0, + "repeat": 2, + "rps": 1408191, + "p50_us": 150.9, + "p99_us": 226.8, + "p999_us": 303.7, + "errors": 0, + "command": [ + "/home/cvi/projects/coap/.worktrees/dtls-maintenance/zig-out/bin/bench", + "--plain-only", + "--con-only", + "--multi-only", + "--threads", + "4", + "--window", + "32", + "--payload-only", + "0", + "--count", + "100000", + "--warmup", + "1000" + ], + "output": "\u2500\u2500 benchmark suite \u2500\u2500\n\n host 127.0.0.1:5683\n threads 4 (single: 1, multi: 4)\n server bufs 512 \u00d7 1280B\n client window 32 (1T), 64 (multi)\n warmup 1,000\n requests 100,000\n\n\n [1/1] Plain CON 4T 0B ...\n\u2500\u2500 results (4 CPUs) \u2500\u2500\n\n Scenarios\n \u2514\u2500 Plain\n \u2514\u2500 CON req/s p50 \u00b5s p99 \u00b5s p99.9 \u00b5s errs\n \u2514\u2500 4T 0B 1,408,191 150.9 226.8 303.7 0\n\n" + }, + { + "backend": "baseline", + "threads": 4, + "payload": 100, + "repeat": 0, + "rps": 1327030, + "p50_us": 144.9, + "p99_us": 247.8, + "p999_us": 393.2, + "errors": 0, + "command": [ + "/home/cvi/projects/coap/.worktrees/zio-baseline/zig-out/bin/bench", + "--plain-only", + "--con-only", + "--multi-only", + "--threads", + "4", + "--window", + "32", + "--payload-only", + "100", + "--count", + "100000", + "--warmup", + "1000" + ], + "output": "\u2500\u2500 benchmark suite \u2500\u2500\n\n host 127.0.0.1:5683\n threads 4 (single: 1, multi: 4)\n server bufs 512 \u00d7 1280B\n client window 32 (1T), 64 (multi)\n warmup 1,000\n requests 100,000\n\n\n [1/1] Plain CON 4T 100B ...\n\u2500\u2500 results (4 CPUs) \u2500\u2500\n\n Scenarios\n \u2514\u2500 Plain\n \u2514\u2500 CON req/s p50 \u00b5s p99 \u00b5s p99.9 \u00b5s errs\n \u2514\u2500 4T 100B 1,327,030 144.9 247.8 393.2 0\n\n" + }, + { + "backend": "fixed", + "threads": 4, + "payload": 100, + "repeat": 0, + "rps": 1501489, + "p50_us": 146.1, + "p99_us": 211.6, + "p999_us": 269.3, + "errors": 0, + "command": [ + "/home/cvi/projects/coap/.worktrees/dtls-maintenance/zig-out/bin/bench", + "--plain-only", + "--con-only", + "--multi-only", + "--threads", + "4", + "--window", + "32", + "--payload-only", + "100", + "--count", + "100000", + "--warmup", + "1000" + ], + "output": "\u2500\u2500 benchmark suite \u2500\u2500\n\n host 127.0.0.1:5683\n threads 4 (single: 1, multi: 4)\n server bufs 512 \u00d7 1280B\n client window 32 (1T), 64 (multi)\n warmup 1,000\n requests 100,000\n\n\n [1/1] Plain CON 4T 100B ...\n\u2500\u2500 results (4 CPUs) \u2500\u2500\n\n Scenarios\n \u2514\u2500 Plain\n \u2514\u2500 CON req/s p50 \u00b5s p99 \u00b5s p99.9 \u00b5s errs\n \u2514\u2500 4T 100B 1,501,489 146.1 211.6 269.3 0\n\n" + }, + { + "backend": "fixed", + "threads": 4, + "payload": 100, + "repeat": 1, + "rps": 2037770, + "p50_us": 86.6, + "p99_us": 182.8, + "p999_us": 310.3, + "errors": 0, + "command": [ + "/home/cvi/projects/coap/.worktrees/dtls-maintenance/zig-out/bin/bench", + "--plain-only", + "--con-only", + "--multi-only", + "--threads", + "4", + "--window", + "32", + "--payload-only", + "100", + "--count", + "100000", + "--warmup", + "1000" + ], + "output": "\u2500\u2500 benchmark suite \u2500\u2500\n\n host 127.0.0.1:5683\n threads 4 (single: 1, multi: 4)\n server bufs 512 \u00d7 1280B\n client window 32 (1T), 64 (multi)\n warmup 1,000\n requests 100,000\n\n\n [1/1] Plain CON 4T 100B ...\n\u2500\u2500 results (4 CPUs) \u2500\u2500\n\n Scenarios\n \u2514\u2500 Plain\n \u2514\u2500 CON req/s p50 \u00b5s p99 \u00b5s p99.9 \u00b5s errs\n \u2514\u2500 4T 100B 2,037,770 86.6 182.8 310.3 0\n\n" + }, + { + "backend": "baseline", + "threads": 4, + "payload": 100, + "repeat": 1, + "rps": 2104860, + "p50_us": 102.2, + "p99_us": 144.1, + "p999_us": 571.9, + "errors": 0, + "command": [ + "/home/cvi/projects/coap/.worktrees/zio-baseline/zig-out/bin/bench", + "--plain-only", + "--con-only", + "--multi-only", + "--threads", + "4", + "--window", + "32", + "--payload-only", + "100", + "--count", + "100000", + "--warmup", + "1000" + ], + "output": "\u2500\u2500 benchmark suite \u2500\u2500\n\n host 127.0.0.1:5683\n threads 4 (single: 1, multi: 4)\n server bufs 512 \u00d7 1280B\n client window 32 (1T), 64 (multi)\n warmup 1,000\n requests 100,000\n\n\n [1/1] Plain CON 4T 100B ...\n\u2500\u2500 results (4 CPUs) \u2500\u2500\n\n Scenarios\n \u2514\u2500 Plain\n \u2514\u2500 CON req/s p50 \u00b5s p99 \u00b5s p99.9 \u00b5s errs\n \u2514\u2500 4T 100B 2,104,860 102.2 144.1 571.9 0\n\n" + }, + { + "backend": "baseline", + "threads": 4, + "payload": 100, + "repeat": 2, + "rps": 1257050, + "p50_us": 158.4, + "p99_us": 240.7, + "p999_us": 644.7, + "errors": 0, + "command": [ + "/home/cvi/projects/coap/.worktrees/zio-baseline/zig-out/bin/bench", + "--plain-only", + "--con-only", + "--multi-only", + "--threads", + "4", + "--window", + "32", + "--payload-only", + "100", + "--count", + "100000", + "--warmup", + "1000" + ], + "output": "\u2500\u2500 benchmark suite \u2500\u2500\n\n host 127.0.0.1:5683\n threads 4 (single: 1, multi: 4)\n server bufs 512 \u00d7 1280B\n client window 32 (1T), 64 (multi)\n warmup 1,000\n requests 100,000\n\n\n [1/1] Plain CON 4T 100B ...\n\u2500\u2500 results (4 CPUs) \u2500\u2500\n\n Scenarios\n \u2514\u2500 Plain\n \u2514\u2500 CON req/s p50 \u00b5s p99 \u00b5s p99.9 \u00b5s errs\n \u2514\u2500 4T 100B 1,257,050 158.4 240.7 644.7 0\n\n" + }, + { + "backend": "fixed", + "threads": 4, + "payload": 100, + "repeat": 2, + "rps": 1356065, + "p50_us": 152.8, + "p99_us": 232.6, + "p999_us": 429.1, + "errors": 0, + "command": [ + "/home/cvi/projects/coap/.worktrees/dtls-maintenance/zig-out/bin/bench", + "--plain-only", + "--con-only", + "--multi-only", + "--threads", + "4", + "--window", + "32", + "--payload-only", + "100", + "--count", + "100000", + "--warmup", + "1000" + ], + "output": "\u2500\u2500 benchmark suite \u2500\u2500\n\n host 127.0.0.1:5683\n threads 4 (single: 1, multi: 4)\n server bufs 512 \u00d7 1280B\n client window 32 (1T), 64 (multi)\n warmup 1,000\n requests 100,000\n\n\n [1/1] Plain CON 4T 100B ...\n\u2500\u2500 results (4 CPUs) \u2500\u2500\n\n Scenarios\n \u2514\u2500 Plain\n \u2514\u2500 CON req/s p50 \u00b5s p99 \u00b5s p99.9 \u00b5s errs\n \u2514\u2500 4T 100B 1,356,065 152.8 232.6 429.1 0\n\n" + }, + { + "backend": "baseline", + "threads": 4, + "payload": 1000, + "repeat": 0, + "rps": 1376170, + "p50_us": 157.3, + "p99_us": 252.8, + "p999_us": 295.5, + "errors": 0, + "command": [ + "/home/cvi/projects/coap/.worktrees/zio-baseline/zig-out/bin/bench", + "--plain-only", + "--con-only", + "--multi-only", + "--threads", + "4", + "--window", + "32", + "--payload-only", + "1000", + "--count", + "100000", + "--warmup", + "1000" + ], + "output": "\u2500\u2500 benchmark suite \u2500\u2500\n\n host 127.0.0.1:5683\n threads 4 (single: 1, multi: 4)\n server bufs 512 \u00d7 1280B\n client window 32 (1T), 64 (multi)\n warmup 1,000\n requests 100,000\n\n\n [1/1] Plain CON 4T 1000B ...\n\u2500\u2500 results (4 CPUs) \u2500\u2500\n\n Scenarios\n \u2514\u2500 Plain\n \u2514\u2500 CON req/s p50 \u00b5s p99 \u00b5s p99.9 \u00b5s errs\n \u2514\u2500 4T 1000B 1,376,170 157.3 252.8 295.5 0\n\n" + }, + { + "backend": "fixed", + "threads": 4, + "payload": 1000, + "repeat": 0, + "rps": 1273058, + "p50_us": 134.9, + "p99_us": 275.7, + "p999_us": 515.0, + "errors": 0, + "command": [ + "/home/cvi/projects/coap/.worktrees/dtls-maintenance/zig-out/bin/bench", + "--plain-only", + "--con-only", + "--multi-only", + "--threads", + "4", + "--window", + "32", + "--payload-only", + "1000", + "--count", + "100000", + "--warmup", + "1000" + ], + "output": "\u2500\u2500 benchmark suite \u2500\u2500\n\n host 127.0.0.1:5683\n threads 4 (single: 1, multi: 4)\n server bufs 512 \u00d7 1280B\n client window 32 (1T), 64 (multi)\n warmup 1,000\n requests 100,000\n\n\n [1/1] Plain CON 4T 1000B ...\n\u2500\u2500 results (4 CPUs) \u2500\u2500\n\n Scenarios\n \u2514\u2500 Plain\n \u2514\u2500 CON req/s p50 \u00b5s p99 \u00b5s p99.9 \u00b5s errs\n \u2514\u2500 4T 1000B 1,273,058 134.9 275.7 515.0 0\n\n" + }, + { + "backend": "fixed", + "threads": 4, + "payload": 1000, + "repeat": 1, + "rps": 1368053, + "p50_us": 153.9, + "p99_us": 253.2, + "p999_us": 573.0, + "errors": 0, + "command": [ + "/home/cvi/projects/coap/.worktrees/dtls-maintenance/zig-out/bin/bench", + "--plain-only", + "--con-only", + "--multi-only", + "--threads", + "4", + "--window", + "32", + "--payload-only", + "1000", + "--count", + "100000", + "--warmup", + "1000" + ], + "output": "\u2500\u2500 benchmark suite \u2500\u2500\n\n host 127.0.0.1:5683\n threads 4 (single: 1, multi: 4)\n server bufs 512 \u00d7 1280B\n client window 32 (1T), 64 (multi)\n warmup 1,000\n requests 100,000\n\n\n [1/1] Plain CON 4T 1000B ...\n\u2500\u2500 results (4 CPUs) \u2500\u2500\n\n Scenarios\n \u2514\u2500 Plain\n \u2514\u2500 CON req/s p50 \u00b5s p99 \u00b5s p99.9 \u00b5s errs\n \u2514\u2500 4T 1000B 1,368,053 153.9 253.2 573.0 0\n\n" + }, + { + "backend": "baseline", + "threads": 4, + "payload": 1000, + "repeat": 1, + "rps": 1287238, + "p50_us": 172.0, + "p99_us": 283.1, + "p999_us": 606.3, + "errors": 0, + "command": [ + "/home/cvi/projects/coap/.worktrees/zio-baseline/zig-out/bin/bench", + "--plain-only", + "--con-only", + "--multi-only", + "--threads", + "4", + "--window", + "32", + "--payload-only", + "1000", + "--count", + "100000", + "--warmup", + "1000" + ], + "output": "\u2500\u2500 benchmark suite \u2500\u2500\n\n host 127.0.0.1:5683\n threads 4 (single: 1, multi: 4)\n server bufs 512 \u00d7 1280B\n client window 32 (1T), 64 (multi)\n warmup 1,000\n requests 100,000\n\n\n [1/1] Plain CON 4T 1000B ...\n\u2500\u2500 results (4 CPUs) \u2500\u2500\n\n Scenarios\n \u2514\u2500 Plain\n \u2514\u2500 CON req/s p50 \u00b5s p99 \u00b5s p99.9 \u00b5s errs\n \u2514\u2500 4T 1000B 1,287,238 172.0 283.1 606.3 0\n\n" + }, + { + "backend": "baseline", + "threads": 4, + "payload": 1000, + "repeat": 2, + "rps": 1286225, + "p50_us": 125.7, + "p99_us": 229.9, + "p999_us": 266.5, + "errors": 0, + "command": [ + "/home/cvi/projects/coap/.worktrees/zio-baseline/zig-out/bin/bench", + "--plain-only", + "--con-only", + "--multi-only", + "--threads", + "4", + "--window", + "32", + "--payload-only", + "1000", + "--count", + "100000", + "--warmup", + "1000" + ], + "output": "\u2500\u2500 benchmark suite \u2500\u2500\n\n host 127.0.0.1:5683\n threads 4 (single: 1, multi: 4)\n server bufs 512 \u00d7 1280B\n client window 32 (1T), 64 (multi)\n warmup 1,000\n requests 100,000\n\n\n [1/1] Plain CON 4T 1000B ...\n\u2500\u2500 results (4 CPUs) \u2500\u2500\n\n Scenarios\n \u2514\u2500 Plain\n \u2514\u2500 CON req/s p50 \u00b5s p99 \u00b5s p99.9 \u00b5s errs\n \u2514\u2500 4T 1000B 1,286,225 125.7 229.9 266.5 0\n\n" + }, + { + "backend": "fixed", + "threads": 4, + "payload": 1000, + "repeat": 2, + "rps": 995073, + "p50_us": 189.5, + "p99_us": 290.5, + "p999_us": 503.9, + "errors": 0, + "command": [ + "/home/cvi/projects/coap/.worktrees/dtls-maintenance/zig-out/bin/bench", + "--plain-only", + "--con-only", + "--multi-only", + "--threads", + "4", + "--window", + "32", + "--payload-only", + "1000", + "--count", + "100000", + "--warmup", + "1000" + ], + "output": "\u2500\u2500 benchmark suite \u2500\u2500\n\n host 127.0.0.1:5683\n threads 4 (single: 1, multi: 4)\n server bufs 512 \u00d7 1280B\n client window 32 (1T), 64 (multi)\n warmup 1,000\n requests 100,000\n\n\n [1/1] Plain CON 4T 1000B ...\n\u2500\u2500 results (4 CPUs) \u2500\u2500\n\n Scenarios\n \u2514\u2500 Plain\n \u2514\u2500 CON req/s p50 \u00b5s p99 \u00b5s p99.9 \u00b5s errs\n \u2514\u2500 4T 1000B 995,073 189.5 290.5 503.9 0\n\n" + } + ] +} diff --git a/docs/DTLS_MAINTENANCE_RESULTS.json b/docs/DTLS_MAINTENANCE_RESULTS.json new file mode 100644 index 0000000..1ca0cd1 --- /dev/null +++ b/docs/DTLS_MAINTENANCE_RESULTS.json @@ -0,0 +1,1696 @@ +{ + "machine": "Linux-7.1.11-arch1-1-x86_64-with-glibc2.44", + "zig": "0.16.0", + "binary_sha256": { + "baseline": "bf7d452c487f3131bef7de06cc84dc042bd25d371fe9d2c7c9896f7a5cb5d4f1", + "fixed": "295fe2a7ef4ed0765e1f07e1a836111d49a8e9f3e4efe4e02dc05edec1ec9679" + }, + "count": 300000, + "warmup": 1000, + "single_window": 32, + "multi_window_per_worker": 64, + "transport": "dtls", + "repetitions": 5, + "samples": [ + { + "backend": "baseline", + "threads": 1, + "payload": 0, + "repeat": 0, + "rps": 182795, + "p50_us": 160.9, + "p99_us": 468.2, + "p999_us": 1101.4, + "errors": 0, + "command": [ + "/home/cvi/projects/coap/.worktrees/zio-baseline/zig-out/bin/bench", + "--dtls-only", + "--con-only", + "--single-only", + "--threads", + "4", + "--window", + "32", + "--payload-only", + "0", + "--count", + "300000", + "--warmup", + "1000" + ], + "output": "\u2500\u2500 benchmark suite \u2500\u2500\n\n host 127.0.0.1:5683\n threads 4 (single: 1, multi: 4)\n server bufs 512 \u00d7 1280B\n client window 32 (1T), 64 (multi)\n warmup 1,000\n requests 300,000\n\n\n [1/1] DTLS CON 1T 0B ...\n\u2500\u2500 results (4 CPUs) \u2500\u2500\n\n Scenarios\n \u2514\u2500 DTLS\n \u2514\u2500 CON req/s p50 \u00b5s p99 \u00b5s p99.9 \u00b5s errs\n \u2514\u2500 1T 0B 182,795 160.9 468.2 1101.4 0\n\n" + }, + { + "backend": "fixed", + "threads": 1, + "payload": 0, + "repeat": 0, + "rps": 182054, + "p50_us": 158.8, + "p99_us": 533.7, + "p999_us": 1177.4, + "errors": 0, + "command": [ + "/home/cvi/projects/coap/.worktrees/dtls-maintenance/zig-out/bin/bench", + "--dtls-only", + "--con-only", + "--single-only", + "--threads", + "4", + "--window", + "32", + "--payload-only", + "0", + "--count", + "300000", + "--warmup", + "1000" + ], + "output": "\u2500\u2500 benchmark suite \u2500\u2500\n\n host 127.0.0.1:5683\n threads 4 (single: 1, multi: 4)\n server bufs 512 \u00d7 1280B\n client window 32 (1T), 64 (multi)\n warmup 1,000\n requests 300,000\n\n\n [1/1] DTLS CON 1T 0B ...\n\u2500\u2500 results (4 CPUs) \u2500\u2500\n\n Scenarios\n \u2514\u2500 DTLS\n \u2514\u2500 CON req/s p50 \u00b5s p99 \u00b5s p99.9 \u00b5s errs\n \u2514\u2500 1T 0B 182,054 158.8 533.7 1177.4 0\n\n" + }, + { + "backend": "fixed", + "threads": 1, + "payload": 0, + "repeat": 1, + "rps": 181020, + "p50_us": 158.8, + "p99_us": 642.1, + "p999_us": 1171.3, + "errors": 0, + "command": [ + "/home/cvi/projects/coap/.worktrees/dtls-maintenance/zig-out/bin/bench", + "--dtls-only", + "--con-only", + "--single-only", + "--threads", + "4", + "--window", + "32", + "--payload-only", + "0", + "--count", + "300000", + "--warmup", + "1000" + ], + "output": "\u2500\u2500 benchmark suite \u2500\u2500\n\n host 127.0.0.1:5683\n threads 4 (single: 1, multi: 4)\n server bufs 512 \u00d7 1280B\n client window 32 (1T), 64 (multi)\n warmup 1,000\n requests 300,000\n\n\n [1/1] DTLS CON 1T 0B ...\n\u2500\u2500 results (4 CPUs) \u2500\u2500\n\n Scenarios\n \u2514\u2500 DTLS\n \u2514\u2500 CON req/s p50 \u00b5s p99 \u00b5s p99.9 \u00b5s errs\n \u2514\u2500 1T 0B 181,020 158.8 642.1 1171.3 0\n\n" + }, + { + "backend": "baseline", + "threads": 1, + "payload": 0, + "repeat": 1, + "rps": 182260, + "p50_us": 160.4, + "p99_us": 470.9, + "p999_us": 1047.6, + "errors": 0, + "command": [ + "/home/cvi/projects/coap/.worktrees/zio-baseline/zig-out/bin/bench", + "--dtls-only", + "--con-only", + "--single-only", + "--threads", + "4", + "--window", + "32", + "--payload-only", + "0", + "--count", + "300000", + "--warmup", + "1000" + ], + "output": "\u2500\u2500 benchmark suite \u2500\u2500\n\n host 127.0.0.1:5683\n threads 4 (single: 1, multi: 4)\n server bufs 512 \u00d7 1280B\n client window 32 (1T), 64 (multi)\n warmup 1,000\n requests 300,000\n\n\n [1/1] DTLS CON 1T 0B ...\n\u2500\u2500 results (4 CPUs) \u2500\u2500\n\n Scenarios\n \u2514\u2500 DTLS\n \u2514\u2500 CON req/s p50 \u00b5s p99 \u00b5s p99.9 \u00b5s errs\n \u2514\u2500 1T 0B 182,260 160.4 470.9 1047.6 0\n\n" + }, + { + "backend": "baseline", + "threads": 1, + "payload": 0, + "repeat": 2, + "rps": 181926, + "p50_us": 159.0, + "p99_us": 548.1, + "p999_us": 958.6, + "errors": 0, + "command": [ + "/home/cvi/projects/coap/.worktrees/zio-baseline/zig-out/bin/bench", + "--dtls-only", + "--con-only", + "--single-only", + "--threads", + "4", + "--window", + "32", + "--payload-only", + "0", + "--count", + "300000", + "--warmup", + "1000" + ], + "output": "\u2500\u2500 benchmark suite \u2500\u2500\n\n host 127.0.0.1:5683\n threads 4 (single: 1, multi: 4)\n server bufs 512 \u00d7 1280B\n client window 32 (1T), 64 (multi)\n warmup 1,000\n requests 300,000\n\n\n [1/1] DTLS CON 1T 0B ...\n\u2500\u2500 results (4 CPUs) \u2500\u2500\n\n Scenarios\n \u2514\u2500 DTLS\n \u2514\u2500 CON req/s p50 \u00b5s p99 \u00b5s p99.9 \u00b5s errs\n \u2514\u2500 1T 0B 181,926 159.0 548.1 958.6 0\n\n" + }, + { + "backend": "fixed", + "threads": 1, + "payload": 0, + "repeat": 2, + "rps": 184519, + "p50_us": 156.0, + "p99_us": 594.0, + "p999_us": 1202.0, + "errors": 0, + "command": [ + "/home/cvi/projects/coap/.worktrees/dtls-maintenance/zig-out/bin/bench", + "--dtls-only", + "--con-only", + "--single-only", + "--threads", + "4", + "--window", + "32", + "--payload-only", + "0", + "--count", + "300000", + "--warmup", + "1000" + ], + "output": "\u2500\u2500 benchmark suite \u2500\u2500\n\n host 127.0.0.1:5683\n threads 4 (single: 1, multi: 4)\n server bufs 512 \u00d7 1280B\n client window 32 (1T), 64 (multi)\n warmup 1,000\n requests 300,000\n\n\n [1/1] DTLS CON 1T 0B ...\n\u2500\u2500 results (4 CPUs) \u2500\u2500\n\n Scenarios\n \u2514\u2500 DTLS\n \u2514\u2500 CON req/s p50 \u00b5s p99 \u00b5s p99.9 \u00b5s errs\n \u2514\u2500 1T 0B 184,519 156.0 594.0 1202.0 0\n\n" + }, + { + "backend": "fixed", + "threads": 1, + "payload": 0, + "repeat": 3, + "rps": 177227, + "p50_us": 164.3, + "p99_us": 554.3, + "p999_us": 1139.9, + "errors": 0, + "command": [ + "/home/cvi/projects/coap/.worktrees/dtls-maintenance/zig-out/bin/bench", + "--dtls-only", + "--con-only", + "--single-only", + "--threads", + "4", + "--window", + "32", + "--payload-only", + "0", + "--count", + "300000", + "--warmup", + "1000" + ], + "output": "\u2500\u2500 benchmark suite \u2500\u2500\n\n host 127.0.0.1:5683\n threads 4 (single: 1, multi: 4)\n server bufs 512 \u00d7 1280B\n client window 32 (1T), 64 (multi)\n warmup 1,000\n requests 300,000\n\n\n [1/1] DTLS CON 1T 0B ...\n\u2500\u2500 results (4 CPUs) \u2500\u2500\n\n Scenarios\n \u2514\u2500 DTLS\n \u2514\u2500 CON req/s p50 \u00b5s p99 \u00b5s p99.9 \u00b5s errs\n \u2514\u2500 1T 0B 177,227 164.3 554.3 1139.9 0\n\n" + }, + { + "backend": "baseline", + "threads": 1, + "payload": 0, + "repeat": 3, + "rps": 186987, + "p50_us": 156.0, + "p99_us": 531.4, + "p999_us": 982.0, + "errors": 0, + "command": [ + "/home/cvi/projects/coap/.worktrees/zio-baseline/zig-out/bin/bench", + "--dtls-only", + "--con-only", + "--single-only", + "--threads", + "4", + "--window", + "32", + "--payload-only", + "0", + "--count", + "300000", + "--warmup", + "1000" + ], + "output": "\u2500\u2500 benchmark suite \u2500\u2500\n\n host 127.0.0.1:5683\n threads 4 (single: 1, multi: 4)\n server bufs 512 \u00d7 1280B\n client window 32 (1T), 64 (multi)\n warmup 1,000\n requests 300,000\n\n\n [1/1] DTLS CON 1T 0B ...\n\u2500\u2500 results (4 CPUs) \u2500\u2500\n\n Scenarios\n \u2514\u2500 DTLS\n \u2514\u2500 CON req/s p50 \u00b5s p99 \u00b5s p99.9 \u00b5s errs\n \u2514\u2500 1T 0B 186,987 156.0 531.4 982.0 0\n\n" + }, + { + "backend": "baseline", + "threads": 1, + "payload": 0, + "repeat": 4, + "rps": 183523, + "p50_us": 159.1, + "p99_us": 550.1, + "p999_us": 985.0, + "errors": 0, + "command": [ + "/home/cvi/projects/coap/.worktrees/zio-baseline/zig-out/bin/bench", + "--dtls-only", + "--con-only", + "--single-only", + "--threads", + "4", + "--window", + "32", + "--payload-only", + "0", + "--count", + "300000", + "--warmup", + "1000" + ], + "output": "\u2500\u2500 benchmark suite \u2500\u2500\n\n host 127.0.0.1:5683\n threads 4 (single: 1, multi: 4)\n server bufs 512 \u00d7 1280B\n client window 32 (1T), 64 (multi)\n warmup 1,000\n requests 300,000\n\n\n [1/1] DTLS CON 1T 0B ...\n\u2500\u2500 results (4 CPUs) \u2500\u2500\n\n Scenarios\n \u2514\u2500 DTLS\n \u2514\u2500 CON req/s p50 \u00b5s p99 \u00b5s p99.9 \u00b5s errs\n \u2514\u2500 1T 0B 183,523 159.1 550.1 985.0 0\n\n" + }, + { + "backend": "fixed", + "threads": 1, + "payload": 0, + "repeat": 4, + "rps": 185337, + "p50_us": 155.6, + "p99_us": 558.1, + "p999_us": 1194.2, + "errors": 0, + "command": [ + "/home/cvi/projects/coap/.worktrees/dtls-maintenance/zig-out/bin/bench", + "--dtls-only", + "--con-only", + "--single-only", + "--threads", + "4", + "--window", + "32", + "--payload-only", + "0", + "--count", + "300000", + "--warmup", + "1000" + ], + "output": "\u2500\u2500 benchmark suite \u2500\u2500\n\n host 127.0.0.1:5683\n threads 4 (single: 1, multi: 4)\n server bufs 512 \u00d7 1280B\n client window 32 (1T), 64 (multi)\n warmup 1,000\n requests 300,000\n\n\n [1/1] DTLS CON 1T 0B ...\n\u2500\u2500 results (4 CPUs) \u2500\u2500\n\n Scenarios\n \u2514\u2500 DTLS\n \u2514\u2500 CON req/s p50 \u00b5s p99 \u00b5s p99.9 \u00b5s errs\n \u2514\u2500 1T 0B 185,337 155.6 558.1 1194.2 0\n\n" + }, + { + "backend": "baseline", + "threads": 1, + "payload": 100, + "repeat": 0, + "rps": 176710, + "p50_us": 165.3, + "p99_us": 570.9, + "p999_us": 902.2, + "errors": 0, + "command": [ + "/home/cvi/projects/coap/.worktrees/zio-baseline/zig-out/bin/bench", + "--dtls-only", + "--con-only", + "--single-only", + "--threads", + "4", + "--window", + "32", + "--payload-only", + "100", + "--count", + "300000", + "--warmup", + "1000" + ], + "output": "\u2500\u2500 benchmark suite \u2500\u2500\n\n host 127.0.0.1:5683\n threads 4 (single: 1, multi: 4)\n server bufs 512 \u00d7 1280B\n client window 32 (1T), 64 (multi)\n warmup 1,000\n requests 300,000\n\n\n [1/1] DTLS CON 1T 100B ...\n\u2500\u2500 results (4 CPUs) \u2500\u2500\n\n Scenarios\n \u2514\u2500 DTLS\n \u2514\u2500 CON req/s p50 \u00b5s p99 \u00b5s p99.9 \u00b5s errs\n \u2514\u2500 1T 100B 176,710 165.3 570.9 902.2 0\n\n" + }, + { + "backend": "fixed", + "threads": 1, + "payload": 100, + "repeat": 0, + "rps": 175255, + "p50_us": 163.8, + "p99_us": 551.5, + "p999_us": 1119.5, + "errors": 0, + "command": [ + "/home/cvi/projects/coap/.worktrees/dtls-maintenance/zig-out/bin/bench", + "--dtls-only", + "--con-only", + "--single-only", + "--threads", + "4", + "--window", + "32", + "--payload-only", + "100", + "--count", + "300000", + "--warmup", + "1000" + ], + "output": "\u2500\u2500 benchmark suite \u2500\u2500\n\n host 127.0.0.1:5683\n threads 4 (single: 1, multi: 4)\n server bufs 512 \u00d7 1280B\n client window 32 (1T), 64 (multi)\n warmup 1,000\n requests 300,000\n\n\n [1/1] DTLS CON 1T 100B ...\n\u2500\u2500 results (4 CPUs) \u2500\u2500\n\n Scenarios\n \u2514\u2500 DTLS\n \u2514\u2500 CON req/s p50 \u00b5s p99 \u00b5s p99.9 \u00b5s errs\n \u2514\u2500 1T 100B 175,255 163.8 551.5 1119.5 0\n\n" + }, + { + "backend": "fixed", + "threads": 1, + "payload": 100, + "repeat": 1, + "rps": 176762, + "p50_us": 163.2, + "p99_us": 544.9, + "p999_us": 1097.2, + "errors": 0, + "command": [ + "/home/cvi/projects/coap/.worktrees/dtls-maintenance/zig-out/bin/bench", + "--dtls-only", + "--con-only", + "--single-only", + "--threads", + "4", + "--window", + "32", + "--payload-only", + "100", + "--count", + "300000", + "--warmup", + "1000" + ], + "output": "\u2500\u2500 benchmark suite \u2500\u2500\n\n host 127.0.0.1:5683\n threads 4 (single: 1, multi: 4)\n server bufs 512 \u00d7 1280B\n client window 32 (1T), 64 (multi)\n warmup 1,000\n requests 300,000\n\n\n [1/1] DTLS CON 1T 100B ...\n\u2500\u2500 results (4 CPUs) \u2500\u2500\n\n Scenarios\n \u2514\u2500 DTLS\n \u2514\u2500 CON req/s p50 \u00b5s p99 \u00b5s p99.9 \u00b5s errs\n \u2514\u2500 1T 100B 176,762 163.2 544.9 1097.2 0\n\n" + }, + { + "backend": "baseline", + "threads": 1, + "payload": 100, + "repeat": 1, + "rps": 177154, + "p50_us": 164.4, + "p99_us": 544.2, + "p999_us": 911.4, + "errors": 0, + "command": [ + "/home/cvi/projects/coap/.worktrees/zio-baseline/zig-out/bin/bench", + "--dtls-only", + "--con-only", + "--single-only", + "--threads", + "4", + "--window", + "32", + "--payload-only", + "100", + "--count", + "300000", + "--warmup", + "1000" + ], + "output": "\u2500\u2500 benchmark suite \u2500\u2500\n\n host 127.0.0.1:5683\n threads 4 (single: 1, multi: 4)\n server bufs 512 \u00d7 1280B\n client window 32 (1T), 64 (multi)\n warmup 1,000\n requests 300,000\n\n\n [1/1] DTLS CON 1T 100B ...\n\u2500\u2500 results (4 CPUs) \u2500\u2500\n\n Scenarios\n \u2514\u2500 DTLS\n \u2514\u2500 CON req/s p50 \u00b5s p99 \u00b5s p99.9 \u00b5s errs\n \u2514\u2500 1T 100B 177,154 164.4 544.2 911.4 0\n\n" + }, + { + "backend": "baseline", + "threads": 1, + "payload": 100, + "repeat": 2, + "rps": 177403, + "p50_us": 165.0, + "p99_us": 541.4, + "p999_us": 906.3, + "errors": 0, + "command": [ + "/home/cvi/projects/coap/.worktrees/zio-baseline/zig-out/bin/bench", + "--dtls-only", + "--con-only", + "--single-only", + "--threads", + "4", + "--window", + "32", + "--payload-only", + "100", + "--count", + "300000", + "--warmup", + "1000" + ], + "output": "\u2500\u2500 benchmark suite \u2500\u2500\n\n host 127.0.0.1:5683\n threads 4 (single: 1, multi: 4)\n server bufs 512 \u00d7 1280B\n client window 32 (1T), 64 (multi)\n warmup 1,000\n requests 300,000\n\n\n [1/1] DTLS CON 1T 100B ...\n\u2500\u2500 results (4 CPUs) \u2500\u2500\n\n Scenarios\n \u2514\u2500 DTLS\n \u2514\u2500 CON req/s p50 \u00b5s p99 \u00b5s p99.9 \u00b5s errs\n \u2514\u2500 1T 100B 177,403 165.0 541.4 906.3 0\n\n" + }, + { + "backend": "fixed", + "threads": 1, + "payload": 100, + "repeat": 2, + "rps": 180385, + "p50_us": 159.5, + "p99_us": 581.0, + "p999_us": 1129.4, + "errors": 0, + "command": [ + "/home/cvi/projects/coap/.worktrees/dtls-maintenance/zig-out/bin/bench", + "--dtls-only", + "--con-only", + "--single-only", + "--threads", + "4", + "--window", + "32", + "--payload-only", + "100", + "--count", + "300000", + "--warmup", + "1000" + ], + "output": "\u2500\u2500 benchmark suite \u2500\u2500\n\n host 127.0.0.1:5683\n threads 4 (single: 1, multi: 4)\n server bufs 512 \u00d7 1280B\n client window 32 (1T), 64 (multi)\n warmup 1,000\n requests 300,000\n\n\n [1/1] DTLS CON 1T 100B ...\n\u2500\u2500 results (4 CPUs) \u2500\u2500\n\n Scenarios\n \u2514\u2500 DTLS\n \u2514\u2500 CON req/s p50 \u00b5s p99 \u00b5s p99.9 \u00b5s errs\n \u2514\u2500 1T 100B 180,385 159.5 581.0 1129.4 0\n\n" + }, + { + "backend": "fixed", + "threads": 1, + "payload": 100, + "repeat": 3, + "rps": 176056, + "p50_us": 163.3, + "p99_us": 516.9, + "p999_us": 1221.0, + "errors": 0, + "command": [ + "/home/cvi/projects/coap/.worktrees/dtls-maintenance/zig-out/bin/bench", + "--dtls-only", + "--con-only", + "--single-only", + "--threads", + "4", + "--window", + "32", + "--payload-only", + "100", + "--count", + "300000", + "--warmup", + "1000" + ], + "output": "\u2500\u2500 benchmark suite \u2500\u2500\n\n host 127.0.0.1:5683\n threads 4 (single: 1, multi: 4)\n server bufs 512 \u00d7 1280B\n client window 32 (1T), 64 (multi)\n warmup 1,000\n requests 300,000\n\n\n [1/1] DTLS CON 1T 100B ...\n\u2500\u2500 results (4 CPUs) \u2500\u2500\n\n Scenarios\n \u2514\u2500 DTLS\n \u2514\u2500 CON req/s p50 \u00b5s p99 \u00b5s p99.9 \u00b5s errs\n \u2514\u2500 1T 100B 176,056 163.3 516.9 1221.0 0\n\n" + }, + { + "backend": "baseline", + "threads": 1, + "payload": 100, + "repeat": 3, + "rps": 174635, + "p50_us": 166.7, + "p99_us": 561.7, + "p999_us": 922.7, + "errors": 0, + "command": [ + "/home/cvi/projects/coap/.worktrees/zio-baseline/zig-out/bin/bench", + "--dtls-only", + "--con-only", + "--single-only", + "--threads", + "4", + "--window", + "32", + "--payload-only", + "100", + "--count", + "300000", + "--warmup", + "1000" + ], + "output": "\u2500\u2500 benchmark suite \u2500\u2500\n\n host 127.0.0.1:5683\n threads 4 (single: 1, multi: 4)\n server bufs 512 \u00d7 1280B\n client window 32 (1T), 64 (multi)\n warmup 1,000\n requests 300,000\n\n\n [1/1] DTLS CON 1T 100B ...\n\u2500\u2500 results (4 CPUs) \u2500\u2500\n\n Scenarios\n \u2514\u2500 DTLS\n \u2514\u2500 CON req/s p50 \u00b5s p99 \u00b5s p99.9 \u00b5s errs\n \u2514\u2500 1T 100B 174,635 166.7 561.7 922.7 0\n\n" + }, + { + "backend": "baseline", + "threads": 1, + "payload": 100, + "repeat": 4, + "rps": 176949, + "p50_us": 166.9, + "p99_us": 540.2, + "p999_us": 1055.3, + "errors": 0, + "command": [ + "/home/cvi/projects/coap/.worktrees/zio-baseline/zig-out/bin/bench", + "--dtls-only", + "--con-only", + "--single-only", + "--threads", + "4", + "--window", + "32", + "--payload-only", + "100", + "--count", + "300000", + "--warmup", + "1000" + ], + "output": "\u2500\u2500 benchmark suite \u2500\u2500\n\n host 127.0.0.1:5683\n threads 4 (single: 1, multi: 4)\n server bufs 512 \u00d7 1280B\n client window 32 (1T), 64 (multi)\n warmup 1,000\n requests 300,000\n\n\n [1/1] DTLS CON 1T 100B ...\n\u2500\u2500 results (4 CPUs) \u2500\u2500\n\n Scenarios\n \u2514\u2500 DTLS\n \u2514\u2500 CON req/s p50 \u00b5s p99 \u00b5s p99.9 \u00b5s errs\n \u2514\u2500 1T 100B 176,949 166.9 540.2 1055.3 0\n\n" + }, + { + "backend": "fixed", + "threads": 1, + "payload": 100, + "repeat": 4, + "rps": 180188, + "p50_us": 160.6, + "p99_us": 641.3, + "p999_us": 1164.1, + "errors": 0, + "command": [ + "/home/cvi/projects/coap/.worktrees/dtls-maintenance/zig-out/bin/bench", + "--dtls-only", + "--con-only", + "--single-only", + "--threads", + "4", + "--window", + "32", + "--payload-only", + "100", + "--count", + "300000", + "--warmup", + "1000" + ], + "output": "\u2500\u2500 benchmark suite \u2500\u2500\n\n host 127.0.0.1:5683\n threads 4 (single: 1, multi: 4)\n server bufs 512 \u00d7 1280B\n client window 32 (1T), 64 (multi)\n warmup 1,000\n requests 300,000\n\n\n [1/1] DTLS CON 1T 100B ...\n\u2500\u2500 results (4 CPUs) \u2500\u2500\n\n Scenarios\n \u2514\u2500 DTLS\n \u2514\u2500 CON req/s p50 \u00b5s p99 \u00b5s p99.9 \u00b5s errs\n \u2514\u2500 1T 100B 180,188 160.6 641.3 1164.1 0\n\n" + }, + { + "backend": "baseline", + "threads": 1, + "payload": 1000, + "repeat": 0, + "rps": 144533, + "p50_us": 201.3, + "p99_us": 624.2, + "p999_us": 1036.9, + "errors": 0, + "command": [ + "/home/cvi/projects/coap/.worktrees/zio-baseline/zig-out/bin/bench", + "--dtls-only", + "--con-only", + "--single-only", + "--threads", + "4", + "--window", + "32", + "--payload-only", + "1000", + "--count", + "300000", + "--warmup", + "1000" + ], + "output": "\u2500\u2500 benchmark suite \u2500\u2500\n\n host 127.0.0.1:5683\n threads 4 (single: 1, multi: 4)\n server bufs 512 \u00d7 1280B\n client window 32 (1T), 64 (multi)\n warmup 1,000\n requests 300,000\n\n\n [1/1] DTLS CON 1T 1000B ...\n\u2500\u2500 results (4 CPUs) \u2500\u2500\n\n Scenarios\n \u2514\u2500 DTLS\n \u2514\u2500 CON req/s p50 \u00b5s p99 \u00b5s p99.9 \u00b5s errs\n \u2514\u2500 1T 1000B 144,533 201.3 624.2 1036.9 0\n\n" + }, + { + "backend": "fixed", + "threads": 1, + "payload": 1000, + "repeat": 0, + "rps": 148506, + "p50_us": 197.5, + "p99_us": 641.1, + "p999_us": 1109.5, + "errors": 0, + "command": [ + "/home/cvi/projects/coap/.worktrees/dtls-maintenance/zig-out/bin/bench", + "--dtls-only", + "--con-only", + "--single-only", + "--threads", + "4", + "--window", + "32", + "--payload-only", + "1000", + "--count", + "300000", + "--warmup", + "1000" + ], + "output": "\u2500\u2500 benchmark suite \u2500\u2500\n\n host 127.0.0.1:5683\n threads 4 (single: 1, multi: 4)\n server bufs 512 \u00d7 1280B\n client window 32 (1T), 64 (multi)\n warmup 1,000\n requests 300,000\n\n\n [1/1] DTLS CON 1T 1000B ...\n\u2500\u2500 results (4 CPUs) \u2500\u2500\n\n Scenarios\n \u2514\u2500 DTLS\n \u2514\u2500 CON req/s p50 \u00b5s p99 \u00b5s p99.9 \u00b5s errs\n \u2514\u2500 1T 1000B 148,506 197.5 641.1 1109.5 0\n\n" + }, + { + "backend": "fixed", + "threads": 1, + "payload": 1000, + "repeat": 1, + "rps": 148017, + "p50_us": 198.8, + "p99_us": 564.5, + "p999_us": 1055.6, + "errors": 0, + "command": [ + "/home/cvi/projects/coap/.worktrees/dtls-maintenance/zig-out/bin/bench", + "--dtls-only", + "--con-only", + "--single-only", + "--threads", + "4", + "--window", + "32", + "--payload-only", + "1000", + "--count", + "300000", + "--warmup", + "1000" + ], + "output": "\u2500\u2500 benchmark suite \u2500\u2500\n\n host 127.0.0.1:5683\n threads 4 (single: 1, multi: 4)\n server bufs 512 \u00d7 1280B\n client window 32 (1T), 64 (multi)\n warmup 1,000\n requests 300,000\n\n\n [1/1] DTLS CON 1T 1000B ...\n\u2500\u2500 results (4 CPUs) \u2500\u2500\n\n Scenarios\n \u2514\u2500 DTLS\n \u2514\u2500 CON req/s p50 \u00b5s p99 \u00b5s p99.9 \u00b5s errs\n \u2514\u2500 1T 1000B 148,017 198.8 564.5 1055.6 0\n\n" + }, + { + "backend": "baseline", + "threads": 1, + "payload": 1000, + "repeat": 1, + "rps": 143114, + "p50_us": 206.3, + "p99_us": 675.5, + "p999_us": 1136.4, + "errors": 0, + "command": [ + "/home/cvi/projects/coap/.worktrees/zio-baseline/zig-out/bin/bench", + "--dtls-only", + "--con-only", + "--single-only", + "--threads", + "4", + "--window", + "32", + "--payload-only", + "1000", + "--count", + "300000", + "--warmup", + "1000" + ], + "output": "\u2500\u2500 benchmark suite \u2500\u2500\n\n host 127.0.0.1:5683\n threads 4 (single: 1, multi: 4)\n server bufs 512 \u00d7 1280B\n client window 32 (1T), 64 (multi)\n warmup 1,000\n requests 300,000\n\n\n [1/1] DTLS CON 1T 1000B ...\n\u2500\u2500 results (4 CPUs) \u2500\u2500\n\n Scenarios\n \u2514\u2500 DTLS\n \u2514\u2500 CON req/s p50 \u00b5s p99 \u00b5s p99.9 \u00b5s errs\n \u2514\u2500 1T 1000B 143,114 206.3 675.5 1136.4 0\n\n" + }, + { + "backend": "baseline", + "threads": 1, + "payload": 1000, + "repeat": 2, + "rps": 145317, + "p50_us": 201.3, + "p99_us": 660.5, + "p999_us": 999.8, + "errors": 0, + "command": [ + "/home/cvi/projects/coap/.worktrees/zio-baseline/zig-out/bin/bench", + "--dtls-only", + "--con-only", + "--single-only", + "--threads", + "4", + "--window", + "32", + "--payload-only", + "1000", + "--count", + "300000", + "--warmup", + "1000" + ], + "output": "\u2500\u2500 benchmark suite \u2500\u2500\n\n host 127.0.0.1:5683\n threads 4 (single: 1, multi: 4)\n server bufs 512 \u00d7 1280B\n client window 32 (1T), 64 (multi)\n warmup 1,000\n requests 300,000\n\n\n [1/1] DTLS CON 1T 1000B ...\n\u2500\u2500 results (4 CPUs) \u2500\u2500\n\n Scenarios\n \u2514\u2500 DTLS\n \u2514\u2500 CON req/s p50 \u00b5s p99 \u00b5s p99.9 \u00b5s errs\n \u2514\u2500 1T 1000B 145,317 201.3 660.5 999.8 0\n\n" + }, + { + "backend": "fixed", + "threads": 1, + "payload": 1000, + "repeat": 2, + "rps": 147738, + "p50_us": 198.9, + "p99_us": 608.2, + "p999_us": 1116.1, + "errors": 0, + "command": [ + "/home/cvi/projects/coap/.worktrees/dtls-maintenance/zig-out/bin/bench", + "--dtls-only", + "--con-only", + "--single-only", + "--threads", + "4", + "--window", + "32", + "--payload-only", + "1000", + "--count", + "300000", + "--warmup", + "1000" + ], + "output": "\u2500\u2500 benchmark suite \u2500\u2500\n\n host 127.0.0.1:5683\n threads 4 (single: 1, multi: 4)\n server bufs 512 \u00d7 1280B\n client window 32 (1T), 64 (multi)\n warmup 1,000\n requests 300,000\n\n\n [1/1] DTLS CON 1T 1000B ...\n\u2500\u2500 results (4 CPUs) \u2500\u2500\n\n Scenarios\n \u2514\u2500 DTLS\n \u2514\u2500 CON req/s p50 \u00b5s p99 \u00b5s p99.9 \u00b5s errs\n \u2514\u2500 1T 1000B 147,738 198.9 608.2 1116.1 0\n\n" + }, + { + "backend": "fixed", + "threads": 1, + "payload": 1000, + "repeat": 3, + "rps": 147494, + "p50_us": 196.4, + "p99_us": 650.4, + "p999_us": 1060.1, + "errors": 0, + "command": [ + "/home/cvi/projects/coap/.worktrees/dtls-maintenance/zig-out/bin/bench", + "--dtls-only", + "--con-only", + "--single-only", + "--threads", + "4", + "--window", + "32", + "--payload-only", + "1000", + "--count", + "300000", + "--warmup", + "1000" + ], + "output": "\u2500\u2500 benchmark suite \u2500\u2500\n\n host 127.0.0.1:5683\n threads 4 (single: 1, multi: 4)\n server bufs 512 \u00d7 1280B\n client window 32 (1T), 64 (multi)\n warmup 1,000\n requests 300,000\n\n\n [1/1] DTLS CON 1T 1000B ...\n\u2500\u2500 results (4 CPUs) \u2500\u2500\n\n Scenarios\n \u2514\u2500 DTLS\n \u2514\u2500 CON req/s p50 \u00b5s p99 \u00b5s p99.9 \u00b5s errs\n \u2514\u2500 1T 1000B 147,494 196.4 650.4 1060.1 0\n\n" + }, + { + "backend": "baseline", + "threads": 1, + "payload": 1000, + "repeat": 3, + "rps": 143044, + "p50_us": 203.1, + "p99_us": 665.8, + "p999_us": 983.6, + "errors": 0, + "command": [ + "/home/cvi/projects/coap/.worktrees/zio-baseline/zig-out/bin/bench", + "--dtls-only", + "--con-only", + "--single-only", + "--threads", + "4", + "--window", + "32", + "--payload-only", + "1000", + "--count", + "300000", + "--warmup", + "1000" + ], + "output": "\u2500\u2500 benchmark suite \u2500\u2500\n\n host 127.0.0.1:5683\n threads 4 (single: 1, multi: 4)\n server bufs 512 \u00d7 1280B\n client window 32 (1T), 64 (multi)\n warmup 1,000\n requests 300,000\n\n\n [1/1] DTLS CON 1T 1000B ...\n\u2500\u2500 results (4 CPUs) \u2500\u2500\n\n Scenarios\n \u2514\u2500 DTLS\n \u2514\u2500 CON req/s p50 \u00b5s p99 \u00b5s p99.9 \u00b5s errs\n \u2514\u2500 1T 1000B 143,044 203.1 665.8 983.6 0\n\n" + }, + { + "backend": "baseline", + "threads": 1, + "payload": 1000, + "repeat": 4, + "rps": 145022, + "p50_us": 201.4, + "p99_us": 686.5, + "p999_us": 1024.1, + "errors": 0, + "command": [ + "/home/cvi/projects/coap/.worktrees/zio-baseline/zig-out/bin/bench", + "--dtls-only", + "--con-only", + "--single-only", + "--threads", + "4", + "--window", + "32", + "--payload-only", + "1000", + "--count", + "300000", + "--warmup", + "1000" + ], + "output": "\u2500\u2500 benchmark suite \u2500\u2500\n\n host 127.0.0.1:5683\n threads 4 (single: 1, multi: 4)\n server bufs 512 \u00d7 1280B\n client window 32 (1T), 64 (multi)\n warmup 1,000\n requests 300,000\n\n\n [1/1] DTLS CON 1T 1000B ...\n\u2500\u2500 results (4 CPUs) \u2500\u2500\n\n Scenarios\n \u2514\u2500 DTLS\n \u2514\u2500 CON req/s p50 \u00b5s p99 \u00b5s p99.9 \u00b5s errs\n \u2514\u2500 1T 1000B 145,022 201.4 686.5 1024.1 0\n\n" + }, + { + "backend": "fixed", + "threads": 1, + "payload": 1000, + "repeat": 4, + "rps": 146152, + "p50_us": 198.8, + "p99_us": 643.8, + "p999_us": 1080.1, + "errors": 0, + "command": [ + "/home/cvi/projects/coap/.worktrees/dtls-maintenance/zig-out/bin/bench", + "--dtls-only", + "--con-only", + "--single-only", + "--threads", + "4", + "--window", + "32", + "--payload-only", + "1000", + "--count", + "300000", + "--warmup", + "1000" + ], + "output": "\u2500\u2500 benchmark suite \u2500\u2500\n\n host 127.0.0.1:5683\n threads 4 (single: 1, multi: 4)\n server bufs 512 \u00d7 1280B\n client window 32 (1T), 64 (multi)\n warmup 1,000\n requests 300,000\n\n\n [1/1] DTLS CON 1T 1000B ...\n\u2500\u2500 results (4 CPUs) \u2500\u2500\n\n Scenarios\n \u2514\u2500 DTLS\n \u2514\u2500 CON req/s p50 \u00b5s p99 \u00b5s p99.9 \u00b5s errs\n \u2514\u2500 1T 1000B 146,152 198.8 643.8 1080.1 0\n\n" + }, + { + "backend": "baseline", + "threads": 4, + "payload": 0, + "repeat": 0, + "rps": 141626, + "p50_us": 1681.4, + "p99_us": 4470.6, + "p999_us": 5626.9, + "errors": 0, + "command": [ + "/home/cvi/projects/coap/.worktrees/zio-baseline/zig-out/bin/bench", + "--dtls-only", + "--con-only", + "--multi-only", + "--threads", + "4", + "--window", + "32", + "--payload-only", + "0", + "--count", + "300000", + "--warmup", + "1000" + ], + "output": "\u2500\u2500 benchmark suite \u2500\u2500\n\n host 127.0.0.1:5683\n threads 4 (single: 1, multi: 4)\n server bufs 512 \u00d7 1280B\n client window 32 (1T), 64 (multi)\n warmup 1,000\n requests 300,000\n\n\n [1/1] DTLS CON 4T 0B ...\n\u2500\u2500 results (4 CPUs) \u2500\u2500\n\n Scenarios\n \u2514\u2500 DTLS\n \u2514\u2500 CON req/s p50 \u00b5s p99 \u00b5s p99.9 \u00b5s errs\n \u2514\u2500 4T 0B 141,626 1681.4 4470.6 5626.9 0\n\n" + }, + { + "backend": "fixed", + "threads": 4, + "payload": 0, + "repeat": 0, + "rps": 155292, + "p50_us": 1718.2, + "p99_us": 3492.9, + "p999_us": 5490.3, + "errors": 0, + "command": [ + "/home/cvi/projects/coap/.worktrees/dtls-maintenance/zig-out/bin/bench", + "--dtls-only", + "--con-only", + "--multi-only", + "--threads", + "4", + "--window", + "32", + "--payload-only", + "0", + "--count", + "300000", + "--warmup", + "1000" + ], + "output": "\u2500\u2500 benchmark suite \u2500\u2500\n\n host 127.0.0.1:5683\n threads 4 (single: 1, multi: 4)\n server bufs 512 \u00d7 1280B\n client window 32 (1T), 64 (multi)\n warmup 1,000\n requests 300,000\n\n\n [1/1] DTLS CON 4T 0B ...\n\u2500\u2500 results (4 CPUs) \u2500\u2500\n\n Scenarios\n \u2514\u2500 DTLS\n \u2514\u2500 CON req/s p50 \u00b5s p99 \u00b5s p99.9 \u00b5s errs\n \u2514\u2500 4T 0B 155,292 1718.2 3492.9 5490.3 0\n\n" + }, + { + "backend": "fixed", + "threads": 4, + "payload": 0, + "repeat": 1, + "rps": 160208, + "p50_us": 1673.3, + "p99_us": 2963.3, + "p999_us": 4541.6, + "errors": 0, + "command": [ + "/home/cvi/projects/coap/.worktrees/dtls-maintenance/zig-out/bin/bench", + "--dtls-only", + "--con-only", + "--multi-only", + "--threads", + "4", + "--window", + "32", + "--payload-only", + "0", + "--count", + "300000", + "--warmup", + "1000" + ], + "output": "\u2500\u2500 benchmark suite \u2500\u2500\n\n host 127.0.0.1:5683\n threads 4 (single: 1, multi: 4)\n server bufs 512 \u00d7 1280B\n client window 32 (1T), 64 (multi)\n warmup 1,000\n requests 300,000\n\n\n [1/1] DTLS CON 4T 0B ...\n\u2500\u2500 results (4 CPUs) \u2500\u2500\n\n Scenarios\n \u2514\u2500 DTLS\n \u2514\u2500 CON req/s p50 \u00b5s p99 \u00b5s p99.9 \u00b5s errs\n \u2514\u2500 4T 0B 160,208 1673.3 2963.3 4541.6 0\n\n" + }, + { + "backend": "baseline", + "threads": 4, + "payload": 0, + "repeat": 1, + "rps": 140684, + "p50_us": 1715.9, + "p99_us": 4835.7, + "p999_us": 6627.3, + "errors": 0, + "command": [ + "/home/cvi/projects/coap/.worktrees/zio-baseline/zig-out/bin/bench", + "--dtls-only", + "--con-only", + "--multi-only", + "--threads", + "4", + "--window", + "32", + "--payload-only", + "0", + "--count", + "300000", + "--warmup", + "1000" + ], + "output": "\u2500\u2500 benchmark suite \u2500\u2500\n\n host 127.0.0.1:5683\n threads 4 (single: 1, multi: 4)\n server bufs 512 \u00d7 1280B\n client window 32 (1T), 64 (multi)\n warmup 1,000\n requests 300,000\n\n\n [1/1] DTLS CON 4T 0B ...\n\u2500\u2500 results (4 CPUs) \u2500\u2500\n\n Scenarios\n \u2514\u2500 DTLS\n \u2514\u2500 CON req/s p50 \u00b5s p99 \u00b5s p99.9 \u00b5s errs\n \u2514\u2500 4T 0B 140,684 1715.9 4835.7 6627.3 0\n\n" + }, + { + "backend": "baseline", + "threads": 4, + "payload": 0, + "repeat": 2, + "rps": 140154, + "p50_us": 1565.6, + "p99_us": 5272.4, + "p999_us": 6774.2, + "errors": 0, + "command": [ + "/home/cvi/projects/coap/.worktrees/zio-baseline/zig-out/bin/bench", + "--dtls-only", + "--con-only", + "--multi-only", + "--threads", + "4", + "--window", + "32", + "--payload-only", + "0", + "--count", + "300000", + "--warmup", + "1000" + ], + "output": "\u2500\u2500 benchmark suite \u2500\u2500\n\n host 127.0.0.1:5683\n threads 4 (single: 1, multi: 4)\n server bufs 512 \u00d7 1280B\n client window 32 (1T), 64 (multi)\n warmup 1,000\n requests 300,000\n\n\n [1/1] DTLS CON 4T 0B ...\n\u2500\u2500 results (4 CPUs) \u2500\u2500\n\n Scenarios\n \u2514\u2500 DTLS\n \u2514\u2500 CON req/s p50 \u00b5s p99 \u00b5s p99.9 \u00b5s errs\n \u2514\u2500 4T 0B 140,154 1565.6 5272.4 6774.2 0\n\n" + }, + { + "backend": "fixed", + "threads": 4, + "payload": 0, + "repeat": 2, + "rps": 165585, + "p50_us": 1675.8, + "p99_us": 3025.3, + "p999_us": 5282.3, + "errors": 0, + "command": [ + "/home/cvi/projects/coap/.worktrees/dtls-maintenance/zig-out/bin/bench", + "--dtls-only", + "--con-only", + "--multi-only", + "--threads", + "4", + "--window", + "32", + "--payload-only", + "0", + "--count", + "300000", + "--warmup", + "1000" + ], + "output": "\u2500\u2500 benchmark suite \u2500\u2500\n\n host 127.0.0.1:5683\n threads 4 (single: 1, multi: 4)\n server bufs 512 \u00d7 1280B\n client window 32 (1T), 64 (multi)\n warmup 1,000\n requests 300,000\n\n\n [1/1] DTLS CON 4T 0B ...\n\u2500\u2500 results (4 CPUs) \u2500\u2500\n\n Scenarios\n \u2514\u2500 DTLS\n \u2514\u2500 CON req/s p50 \u00b5s p99 \u00b5s p99.9 \u00b5s errs\n \u2514\u2500 4T 0B 165,585 1675.8 3025.3 5282.3 0\n\n" + }, + { + "backend": "fixed", + "threads": 4, + "payload": 0, + "repeat": 3, + "rps": 155073, + "p50_us": 1656.3, + "p99_us": 3896.3, + "p999_us": 5872.5, + "errors": 0, + "command": [ + "/home/cvi/projects/coap/.worktrees/dtls-maintenance/zig-out/bin/bench", + "--dtls-only", + "--con-only", + "--multi-only", + "--threads", + "4", + "--window", + "32", + "--payload-only", + "0", + "--count", + "300000", + "--warmup", + "1000" + ], + "output": "\u2500\u2500 benchmark suite \u2500\u2500\n\n host 127.0.0.1:5683\n threads 4 (single: 1, multi: 4)\n server bufs 512 \u00d7 1280B\n client window 32 (1T), 64 (multi)\n warmup 1,000\n requests 300,000\n\n\n [1/1] DTLS CON 4T 0B ...\n\u2500\u2500 results (4 CPUs) \u2500\u2500\n\n Scenarios\n \u2514\u2500 DTLS\n \u2514\u2500 CON req/s p50 \u00b5s p99 \u00b5s p99.9 \u00b5s errs\n \u2514\u2500 4T 0B 155,073 1656.3 3896.3 5872.5 0\n\n" + }, + { + "backend": "baseline", + "threads": 4, + "payload": 0, + "repeat": 3, + "rps": 137035, + "p50_us": 1665.4, + "p99_us": 5091.5, + "p999_us": 7034.3, + "errors": 0, + "command": [ + "/home/cvi/projects/coap/.worktrees/zio-baseline/zig-out/bin/bench", + "--dtls-only", + "--con-only", + "--multi-only", + "--threads", + "4", + "--window", + "32", + "--payload-only", + "0", + "--count", + "300000", + "--warmup", + "1000" + ], + "output": "\u2500\u2500 benchmark suite \u2500\u2500\n\n host 127.0.0.1:5683\n threads 4 (single: 1, multi: 4)\n server bufs 512 \u00d7 1280B\n client window 32 (1T), 64 (multi)\n warmup 1,000\n requests 300,000\n\n\n [1/1] DTLS CON 4T 0B ...\n\u2500\u2500 results (4 CPUs) \u2500\u2500\n\n Scenarios\n \u2514\u2500 DTLS\n \u2514\u2500 CON req/s p50 \u00b5s p99 \u00b5s p99.9 \u00b5s errs\n \u2514\u2500 4T 0B 137,035 1665.4 5091.5 7034.3 0\n\n" + }, + { + "backend": "baseline", + "threads": 4, + "payload": 0, + "repeat": 4, + "rps": 139867, + "p50_us": 1495.3, + "p99_us": 5236.2, + "p999_us": 6607.5, + "errors": 0, + "command": [ + "/home/cvi/projects/coap/.worktrees/zio-baseline/zig-out/bin/bench", + "--dtls-only", + "--con-only", + "--multi-only", + "--threads", + "4", + "--window", + "32", + "--payload-only", + "0", + "--count", + "300000", + "--warmup", + "1000" + ], + "output": "\u2500\u2500 benchmark suite \u2500\u2500\n\n host 127.0.0.1:5683\n threads 4 (single: 1, multi: 4)\n server bufs 512 \u00d7 1280B\n client window 32 (1T), 64 (multi)\n warmup 1,000\n requests 300,000\n\n\n [1/1] DTLS CON 4T 0B ...\n\u2500\u2500 results (4 CPUs) \u2500\u2500\n\n Scenarios\n \u2514\u2500 DTLS\n \u2514\u2500 CON req/s p50 \u00b5s p99 \u00b5s p99.9 \u00b5s errs\n \u2514\u2500 4T 0B 139,867 1495.3 5236.2 6607.5 0\n\n" + }, + { + "backend": "fixed", + "threads": 4, + "payload": 0, + "repeat": 4, + "rps": 156855, + "p50_us": 1659.8, + "p99_us": 2753.9, + "p999_us": 4450.7, + "errors": 0, + "command": [ + "/home/cvi/projects/coap/.worktrees/dtls-maintenance/zig-out/bin/bench", + "--dtls-only", + "--con-only", + "--multi-only", + "--threads", + "4", + "--window", + "32", + "--payload-only", + "0", + "--count", + "300000", + "--warmup", + "1000" + ], + "output": "\u2500\u2500 benchmark suite \u2500\u2500\n\n host 127.0.0.1:5683\n threads 4 (single: 1, multi: 4)\n server bufs 512 \u00d7 1280B\n client window 32 (1T), 64 (multi)\n warmup 1,000\n requests 300,000\n\n\n [1/1] DTLS CON 4T 0B ...\n\u2500\u2500 results (4 CPUs) \u2500\u2500\n\n Scenarios\n \u2514\u2500 DTLS\n \u2514\u2500 CON req/s p50 \u00b5s p99 \u00b5s p99.9 \u00b5s errs\n \u2514\u2500 4T 0B 156,855 1659.8 2753.9 4450.7 0\n\n" + }, + { + "backend": "baseline", + "threads": 4, + "payload": 100, + "repeat": 0, + "rps": 136296, + "p50_us": 1740.2, + "p99_us": 4334.2, + "p999_us": 6264.1, + "errors": 0, + "command": [ + "/home/cvi/projects/coap/.worktrees/zio-baseline/zig-out/bin/bench", + "--dtls-only", + "--con-only", + "--multi-only", + "--threads", + "4", + "--window", + "32", + "--payload-only", + "100", + "--count", + "300000", + "--warmup", + "1000" + ], + "output": "\u2500\u2500 benchmark suite \u2500\u2500\n\n host 127.0.0.1:5683\n threads 4 (single: 1, multi: 4)\n server bufs 512 \u00d7 1280B\n client window 32 (1T), 64 (multi)\n warmup 1,000\n requests 300,000\n\n\n [1/1] DTLS CON 4T 100B ...\n\u2500\u2500 results (4 CPUs) \u2500\u2500\n\n Scenarios\n \u2514\u2500 DTLS\n \u2514\u2500 CON req/s p50 \u00b5s p99 \u00b5s p99.9 \u00b5s errs\n \u2514\u2500 4T 100B 136,296 1740.2 4334.2 6264.1 0\n\n" + }, + { + "backend": "fixed", + "threads": 4, + "payload": 100, + "repeat": 0, + "rps": 152665, + "p50_us": 1686.7, + "p99_us": 3497.2, + "p999_us": 5626.4, + "errors": 0, + "command": [ + "/home/cvi/projects/coap/.worktrees/dtls-maintenance/zig-out/bin/bench", + "--dtls-only", + "--con-only", + "--multi-only", + "--threads", + "4", + "--window", + "32", + "--payload-only", + "100", + "--count", + "300000", + "--warmup", + "1000" + ], + "output": "\u2500\u2500 benchmark suite \u2500\u2500\n\n host 127.0.0.1:5683\n threads 4 (single: 1, multi: 4)\n server bufs 512 \u00d7 1280B\n client window 32 (1T), 64 (multi)\n warmup 1,000\n requests 300,000\n\n\n [1/1] DTLS CON 4T 100B ...\n\u2500\u2500 results (4 CPUs) \u2500\u2500\n\n Scenarios\n \u2514\u2500 DTLS\n \u2514\u2500 CON req/s p50 \u00b5s p99 \u00b5s p99.9 \u00b5s errs\n \u2514\u2500 4T 100B 152,665 1686.7 3497.2 5626.4 0\n\n" + }, + { + "backend": "fixed", + "threads": 4, + "payload": 100, + "repeat": 1, + "rps": 149441, + "p50_us": 1695.6, + "p99_us": 3024.0, + "p999_us": 4425.9, + "errors": 0, + "command": [ + "/home/cvi/projects/coap/.worktrees/dtls-maintenance/zig-out/bin/bench", + "--dtls-only", + "--con-only", + "--multi-only", + "--threads", + "4", + "--window", + "32", + "--payload-only", + "100", + "--count", + "300000", + "--warmup", + "1000" + ], + "output": "\u2500\u2500 benchmark suite \u2500\u2500\n\n host 127.0.0.1:5683\n threads 4 (single: 1, multi: 4)\n server bufs 512 \u00d7 1280B\n client window 32 (1T), 64 (multi)\n warmup 1,000\n requests 300,000\n\n\n [1/1] DTLS CON 4T 100B ...\n\u2500\u2500 results (4 CPUs) \u2500\u2500\n\n Scenarios\n \u2514\u2500 DTLS\n \u2514\u2500 CON req/s p50 \u00b5s p99 \u00b5s p99.9 \u00b5s errs\n \u2514\u2500 4T 100B 149,441 1695.6 3024.0 4425.9 0\n\n" + }, + { + "backend": "baseline", + "threads": 4, + "payload": 100, + "repeat": 1, + "rps": 143725, + "p50_us": 1755.1, + "p99_us": 3187.2, + "p999_us": 4321.6, + "errors": 0, + "command": [ + "/home/cvi/projects/coap/.worktrees/zio-baseline/zig-out/bin/bench", + "--dtls-only", + "--con-only", + "--multi-only", + "--threads", + "4", + "--window", + "32", + "--payload-only", + "100", + "--count", + "300000", + "--warmup", + "1000" + ], + "output": "\u2500\u2500 benchmark suite \u2500\u2500\n\n host 127.0.0.1:5683\n threads 4 (single: 1, multi: 4)\n server bufs 512 \u00d7 1280B\n client window 32 (1T), 64 (multi)\n warmup 1,000\n requests 300,000\n\n\n [1/1] DTLS CON 4T 100B ...\n\u2500\u2500 results (4 CPUs) \u2500\u2500\n\n Scenarios\n \u2514\u2500 DTLS\n \u2514\u2500 CON req/s p50 \u00b5s p99 \u00b5s p99.9 \u00b5s errs\n \u2514\u2500 4T 100B 143,725 1755.1 3187.2 4321.6 0\n\n" + }, + { + "backend": "baseline", + "threads": 4, + "payload": 100, + "repeat": 2, + "rps": 137097, + "p50_us": 1720.1, + "p99_us": 4650.3, + "p999_us": 6429.1, + "errors": 0, + "command": [ + "/home/cvi/projects/coap/.worktrees/zio-baseline/zig-out/bin/bench", + "--dtls-only", + "--con-only", + "--multi-only", + "--threads", + "4", + "--window", + "32", + "--payload-only", + "100", + "--count", + "300000", + "--warmup", + "1000" + ], + "output": "\u2500\u2500 benchmark suite \u2500\u2500\n\n host 127.0.0.1:5683\n threads 4 (single: 1, multi: 4)\n server bufs 512 \u00d7 1280B\n client window 32 (1T), 64 (multi)\n warmup 1,000\n requests 300,000\n\n\n [1/1] DTLS CON 4T 100B ...\n\u2500\u2500 results (4 CPUs) \u2500\u2500\n\n Scenarios\n \u2514\u2500 DTLS\n \u2514\u2500 CON req/s p50 \u00b5s p99 \u00b5s p99.9 \u00b5s errs\n \u2514\u2500 4T 100B 137,097 1720.1 4650.3 6429.1 0\n\n" + }, + { + "backend": "fixed", + "threads": 4, + "payload": 100, + "repeat": 2, + "rps": 154755, + "p50_us": 1700.9, + "p99_us": 2988.0, + "p999_us": 5092.9, + "errors": 0, + "command": [ + "/home/cvi/projects/coap/.worktrees/dtls-maintenance/zig-out/bin/bench", + "--dtls-only", + "--con-only", + "--multi-only", + "--threads", + "4", + "--window", + "32", + "--payload-only", + "100", + "--count", + "300000", + "--warmup", + "1000" + ], + "output": "\u2500\u2500 benchmark suite \u2500\u2500\n\n host 127.0.0.1:5683\n threads 4 (single: 1, multi: 4)\n server bufs 512 \u00d7 1280B\n client window 32 (1T), 64 (multi)\n warmup 1,000\n requests 300,000\n\n\n [1/1] DTLS CON 4T 100B ...\n\u2500\u2500 results (4 CPUs) \u2500\u2500\n\n Scenarios\n \u2514\u2500 DTLS\n \u2514\u2500 CON req/s p50 \u00b5s p99 \u00b5s p99.9 \u00b5s errs\n \u2514\u2500 4T 100B 154,755 1700.9 2988.0 5092.9 0\n\n" + }, + { + "backend": "fixed", + "threads": 4, + "payload": 100, + "repeat": 3, + "rps": 145167, + "p50_us": 1778.8, + "p99_us": 3431.9, + "p999_us": 4734.7, + "errors": 0, + "command": [ + "/home/cvi/projects/coap/.worktrees/dtls-maintenance/zig-out/bin/bench", + "--dtls-only", + "--con-only", + "--multi-only", + "--threads", + "4", + "--window", + "32", + "--payload-only", + "100", + "--count", + "300000", + "--warmup", + "1000" + ], + "output": "\u2500\u2500 benchmark suite \u2500\u2500\n\n host 127.0.0.1:5683\n threads 4 (single: 1, multi: 4)\n server bufs 512 \u00d7 1280B\n client window 32 (1T), 64 (multi)\n warmup 1,000\n requests 300,000\n\n\n [1/1] DTLS CON 4T 100B ...\n\u2500\u2500 results (4 CPUs) \u2500\u2500\n\n Scenarios\n \u2514\u2500 DTLS\n \u2514\u2500 CON req/s p50 \u00b5s p99 \u00b5s p99.9 \u00b5s errs\n \u2514\u2500 4T 100B 145,167 1778.8 3431.9 4734.7 0\n\n" + }, + { + "backend": "baseline", + "threads": 4, + "payload": 100, + "repeat": 3, + "rps": 141592, + "p50_us": 1693.0, + "p99_us": 3778.6, + "p999_us": 4671.7, + "errors": 0, + "command": [ + "/home/cvi/projects/coap/.worktrees/zio-baseline/zig-out/bin/bench", + "--dtls-only", + "--con-only", + "--multi-only", + "--threads", + "4", + "--window", + "32", + "--payload-only", + "100", + "--count", + "300000", + "--warmup", + "1000" + ], + "output": "\u2500\u2500 benchmark suite \u2500\u2500\n\n host 127.0.0.1:5683\n threads 4 (single: 1, multi: 4)\n server bufs 512 \u00d7 1280B\n client window 32 (1T), 64 (multi)\n warmup 1,000\n requests 300,000\n\n\n [1/1] DTLS CON 4T 100B ...\n\u2500\u2500 results (4 CPUs) \u2500\u2500\n\n Scenarios\n \u2514\u2500 DTLS\n \u2514\u2500 CON req/s p50 \u00b5s p99 \u00b5s p99.9 \u00b5s errs\n \u2514\u2500 4T 100B 141,592 1693.0 3778.6 4671.7 0\n\n" + }, + { + "backend": "baseline", + "threads": 4, + "payload": 100, + "repeat": 4, + "rps": 142693, + "p50_us": 1736.6, + "p99_us": 3562.8, + "p999_us": 5227.0, + "errors": 0, + "command": [ + "/home/cvi/projects/coap/.worktrees/zio-baseline/zig-out/bin/bench", + "--dtls-only", + "--con-only", + "--multi-only", + "--threads", + "4", + "--window", + "32", + "--payload-only", + "100", + "--count", + "300000", + "--warmup", + "1000" + ], + "output": "\u2500\u2500 benchmark suite \u2500\u2500\n\n host 127.0.0.1:5683\n threads 4 (single: 1, multi: 4)\n server bufs 512 \u00d7 1280B\n client window 32 (1T), 64 (multi)\n warmup 1,000\n requests 300,000\n\n\n [1/1] DTLS CON 4T 100B ...\n\u2500\u2500 results (4 CPUs) \u2500\u2500\n\n Scenarios\n \u2514\u2500 DTLS\n \u2514\u2500 CON req/s p50 \u00b5s p99 \u00b5s p99.9 \u00b5s errs\n \u2514\u2500 4T 100B 142,693 1736.6 3562.8 5227.0 0\n\n" + }, + { + "backend": "fixed", + "threads": 4, + "payload": 100, + "repeat": 4, + "rps": 151087, + "p50_us": 1704.7, + "p99_us": 3314.8, + "p999_us": 5810.3, + "errors": 0, + "command": [ + "/home/cvi/projects/coap/.worktrees/dtls-maintenance/zig-out/bin/bench", + "--dtls-only", + "--con-only", + "--multi-only", + "--threads", + "4", + "--window", + "32", + "--payload-only", + "100", + "--count", + "300000", + "--warmup", + "1000" + ], + "output": "\u2500\u2500 benchmark suite \u2500\u2500\n\n host 127.0.0.1:5683\n threads 4 (single: 1, multi: 4)\n server bufs 512 \u00d7 1280B\n client window 32 (1T), 64 (multi)\n warmup 1,000\n requests 300,000\n\n\n [1/1] DTLS CON 4T 100B ...\n\u2500\u2500 results (4 CPUs) \u2500\u2500\n\n Scenarios\n \u2514\u2500 DTLS\n \u2514\u2500 CON req/s p50 \u00b5s p99 \u00b5s p99.9 \u00b5s errs\n \u2514\u2500 4T 100B 151,087 1704.7 3314.8 5810.3 0\n\n" + }, + { + "backend": "baseline", + "threads": 4, + "payload": 1000, + "repeat": 0, + "rps": 154828, + "p50_us": 1638.8, + "p99_us": 2462.8, + "p999_us": 3256.9, + "errors": 0, + "command": [ + "/home/cvi/projects/coap/.worktrees/zio-baseline/zig-out/bin/bench", + "--dtls-only", + "--con-only", + "--multi-only", + "--threads", + "4", + "--window", + "32", + "--payload-only", + "1000", + "--count", + "300000", + "--warmup", + "1000" + ], + "output": "\u2500\u2500 benchmark suite \u2500\u2500\n\n host 127.0.0.1:5683\n threads 4 (single: 1, multi: 4)\n server bufs 512 \u00d7 1280B\n client window 32 (1T), 64 (multi)\n warmup 1,000\n requests 300,000\n\n\n [1/1] DTLS CON 4T 1000B ...\n\u2500\u2500 results (4 CPUs) \u2500\u2500\n\n Scenarios\n \u2514\u2500 DTLS\n \u2514\u2500 CON req/s p50 \u00b5s p99 \u00b5s p99.9 \u00b5s errs\n \u2514\u2500 4T 1000B 154,828 1638.8 2462.8 3256.9 0\n\n" + }, + { + "backend": "fixed", + "threads": 4, + "payload": 1000, + "repeat": 0, + "rps": 171906, + "p50_us": 1461.0, + "p99_us": 2492.0, + "p999_us": 3146.4, + "errors": 0, + "command": [ + "/home/cvi/projects/coap/.worktrees/dtls-maintenance/zig-out/bin/bench", + "--dtls-only", + "--con-only", + "--multi-only", + "--threads", + "4", + "--window", + "32", + "--payload-only", + "1000", + "--count", + "300000", + "--warmup", + "1000" + ], + "output": "\u2500\u2500 benchmark suite \u2500\u2500\n\n host 127.0.0.1:5683\n threads 4 (single: 1, multi: 4)\n server bufs 512 \u00d7 1280B\n client window 32 (1T), 64 (multi)\n warmup 1,000\n requests 300,000\n\n\n [1/1] DTLS CON 4T 1000B ...\n\u2500\u2500 results (4 CPUs) \u2500\u2500\n\n Scenarios\n \u2514\u2500 DTLS\n \u2514\u2500 CON req/s p50 \u00b5s p99 \u00b5s p99.9 \u00b5s errs\n \u2514\u2500 4T 1000B 171,906 1461.0 2492.0 3146.4 0\n\n" + }, + { + "backend": "fixed", + "threads": 4, + "payload": 1000, + "repeat": 1, + "rps": 177197, + "p50_us": 1413.7, + "p99_us": 2444.3, + "p999_us": 2988.3, + "errors": 0, + "command": [ + "/home/cvi/projects/coap/.worktrees/dtls-maintenance/zig-out/bin/bench", + "--dtls-only", + "--con-only", + "--multi-only", + "--threads", + "4", + "--window", + "32", + "--payload-only", + "1000", + "--count", + "300000", + "--warmup", + "1000" + ], + "output": "\u2500\u2500 benchmark suite \u2500\u2500\n\n host 127.0.0.1:5683\n threads 4 (single: 1, multi: 4)\n server bufs 512 \u00d7 1280B\n client window 32 (1T), 64 (multi)\n warmup 1,000\n requests 300,000\n\n\n [1/1] DTLS CON 4T 1000B ...\n\u2500\u2500 results (4 CPUs) \u2500\u2500\n\n Scenarios\n \u2514\u2500 DTLS\n \u2514\u2500 CON req/s p50 \u00b5s p99 \u00b5s p99.9 \u00b5s errs\n \u2514\u2500 4T 1000B 177,197 1413.7 2444.3 2988.3 0\n\n" + }, + { + "backend": "baseline", + "threads": 4, + "payload": 1000, + "repeat": 1, + "rps": 154042, + "p50_us": 1561.0, + "p99_us": 2777.2, + "p999_us": 3512.9, + "errors": 0, + "command": [ + "/home/cvi/projects/coap/.worktrees/zio-baseline/zig-out/bin/bench", + "--dtls-only", + "--con-only", + "--multi-only", + "--threads", + "4", + "--window", + "32", + "--payload-only", + "1000", + "--count", + "300000", + "--warmup", + "1000" + ], + "output": "\u2500\u2500 benchmark suite \u2500\u2500\n\n host 127.0.0.1:5683\n threads 4 (single: 1, multi: 4)\n server bufs 512 \u00d7 1280B\n client window 32 (1T), 64 (multi)\n warmup 1,000\n requests 300,000\n\n\n [1/1] DTLS CON 4T 1000B ...\n\u2500\u2500 results (4 CPUs) \u2500\u2500\n\n Scenarios\n \u2514\u2500 DTLS\n \u2514\u2500 CON req/s p50 \u00b5s p99 \u00b5s p99.9 \u00b5s errs\n \u2514\u2500 4T 1000B 154,042 1561.0 2777.2 3512.9 0\n\n" + }, + { + "backend": "baseline", + "threads": 4, + "payload": 1000, + "repeat": 2, + "rps": 161603, + "p50_us": 1566.0, + "p99_us": 2603.1, + "p999_us": 5152.3, + "errors": 0, + "command": [ + "/home/cvi/projects/coap/.worktrees/zio-baseline/zig-out/bin/bench", + "--dtls-only", + "--con-only", + "--multi-only", + "--threads", + "4", + "--window", + "32", + "--payload-only", + "1000", + "--count", + "300000", + "--warmup", + "1000" + ], + "output": "\u2500\u2500 benchmark suite \u2500\u2500\n\n host 127.0.0.1:5683\n threads 4 (single: 1, multi: 4)\n server bufs 512 \u00d7 1280B\n client window 32 (1T), 64 (multi)\n warmup 1,000\n requests 300,000\n\n\n [1/1] DTLS CON 4T 1000B ...\n\u2500\u2500 results (4 CPUs) \u2500\u2500\n\n Scenarios\n \u2514\u2500 DTLS\n \u2514\u2500 CON req/s p50 \u00b5s p99 \u00b5s p99.9 \u00b5s errs\n \u2514\u2500 4T 1000B 161,603 1566.0 2603.1 5152.3 0\n\n" + }, + { + "backend": "fixed", + "threads": 4, + "payload": 1000, + "repeat": 2, + "rps": 180414, + "p50_us": 1402.6, + "p99_us": 2250.2, + "p999_us": 3000.2, + "errors": 0, + "command": [ + "/home/cvi/projects/coap/.worktrees/dtls-maintenance/zig-out/bin/bench", + "--dtls-only", + "--con-only", + "--multi-only", + "--threads", + "4", + "--window", + "32", + "--payload-only", + "1000", + "--count", + "300000", + "--warmup", + "1000" + ], + "output": "\u2500\u2500 benchmark suite \u2500\u2500\n\n host 127.0.0.1:5683\n threads 4 (single: 1, multi: 4)\n server bufs 512 \u00d7 1280B\n client window 32 (1T), 64 (multi)\n warmup 1,000\n requests 300,000\n\n\n [1/1] DTLS CON 4T 1000B ...\n\u2500\u2500 results (4 CPUs) \u2500\u2500\n\n Scenarios\n \u2514\u2500 DTLS\n \u2514\u2500 CON req/s p50 \u00b5s p99 \u00b5s p99.9 \u00b5s errs\n \u2514\u2500 4T 1000B 180,414 1402.6 2250.2 3000.2 0\n\n" + }, + { + "backend": "fixed", + "threads": 4, + "payload": 1000, + "repeat": 3, + "rps": 182242, + "p50_us": 1379.4, + "p99_us": 2286.0, + "p999_us": 3084.8, + "errors": 0, + "command": [ + "/home/cvi/projects/coap/.worktrees/dtls-maintenance/zig-out/bin/bench", + "--dtls-only", + "--con-only", + "--multi-only", + "--threads", + "4", + "--window", + "32", + "--payload-only", + "1000", + "--count", + "300000", + "--warmup", + "1000" + ], + "output": "\u2500\u2500 benchmark suite \u2500\u2500\n\n host 127.0.0.1:5683\n threads 4 (single: 1, multi: 4)\n server bufs 512 \u00d7 1280B\n client window 32 (1T), 64 (multi)\n warmup 1,000\n requests 300,000\n\n\n [1/1] DTLS CON 4T 1000B ...\n\u2500\u2500 results (4 CPUs) \u2500\u2500\n\n Scenarios\n \u2514\u2500 DTLS\n \u2514\u2500 CON req/s p50 \u00b5s p99 \u00b5s p99.9 \u00b5s errs\n \u2514\u2500 4T 1000B 182,242 1379.4 2286.0 3084.8 0\n\n" + }, + { + "backend": "baseline", + "threads": 4, + "payload": 1000, + "repeat": 3, + "rps": 152832, + "p50_us": 1629.7, + "p99_us": 2718.3, + "p999_us": 3248.4, + "errors": 0, + "command": [ + "/home/cvi/projects/coap/.worktrees/zio-baseline/zig-out/bin/bench", + "--dtls-only", + "--con-only", + "--multi-only", + "--threads", + "4", + "--window", + "32", + "--payload-only", + "1000", + "--count", + "300000", + "--warmup", + "1000" + ], + "output": "\u2500\u2500 benchmark suite \u2500\u2500\n\n host 127.0.0.1:5683\n threads 4 (single: 1, multi: 4)\n server bufs 512 \u00d7 1280B\n client window 32 (1T), 64 (multi)\n warmup 1,000\n requests 300,000\n\n\n [1/1] DTLS CON 4T 1000B ...\n\u2500\u2500 results (4 CPUs) \u2500\u2500\n\n Scenarios\n \u2514\u2500 DTLS\n \u2514\u2500 CON req/s p50 \u00b5s p99 \u00b5s p99.9 \u00b5s errs\n \u2514\u2500 4T 1000B 152,832 1629.7 2718.3 3248.4 0\n\n" + }, + { + "backend": "baseline", + "threads": 4, + "payload": 1000, + "repeat": 4, + "rps": 151320, + "p50_us": 1647.0, + "p99_us": 2598.9, + "p999_us": 3126.2, + "errors": 0, + "command": [ + "/home/cvi/projects/coap/.worktrees/zio-baseline/zig-out/bin/bench", + "--dtls-only", + "--con-only", + "--multi-only", + "--threads", + "4", + "--window", + "32", + "--payload-only", + "1000", + "--count", + "300000", + "--warmup", + "1000" + ], + "output": "\u2500\u2500 benchmark suite \u2500\u2500\n\n host 127.0.0.1:5683\n threads 4 (single: 1, multi: 4)\n server bufs 512 \u00d7 1280B\n client window 32 (1T), 64 (multi)\n warmup 1,000\n requests 300,000\n\n\n [1/1] DTLS CON 4T 1000B ...\n\u2500\u2500 results (4 CPUs) \u2500\u2500\n\n Scenarios\n \u2514\u2500 DTLS\n \u2514\u2500 CON req/s p50 \u00b5s p99 \u00b5s p99.9 \u00b5s errs\n \u2514\u2500 4T 1000B 151,320 1647.0 2598.9 3126.2 0\n\n" + }, + { + "backend": "fixed", + "threads": 4, + "payload": 1000, + "repeat": 4, + "rps": 180055, + "p50_us": 1398.1, + "p99_us": 2320.1, + "p999_us": 3009.5, + "errors": 0, + "command": [ + "/home/cvi/projects/coap/.worktrees/dtls-maintenance/zig-out/bin/bench", + "--dtls-only", + "--con-only", + "--multi-only", + "--threads", + "4", + "--window", + "32", + "--payload-only", + "1000", + "--count", + "300000", + "--warmup", + "1000" + ], + "output": "\u2500\u2500 benchmark suite \u2500\u2500\n\n host 127.0.0.1:5683\n threads 4 (single: 1, multi: 4)\n server bufs 512 \u00d7 1280B\n client window 32 (1T), 64 (multi)\n warmup 1,000\n requests 300,000\n\n\n [1/1] DTLS CON 4T 1000B ...\n\u2500\u2500 results (4 CPUs) \u2500\u2500\n\n Scenarios\n \u2514\u2500 DTLS\n \u2514\u2500 CON req/s p50 \u00b5s p99 \u00b5s p99.9 \u00b5s errs\n \u2514\u2500 4T 1000B 180,055 1398.1 2320.1 3009.5 0\n\n" + } + ] +} diff --git a/src/Server.zig b/src/Server.zig index f30c4df..aa813e0 100644 --- a/src/Server.zig +++ b/src/Server.zig @@ -167,6 +167,8 @@ rate_limit_rst: []u8, // DTLS state. dtls_sessions: ?*dtls.Session.SessionTable, +/// Next bounded-cadence handshake maintenance pass, independent of I/O batches. +dtls_retransmit_check_ns: i64 = 0, dtls_cookie_secret: [32]u8, dtls_cookie_secret_prev: [32]u8, dtls_cookie_rotation_ns: i64, @@ -2076,12 +2078,21 @@ fn cacheFlight(sess: *dtls.Session.Session, data: []const u8, now_ns: i64) void sess.retransmit_deadline_ns = now_ns + @as(i64, constants.dtls_retransmit_initial_ms) * std.time.ns_per_ms; } -/// Scan handshaking DTLS sessions for expired retransmit deadlines. +const dtls_retransmit_check_interval_ns: i64 = 50 * std.time.ns_per_ms; + +/// Check live sessions at a bounded cadence, not all capacity slots per batch. +/// The existing tick timeout supplies idle wakeups at the same 50ms cadence. fn checkDtlsRetransmits(server: *Server) void { const tbl = server.dtls_sessions orelse return; + if (server.tick_now_ns < server.dtls_retransmit_check_ns) return; + server.dtls_retransmit_check_ns = server.tick_now_ns + dtls_retransmit_check_interval_ns; const batch: usize = @min(constants.completion_batch_max, server.config.buffer_count); - for (tbl.slots) |*sess| { + var next = tbl.lru_head; + while (next != std.math.maxInt(u32)) { + const sess = &tbl.slots[next]; + // Timeout release unlinks this node; capture its successor first. + next = sess.lru_next; if (sess.state != .handshaking) continue; if (sess.last_flight_len == 0) continue; if (server.tick_now_ns < sess.retransmit_deadline_ns) continue; @@ -2518,6 +2529,94 @@ fn send_tick_recv( return result; } +test "DTLS retransmit maintenance releases head and tail without skipping live sessions" { + var server = try Server.init(testing.allocator, .{ + .buffer_count = 4, + .dtls_session_count = 3, + .psk = .{ .identity = "test", .key = "secret" }, + }, null_handler); + defer server.deinit(); + const table = server.dtls_sessions.?; + const tail = table.allocate(platform.ip4(.{ 127, 0, 0, 1 }, 1001), 0).?; + const middle = table.allocate(platform.ip4(.{ 127, 0, 0, 1 }, 1002), 0).?; + const head = table.allocate(platform.ip4(.{ 127, 0, 0, 1 }, 1003), 0).?; + middle.state = .established; + middle.last_flight_len = 1; + middle.retransmit_count = constants.dtls_max_retransmits; + for ([_]*dtls.Session.Session{ head, tail }) |session| { + session.last_flight_len = 1; + session.retransmit_count = constants.dtls_max_retransmits; + } + server.tick_now_ns = std.time.ns_per_s; + server.checkDtlsRetransmits(); + try testing.expectEqual(@as(u32, 1), table.count_active); + try testing.expectEqual(dtls.Session.State.free, head.state); + try testing.expectEqual(dtls.Session.State.free, tail.state); + try testing.expectEqual(dtls.Session.State.established, middle.state); + try testing.expectEqual(table.lru_head, table.lru_tail); + // Slot reuse must not leave a stale maintenance cursor into the free list. + const reused = table.allocate(platform.ip4(.{ 127, 0, 0, 1 }, 1004), 0).?; + reused.last_flight_len = 1; + reused.retransmit_count = constants.dtls_max_retransmits; + server.tick_now_ns += dtls_retransmit_check_interval_ns; + server.checkDtlsRetransmits(); + try testing.expectEqual(@as(u32, 1), table.count_active); +} + +test "DTLS retransmit maintenance cadence bounds deadline delay" { + var server = try Server.init(testing.allocator, .{ + .buffer_count = 4, + .dtls_session_count = 2, + .psk = .{ .identity = "test", .key = "secret" }, + }, null_handler); + defer server.deinit(); + const table = server.dtls_sessions.?; + const session = table.allocate(platform.ip4(.{ 127, 0, 0, 1 }, 1005), 0).?; + session.last_flight_len = 1; + session.retransmit_count = constants.dtls_max_retransmits; + session.retransmit_deadline_ns = std.time.ns_per_s + dtls_retransmit_check_interval_ns - 1; + server.tick_now_ns = std.time.ns_per_s; + server.checkDtlsRetransmits(); + server.tick_now_ns = session.retransmit_deadline_ns; + server.checkDtlsRetransmits(); + try testing.expectEqual(@as(u32, 1), table.count_active); + server.tick_now_ns += 1; + server.checkDtlsRetransmits(); + try testing.expectEqual(@as(u32, 0), table.count_active); + server.tick_now_ns += dtls_retransmit_check_interval_ns; + server.checkDtlsRetransmits(); // Empty live list is safe. +} + +test "DTLS retransmit maintenance preserves flight backoff and ignores uncached handshakes" { + var server = try Server.init(testing.allocator, .{ + .port = 19679, + .buffer_count = 4, + .dtls_session_count = 2, + .psk = .{ .identity = "test", .key = "secret" }, + }, null_handler); + defer server.deinit(); + try server.listen(); + const table = server.dtls_sessions.?; + const uncached = table.allocate(platform.ip4(.{ 127, 0, 0, 1 }, 1006), 0).?; + const session = table.allocate(platform.ip4(.{ 127, 0, 0, 1 }, 1007), 0).?; + cacheFlight(session, "flight", 0); + server.tick_now_ns = session.retransmit_deadline_ns; + server.checkDtlsRetransmits(); + try testing.expectEqual(@as(u8, 1), session.retransmit_count); + try testing.expectEqual(constants.dtls_retransmit_initial_ms * 2, session.retransmit_timeout_ms); + try testing.expectEqual(server.tick_now_ns + @as(i64, session.retransmit_timeout_ms) * std.time.ns_per_ms, session.retransmit_deadline_ns); + try testing.expectEqualStrings("flight", session.last_flight[0..session.last_flight_len]); + try testing.expectEqual(@as(u8, 0), uncached.retransmit_count); + try testing.expectEqual(@as(u32, 2), table.count_active); + // Flush the queued send before the next pass, as the production tick does. + _ = try server.io.submit(); + session.retransmit_timeout_ms = constants.dtls_retransmit_max_ms; + server.tick_now_ns = session.retransmit_deadline_ns; + server.checkDtlsRetransmits(); + try testing.expectEqual(constants.dtls_retransmit_max_ms, session.retransmit_timeout_ms); + _ = try server.io.submit(); +} + test "init and deinit" { var server = try Server.init(testing.allocator, .{ .port = 19680,