From 117d4d01ae7261ef96885d911513c756484e6fe7 Mon Sep 17 00:00:00 2001 From: Diogo Martins Date: Sat, 6 Jun 2026 17:05:43 +0100 Subject: [PATCH 1/2] minima-ws: enable reactor-thread short-circuit in Enqueue* (RCA fast path) minima-ws vendored Minima's Reactor.cs with the inline fast paths in EnqueueReturnQ / EnqueueFlush / EnqueueRecycle commented out, so buffer return / flush / recycle went through the cross-thread MPSC queue + eventfd wake. With RCA=false the handler resumes inline on the reactor thread, so those callers are already on the reactor thread and can return the buffer, submit the send, or recycle directly on the ring. Uncomment the three fast paths to match the current Minima engine. --- frameworks/minima-ws/Reactor/Reactor.cs | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/frameworks/minima-ws/Reactor/Reactor.cs b/frameworks/minima-ws/Reactor/Reactor.cs index 884d17fb..764bccb6 100644 --- a/frameworks/minima-ws/Reactor/Reactor.cs +++ b/frameworks/minima-ws/Reactor/Reactor.cs @@ -160,11 +160,11 @@ public void EnqueueReturnQ(ushort bid) { // Fast path: caller is the reactor thread (handler running inline from // an IVTS SetResult). Go straight to the buf_ring — no queue, no syscall. - /*if (Environment.CurrentManagedThreadId == _reactorThreadId) + if (Environment.CurrentManagedThreadId == _reactorThreadId) { ReturnBufferDirect(bid); return; - }*/ + } SpinWait sw = default; while (!_returnQ.TryEnqueue(bid)) { @@ -176,14 +176,14 @@ public void EnqueueReturnQ(ushort bid) internal void EnqueueFlush(int fd) { // Fast path: caller is the reactor thread; write the SQE directly. - /*if (Environment.CurrentManagedThreadId == _reactorThreadId) + if (Environment.CurrentManagedThreadId == _reactorThreadId) { if (Connections.TryGetValue(fd, out var conn)) { SubmitSend(fd, conn.WriteBuffer, (uint)conn.WriteInFlight); } return; - }*/ + } SpinWait sw = default; while (!_flushQ.TryEnqueue(fd)) { @@ -196,11 +196,11 @@ internal void EnqueueFlush(int fd) // reactor (buf_ring + pool are reactor-owned), so off-reactor callers hand off. internal void EnqueueRecycle(Connection conn) { - /*if (Environment.CurrentManagedThreadId == _reactorThreadId) + if (Environment.CurrentManagedThreadId == _reactorThreadId) { Recycle(conn, conn.ClientFd); return; - }*/ + } _recycleQ.Enqueue(conn); WakeFdWrite(); } From 90ece33c93ff4a16e7a8b0f5d7158c391b97b442 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sat, 6 Jun 2026 16:28:07 +0000 Subject: [PATCH 2/2] Benchmark results: minima-ws --- site/data/echo-ws-16384.json | 19 ++++++ site/data/echo-ws-4096.json | 19 ++++++ site/data/echo-ws-512.json | 19 ++++++ site/data/echo-ws-pipeline-16384.json | 19 ++++++ site/data/echo-ws-pipeline-4096.json | 19 ++++++ site/data/echo-ws-pipeline-512.json | 19 ++++++ .../logs/echo-ws-pipeline/16384/minima-ws.log | 65 +++++++++++++++++++ .../logs/echo-ws-pipeline/4096/minima-ws.log | 65 +++++++++++++++++++ .../logs/echo-ws-pipeline/512/minima-ws.log | 65 +++++++++++++++++++ site/static/logs/echo-ws/16384/minima-ws.log | 65 +++++++++++++++++++ site/static/logs/echo-ws/4096/minima-ws.log | 65 +++++++++++++++++++ site/static/logs/echo-ws/512/minima-ws.log | 65 +++++++++++++++++++ 12 files changed, 504 insertions(+) create mode 100644 site/static/logs/echo-ws-pipeline/16384/minima-ws.log create mode 100644 site/static/logs/echo-ws-pipeline/4096/minima-ws.log create mode 100644 site/static/logs/echo-ws-pipeline/512/minima-ws.log create mode 100644 site/static/logs/echo-ws/16384/minima-ws.log create mode 100644 site/static/logs/echo-ws/4096/minima-ws.log create mode 100644 site/static/logs/echo-ws/512/minima-ws.log diff --git a/site/data/echo-ws-16384.json b/site/data/echo-ws-16384.json index b2dd413c..899765c0 100644 --- a/site/data/echo-ws-16384.json +++ b/site/data/echo-ws-16384.json @@ -288,6 +288,25 @@ "status_4xx": 0, "status_5xx": 0 }, + { + "framework": "minima-ws", + "language": "C#", + "rps": 3987143, + "avg_latency": "4.03ms", + "p99_latency": "4.90ms", + "cpu": "6393.2%", + "memory": "749MiB", + "connections": 16384, + "threads": 64, + "duration": "5s", + "pipeline": 1, + "bandwidth": "27.00MB/s", + "reconnects": 0, + "status_2xx": 19935719, + "status_3xx": 0, + "status_4xx": 0, + "status_5xx": 0 + }, { "framework": "node-websocket", "language": "JS", diff --git a/site/data/echo-ws-4096.json b/site/data/echo-ws-4096.json index f98f920b..18677e9b 100644 --- a/site/data/echo-ws-4096.json +++ b/site/data/echo-ws-4096.json @@ -288,6 +288,25 @@ "status_4xx": 0, "status_5xx": 0 }, + { + "framework": "minima-ws", + "language": "C#", + "rps": 4263272, + "avg_latency": "960us", + "p99_latency": "1.25ms", + "cpu": "6197.1%", + "memory": "542MiB", + "connections": 4096, + "threads": 64, + "duration": "5s", + "pipeline": 1, + "bandwidth": "28.44MB/s", + "reconnects": 0, + "status_2xx": 21316360, + "status_3xx": 0, + "status_4xx": 0, + "status_5xx": 0 + }, { "framework": "node-websocket", "language": "JS", diff --git a/site/data/echo-ws-512.json b/site/data/echo-ws-512.json index a8a418e3..10c83d83 100644 --- a/site/data/echo-ws-512.json +++ b/site/data/echo-ws-512.json @@ -288,6 +288,25 @@ "status_4xx": 0, "status_5xx": 0 }, + { + "framework": "minima-ws", + "language": "C#", + "rps": 4145985, + "avg_latency": "122us", + "p99_latency": "268us", + "cpu": "6167.3%", + "memory": "442MiB", + "connections": 512, + "threads": 64, + "duration": "5s", + "pipeline": 1, + "bandwidth": "27.67MB/s", + "reconnects": 0, + "status_2xx": 20729925, + "status_3xx": 0, + "status_4xx": 0, + "status_5xx": 0 + }, { "framework": "node-websocket", "language": "JS", diff --git a/site/data/echo-ws-pipeline-16384.json b/site/data/echo-ws-pipeline-16384.json index 8f41eca2..fd3b78ba 100644 --- a/site/data/echo-ws-pipeline-16384.json +++ b/site/data/echo-ws-pipeline-16384.json @@ -170,6 +170,25 @@ "status_4xx": 0, "status_5xx": 0 }, + { + "framework": "minima-ws", + "language": "C#", + "rps": 59426656, + "avg_latency": "4.31ms", + "p99_latency": "5.36ms", + "cpu": "6388.0%", + "memory": "814MiB", + "connections": 16384, + "threads": 64, + "duration": "5s", + "pipeline": 16, + "bandwidth": "396.96MB/s", + "reconnects": 0, + "status_2xx": 297133281, + "status_3xx": 0, + "status_4xx": 0, + "status_5xx": 0 + }, { "framework": "node-websocket", "language": "JS", diff --git a/site/data/echo-ws-pipeline-4096.json b/site/data/echo-ws-pipeline-4096.json index 28b3c3c1..d33e35cd 100644 --- a/site/data/echo-ws-pipeline-4096.json +++ b/site/data/echo-ws-pipeline-4096.json @@ -170,6 +170,25 @@ "status_4xx": 0, "status_5xx": 0 }, + { + "framework": "minima-ws", + "language": "C#", + "rps": 63975814, + "avg_latency": "1.02ms", + "p99_latency": "1.43ms", + "cpu": "6445.7%", + "memory": "511MiB", + "connections": 4096, + "threads": 64, + "duration": "5s", + "pipeline": 16, + "bandwidth": "426.95MB/s", + "reconnects": 0, + "status_2xx": 319879072, + "status_3xx": 0, + "status_4xx": 0, + "status_5xx": 0 + }, { "framework": "node-websocket", "language": "JS", diff --git a/site/data/echo-ws-pipeline-512.json b/site/data/echo-ws-pipeline-512.json index b1934305..4232d694 100644 --- a/site/data/echo-ws-pipeline-512.json +++ b/site/data/echo-ws-pipeline-512.json @@ -170,6 +170,25 @@ "status_4xx": 0, "status_5xx": 0 }, + { + "framework": "minima-ws", + "language": "C#", + "rps": 62333664, + "avg_latency": "130us", + "p99_latency": "294us", + "cpu": "6245.8%", + "memory": "408MiB", + "connections": 512, + "threads": 64, + "duration": "5s", + "pipeline": 16, + "bandwidth": "416.00MB/s", + "reconnects": 0, + "status_2xx": 311668320, + "status_3xx": 0, + "status_4xx": 0, + "status_5xx": 0 + }, { "framework": "node-websocket", "language": "JS", diff --git a/site/static/logs/echo-ws-pipeline/16384/minima-ws.log b/site/static/logs/echo-ws-pipeline/16384/minima-ws.log new file mode 100644 index 00000000..89a50b88 --- /dev/null +++ b/site/static/logs/echo-ws-pipeline/16384/minima-ws.log @@ -0,0 +1,65 @@ +[minima-ws] 64 reactors on :8080 (incremental=False) — hand-rolled WebSocket echo +[r2] listening on 0.0.0.0:8080 (incremental=False) +[r3] listening on 0.0.0.0:8080 (incremental=False) +[r0] listening on 0.0.0.0:8080 (incremental=False) +[r1] listening on 0.0.0.0:8080 (incremental=False) +[r4] listening on 0.0.0.0:8080 (incremental=False) +[r5] listening on 0.0.0.0:8080 (incremental=False) +[r6] listening on 0.0.0.0:8080 (incremental=False) +[r7] listening on 0.0.0.0:8080 (incremental=False) +[r8] listening on 0.0.0.0:8080 (incremental=False) +[r10] listening on 0.0.0.0:8080 (incremental=False) +[r11] listening on 0.0.0.0:8080 (incremental=False) +[r9] listening on 0.0.0.0:8080 (incremental=False) +[r12] listening on 0.0.0.0:8080 (incremental=False) +[r13] listening on 0.0.0.0:8080 (incremental=False) +[r14] listening on 0.0.0.0:8080 (incremental=False) +[r15] listening on 0.0.0.0:8080 (incremental=False) +[r16] listening on 0.0.0.0:8080 (incremental=False) +[r17] listening on 0.0.0.0:8080 (incremental=False) +[r18] listening on 0.0.0.0:8080 (incremental=False) +[r19] listening on 0.0.0.0:8080 (incremental=False) +[r20] listening on 0.0.0.0:8080 (incremental=False) +[r21] listening on 0.0.0.0:8080 (incremental=False) +[r22] listening on 0.0.0.0:8080 (incremental=False) +[r23] listening on 0.0.0.0:8080 (incremental=False) +[r24] listening on 0.0.0.0:8080 (incremental=False) +[r25] listening on 0.0.0.0:8080 (incremental=False) +[r26] listening on 0.0.0.0:8080 (incremental=False) +[r27] listening on 0.0.0.0:8080 (incremental=False) +[r28] listening on 0.0.0.0:8080 (incremental=False) +[r29] listening on 0.0.0.0:8080 (incremental=False) +[r30] listening on 0.0.0.0:8080 (incremental=False) +[r31] listening on 0.0.0.0:8080 (incremental=False) +[r32] listening on 0.0.0.0:8080 (incremental=False) +[r33] listening on 0.0.0.0:8080 (incremental=False) +[r34] listening on 0.0.0.0:8080 (incremental=False) +[r35] listening on 0.0.0.0:8080 (incremental=False) +[r36] listening on 0.0.0.0:8080 (incremental=False) +[r37] listening on 0.0.0.0:8080 (incremental=False) +[r38] listening on 0.0.0.0:8080 (incremental=False) +[r39] listening on 0.0.0.0:8080 (incremental=False) +[r40] listening on 0.0.0.0:8080 (incremental=False) +[r41] listening on 0.0.0.0:8080 (incremental=False) +[r42] listening on 0.0.0.0:8080 (incremental=False) +[r43] listening on 0.0.0.0:8080 (incremental=False) +[r44] listening on 0.0.0.0:8080 (incremental=False) +[r45] listening on 0.0.0.0:8080 (incremental=False) +[r46] listening on 0.0.0.0:8080 (incremental=False) +[r47] listening on 0.0.0.0:8080 (incremental=False) +[r48] listening on 0.0.0.0:8080 (incremental=False) +[r49] listening on 0.0.0.0:8080 (incremental=False) +[r50] listening on 0.0.0.0:8080 (incremental=False) +[r51] listening on 0.0.0.0:8080 (incremental=False) +[r52] listening on 0.0.0.0:8080 (incremental=False) +[r53] listening on 0.0.0.0:8080 (incremental=False) +[r54] listening on 0.0.0.0:8080 (incremental=False) +[r55] listening on 0.0.0.0:8080 (incremental=False) +[r56] listening on 0.0.0.0:8080 (incremental=False) +[r57] listening on 0.0.0.0:8080 (incremental=False) +[r58] listening on 0.0.0.0:8080 (incremental=False) +[r59] listening on 0.0.0.0:8080 (incremental=False) +[r60] listening on 0.0.0.0:8080 (incremental=False) +[r61] listening on 0.0.0.0:8080 (incremental=False) +[r62] listening on 0.0.0.0:8080 (incremental=False) +[r63] listening on 0.0.0.0:8080 (incremental=False) diff --git a/site/static/logs/echo-ws-pipeline/4096/minima-ws.log b/site/static/logs/echo-ws-pipeline/4096/minima-ws.log new file mode 100644 index 00000000..69c25f99 --- /dev/null +++ b/site/static/logs/echo-ws-pipeline/4096/minima-ws.log @@ -0,0 +1,65 @@ +[minima-ws] 64 reactors on :8080 (incremental=False) — hand-rolled WebSocket echo +[r3] listening on 0.0.0.0:8080 (incremental=False) +[r0] listening on 0.0.0.0:8080 (incremental=False) +[r4] listening on 0.0.0.0:8080 (incremental=False) +[r2] listening on 0.0.0.0:8080 (incremental=False) +[r1] listening on 0.0.0.0:8080 (incremental=False) +[r5] listening on 0.0.0.0:8080 (incremental=False) +[r6] listening on 0.0.0.0:8080 (incremental=False) +[r7] listening on 0.0.0.0:8080 (incremental=False) +[r8] listening on 0.0.0.0:8080 (incremental=False) +[r10] listening on 0.0.0.0:8080 (incremental=False) +[r11] listening on 0.0.0.0:8080 (incremental=False) +[r9] listening on 0.0.0.0:8080 (incremental=False) +[r12] listening on 0.0.0.0:8080 (incremental=False) +[r13] listening on 0.0.0.0:8080 (incremental=False) +[r14] listening on 0.0.0.0:8080 (incremental=False) +[r15] listening on 0.0.0.0:8080 (incremental=False) +[r16] listening on 0.0.0.0:8080 (incremental=False) +[r17] listening on 0.0.0.0:8080 (incremental=False) +[r18] listening on 0.0.0.0:8080 (incremental=False) +[r19] listening on 0.0.0.0:8080 (incremental=False) +[r20] listening on 0.0.0.0:8080 (incremental=False) +[r21] listening on 0.0.0.0:8080 (incremental=False) +[r22] listening on 0.0.0.0:8080 (incremental=False) +[r23] listening on 0.0.0.0:8080 (incremental=False) +[r24] listening on 0.0.0.0:8080 (incremental=False) +[r25] listening on 0.0.0.0:8080 (incremental=False) +[r26] listening on 0.0.0.0:8080 (incremental=False) +[r27] listening on 0.0.0.0:8080 (incremental=False) +[r28] listening on 0.0.0.0:8080 (incremental=False) +[r29] listening on 0.0.0.0:8080 (incremental=False) +[r30] listening on 0.0.0.0:8080 (incremental=False) +[r31] listening on 0.0.0.0:8080 (incremental=False) +[r32] listening on 0.0.0.0:8080 (incremental=False) +[r33] listening on 0.0.0.0:8080 (incremental=False) +[r34] listening on 0.0.0.0:8080 (incremental=False) +[r35] listening on 0.0.0.0:8080 (incremental=False) +[r36] listening on 0.0.0.0:8080 (incremental=False) +[r37] listening on 0.0.0.0:8080 (incremental=False) +[r38] listening on 0.0.0.0:8080 (incremental=False) +[r39] listening on 0.0.0.0:8080 (incremental=False) +[r40] listening on 0.0.0.0:8080 (incremental=False) +[r41] listening on 0.0.0.0:8080 (incremental=False) +[r42] listening on 0.0.0.0:8080 (incremental=False) +[r43] listening on 0.0.0.0:8080 (incremental=False) +[r44] listening on 0.0.0.0:8080 (incremental=False) +[r45] listening on 0.0.0.0:8080 (incremental=False) +[r46] listening on 0.0.0.0:8080 (incremental=False) +[r47] listening on 0.0.0.0:8080 (incremental=False) +[r48] listening on 0.0.0.0:8080 (incremental=False) +[r49] listening on 0.0.0.0:8080 (incremental=False) +[r50] listening on 0.0.0.0:8080 (incremental=False) +[r51] listening on 0.0.0.0:8080 (incremental=False) +[r52] listening on 0.0.0.0:8080 (incremental=False) +[r53] listening on 0.0.0.0:8080 (incremental=False) +[r54] listening on 0.0.0.0:8080 (incremental=False) +[r55] listening on 0.0.0.0:8080 (incremental=False) +[r56] listening on 0.0.0.0:8080 (incremental=False) +[r57] listening on 0.0.0.0:8080 (incremental=False) +[r58] listening on 0.0.0.0:8080 (incremental=False) +[r59] listening on 0.0.0.0:8080 (incremental=False) +[r60] listening on 0.0.0.0:8080 (incremental=False) +[r61] listening on 0.0.0.0:8080 (incremental=False) +[r62] listening on 0.0.0.0:8080 (incremental=False) +[r63] listening on 0.0.0.0:8080 (incremental=False) diff --git a/site/static/logs/echo-ws-pipeline/512/minima-ws.log b/site/static/logs/echo-ws-pipeline/512/minima-ws.log new file mode 100644 index 00000000..47aa333d --- /dev/null +++ b/site/static/logs/echo-ws-pipeline/512/minima-ws.log @@ -0,0 +1,65 @@ +[minima-ws] 64 reactors on :8080 (incremental=False) — hand-rolled WebSocket echo +[r2] listening on 0.0.0.0:8080 (incremental=False) +[r4] listening on 0.0.0.0:8080 (incremental=False) +[r3] listening on 0.0.0.0:8080 (incremental=False) +[r0] listening on 0.0.0.0:8080 (incremental=False) +[r1] listening on 0.0.0.0:8080 (incremental=False) +[r5] listening on 0.0.0.0:8080 (incremental=False) +[r6] listening on 0.0.0.0:8080 (incremental=False) +[r7] listening on 0.0.0.0:8080 (incremental=False) +[r8] listening on 0.0.0.0:8080 (incremental=False) +[r10] listening on 0.0.0.0:8080 (incremental=False) +[r11] listening on 0.0.0.0:8080 (incremental=False) +[r9] listening on 0.0.0.0:8080 (incremental=False) +[r12] listening on 0.0.0.0:8080 (incremental=False) +[r13] listening on 0.0.0.0:8080 (incremental=False) +[r14] listening on 0.0.0.0:8080 (incremental=False) +[r15] listening on 0.0.0.0:8080 (incremental=False) +[r16] listening on 0.0.0.0:8080 (incremental=False) +[r17] listening on 0.0.0.0:8080 (incremental=False) +[r18] listening on 0.0.0.0:8080 (incremental=False) +[r19] listening on 0.0.0.0:8080 (incremental=False) +[r20] listening on 0.0.0.0:8080 (incremental=False) +[r21] listening on 0.0.0.0:8080 (incremental=False) +[r22] listening on 0.0.0.0:8080 (incremental=False) +[r23] listening on 0.0.0.0:8080 (incremental=False) +[r24] listening on 0.0.0.0:8080 (incremental=False) +[r25] listening on 0.0.0.0:8080 (incremental=False) +[r26] listening on 0.0.0.0:8080 (incremental=False) +[r27] listening on 0.0.0.0:8080 (incremental=False) +[r28] listening on 0.0.0.0:8080 (incremental=False) +[r29] listening on 0.0.0.0:8080 (incremental=False) +[r30] listening on 0.0.0.0:8080 (incremental=False) +[r31] listening on 0.0.0.0:8080 (incremental=False) +[r32] listening on 0.0.0.0:8080 (incremental=False) +[r33] listening on 0.0.0.0:8080 (incremental=False) +[r34] listening on 0.0.0.0:8080 (incremental=False) +[r35] listening on 0.0.0.0:8080 (incremental=False) +[r36] listening on 0.0.0.0:8080 (incremental=False) +[r37] listening on 0.0.0.0:8080 (incremental=False) +[r38] listening on 0.0.0.0:8080 (incremental=False) +[r39] listening on 0.0.0.0:8080 (incremental=False) +[r40] listening on 0.0.0.0:8080 (incremental=False) +[r41] listening on 0.0.0.0:8080 (incremental=False) +[r42] listening on 0.0.0.0:8080 (incremental=False) +[r43] listening on 0.0.0.0:8080 (incremental=False) +[r44] listening on 0.0.0.0:8080 (incremental=False) +[r45] listening on 0.0.0.0:8080 (incremental=False) +[r46] listening on 0.0.0.0:8080 (incremental=False) +[r47] listening on 0.0.0.0:8080 (incremental=False) +[r48] listening on 0.0.0.0:8080 (incremental=False) +[r49] listening on 0.0.0.0:8080 (incremental=False) +[r50] listening on 0.0.0.0:8080 (incremental=False) +[r51] listening on 0.0.0.0:8080 (incremental=False) +[r52] listening on 0.0.0.0:8080 (incremental=False) +[r53] listening on 0.0.0.0:8080 (incremental=False) +[r54] listening on 0.0.0.0:8080 (incremental=False) +[r55] listening on 0.0.0.0:8080 (incremental=False) +[r56] listening on 0.0.0.0:8080 (incremental=False) +[r57] listening on 0.0.0.0:8080 (incremental=False) +[r58] listening on 0.0.0.0:8080 (incremental=False) +[r59] listening on 0.0.0.0:8080 (incremental=False) +[r60] listening on 0.0.0.0:8080 (incremental=False) +[r61] listening on 0.0.0.0:8080 (incremental=False) +[r62] listening on 0.0.0.0:8080 (incremental=False) +[r63] listening on 0.0.0.0:8080 (incremental=False) diff --git a/site/static/logs/echo-ws/16384/minima-ws.log b/site/static/logs/echo-ws/16384/minima-ws.log new file mode 100644 index 00000000..29ecd934 --- /dev/null +++ b/site/static/logs/echo-ws/16384/minima-ws.log @@ -0,0 +1,65 @@ +[minima-ws] 64 reactors on :8080 (incremental=False) — hand-rolled WebSocket echo +[r4] listening on 0.0.0.0:8080 (incremental=False) +[r3] listening on 0.0.0.0:8080 (incremental=False) +[r1] listening on 0.0.0.0:8080 (incremental=False) +[r0] listening on 0.0.0.0:8080 (incremental=False) +[r2] listening on 0.0.0.0:8080 (incremental=False) +[r5] listening on 0.0.0.0:8080 (incremental=False) +[r6] listening on 0.0.0.0:8080 (incremental=False) +[r7] listening on 0.0.0.0:8080 (incremental=False) +[r8] listening on 0.0.0.0:8080 (incremental=False) +[r10] listening on 0.0.0.0:8080 (incremental=False) +[r11] listening on 0.0.0.0:8080 (incremental=False) +[r9] listening on 0.0.0.0:8080 (incremental=False) +[r12] listening on 0.0.0.0:8080 (incremental=False) +[r13] listening on 0.0.0.0:8080 (incremental=False) +[r14] listening on 0.0.0.0:8080 (incremental=False) +[r15] listening on 0.0.0.0:8080 (incremental=False) +[r16] listening on 0.0.0.0:8080 (incremental=False) +[r17] listening on 0.0.0.0:8080 (incremental=False) +[r18] listening on 0.0.0.0:8080 (incremental=False) +[r19] listening on 0.0.0.0:8080 (incremental=False) +[r20] listening on 0.0.0.0:8080 (incremental=False) +[r21] listening on 0.0.0.0:8080 (incremental=False) +[r22] listening on 0.0.0.0:8080 (incremental=False) +[r23] listening on 0.0.0.0:8080 (incremental=False) +[r24] listening on 0.0.0.0:8080 (incremental=False) +[r25] listening on 0.0.0.0:8080 (incremental=False) +[r26] listening on 0.0.0.0:8080 (incremental=False) +[r27] listening on 0.0.0.0:8080 (incremental=False) +[r28] listening on 0.0.0.0:8080 (incremental=False) +[r29] listening on 0.0.0.0:8080 (incremental=False) +[r30] listening on 0.0.0.0:8080 (incremental=False) +[r31] listening on 0.0.0.0:8080 (incremental=False) +[r32] listening on 0.0.0.0:8080 (incremental=False) +[r33] listening on 0.0.0.0:8080 (incremental=False) +[r34] listening on 0.0.0.0:8080 (incremental=False) +[r35] listening on 0.0.0.0:8080 (incremental=False) +[r36] listening on 0.0.0.0:8080 (incremental=False) +[r37] listening on 0.0.0.0:8080 (incremental=False) +[r38] listening on 0.0.0.0:8080 (incremental=False) +[r39] listening on 0.0.0.0:8080 (incremental=False) +[r40] listening on 0.0.0.0:8080 (incremental=False) +[r41] listening on 0.0.0.0:8080 (incremental=False) +[r42] listening on 0.0.0.0:8080 (incremental=False) +[r43] listening on 0.0.0.0:8080 (incremental=False) +[r44] listening on 0.0.0.0:8080 (incremental=False) +[r45] listening on 0.0.0.0:8080 (incremental=False) +[r46] listening on 0.0.0.0:8080 (incremental=False) +[r47] listening on 0.0.0.0:8080 (incremental=False) +[r48] listening on 0.0.0.0:8080 (incremental=False) +[r49] listening on 0.0.0.0:8080 (incremental=False) +[r50] listening on 0.0.0.0:8080 (incremental=False) +[r51] listening on 0.0.0.0:8080 (incremental=False) +[r52] listening on 0.0.0.0:8080 (incremental=False) +[r53] listening on 0.0.0.0:8080 (incremental=False) +[r54] listening on 0.0.0.0:8080 (incremental=False) +[r55] listening on 0.0.0.0:8080 (incremental=False) +[r56] listening on 0.0.0.0:8080 (incremental=False) +[r57] listening on 0.0.0.0:8080 (incremental=False) +[r58] listening on 0.0.0.0:8080 (incremental=False) +[r59] listening on 0.0.0.0:8080 (incremental=False) +[r60] listening on 0.0.0.0:8080 (incremental=False) +[r61] listening on 0.0.0.0:8080 (incremental=False) +[r62] listening on 0.0.0.0:8080 (incremental=False) +[r63] listening on 0.0.0.0:8080 (incremental=False) diff --git a/site/static/logs/echo-ws/4096/minima-ws.log b/site/static/logs/echo-ws/4096/minima-ws.log new file mode 100644 index 00000000..ca9fd87e --- /dev/null +++ b/site/static/logs/echo-ws/4096/minima-ws.log @@ -0,0 +1,65 @@ +[minima-ws] 64 reactors on :8080 (incremental=False) — hand-rolled WebSocket echo +[r1] listening on 0.0.0.0:8080 (incremental=False) +[r2] listening on 0.0.0.0:8080 (incremental=False) +[r0] listening on 0.0.0.0:8080 (incremental=False) +[r3] listening on 0.0.0.0:8080 (incremental=False) +[r4] listening on 0.0.0.0:8080 (incremental=False) +[r5] listening on 0.0.0.0:8080 (incremental=False) +[r6] listening on 0.0.0.0:8080 (incremental=False) +[r7] listening on 0.0.0.0:8080 (incremental=False) +[r8] listening on 0.0.0.0:8080 (incremental=False) +[r10] listening on 0.0.0.0:8080 (incremental=False) +[r11] listening on 0.0.0.0:8080 (incremental=False) +[r9] listening on 0.0.0.0:8080 (incremental=False) +[r12] listening on 0.0.0.0:8080 (incremental=False) +[r13] listening on 0.0.0.0:8080 (incremental=False) +[r14] listening on 0.0.0.0:8080 (incremental=False) +[r15] listening on 0.0.0.0:8080 (incremental=False) +[r16] listening on 0.0.0.0:8080 (incremental=False) +[r17] listening on 0.0.0.0:8080 (incremental=False) +[r18] listening on 0.0.0.0:8080 (incremental=False) +[r19] listening on 0.0.0.0:8080 (incremental=False) +[r20] listening on 0.0.0.0:8080 (incremental=False) +[r21] listening on 0.0.0.0:8080 (incremental=False) +[r22] listening on 0.0.0.0:8080 (incremental=False) +[r23] listening on 0.0.0.0:8080 (incremental=False) +[r24] listening on 0.0.0.0:8080 (incremental=False) +[r25] listening on 0.0.0.0:8080 (incremental=False) +[r26] listening on 0.0.0.0:8080 (incremental=False) +[r27] listening on 0.0.0.0:8080 (incremental=False) +[r28] listening on 0.0.0.0:8080 (incremental=False) +[r29] listening on 0.0.0.0:8080 (incremental=False) +[r30] listening on 0.0.0.0:8080 (incremental=False) +[r31] listening on 0.0.0.0:8080 (incremental=False) +[r32] listening on 0.0.0.0:8080 (incremental=False) +[r33] listening on 0.0.0.0:8080 (incremental=False) +[r34] listening on 0.0.0.0:8080 (incremental=False) +[r35] listening on 0.0.0.0:8080 (incremental=False) +[r36] listening on 0.0.0.0:8080 (incremental=False) +[r37] listening on 0.0.0.0:8080 (incremental=False) +[r38] listening on 0.0.0.0:8080 (incremental=False) +[r39] listening on 0.0.0.0:8080 (incremental=False) +[r40] listening on 0.0.0.0:8080 (incremental=False) +[r41] listening on 0.0.0.0:8080 (incremental=False) +[r42] listening on 0.0.0.0:8080 (incremental=False) +[r43] listening on 0.0.0.0:8080 (incremental=False) +[r44] listening on 0.0.0.0:8080 (incremental=False) +[r45] listening on 0.0.0.0:8080 (incremental=False) +[r46] listening on 0.0.0.0:8080 (incremental=False) +[r47] listening on 0.0.0.0:8080 (incremental=False) +[r48] listening on 0.0.0.0:8080 (incremental=False) +[r49] listening on 0.0.0.0:8080 (incremental=False) +[r50] listening on 0.0.0.0:8080 (incremental=False) +[r51] listening on 0.0.0.0:8080 (incremental=False) +[r52] listening on 0.0.0.0:8080 (incremental=False) +[r53] listening on 0.0.0.0:8080 (incremental=False) +[r54] listening on 0.0.0.0:8080 (incremental=False) +[r55] listening on 0.0.0.0:8080 (incremental=False) +[r56] listening on 0.0.0.0:8080 (incremental=False) +[r57] listening on 0.0.0.0:8080 (incremental=False) +[r58] listening on 0.0.0.0:8080 (incremental=False) +[r59] listening on 0.0.0.0:8080 (incremental=False) +[r60] listening on 0.0.0.0:8080 (incremental=False) +[r61] listening on 0.0.0.0:8080 (incremental=False) +[r62] listening on 0.0.0.0:8080 (incremental=False) +[r63] listening on 0.0.0.0:8080 (incremental=False) diff --git a/site/static/logs/echo-ws/512/minima-ws.log b/site/static/logs/echo-ws/512/minima-ws.log new file mode 100644 index 00000000..f0fd452d --- /dev/null +++ b/site/static/logs/echo-ws/512/minima-ws.log @@ -0,0 +1,65 @@ +[minima-ws] 64 reactors on :8080 (incremental=False) — hand-rolled WebSocket echo +[r1] listening on 0.0.0.0:8080 (incremental=False) +[r3] listening on 0.0.0.0:8080 (incremental=False) +[r0] listening on 0.0.0.0:8080 (incremental=False) +[r4] listening on 0.0.0.0:8080 (incremental=False) +[r2] listening on 0.0.0.0:8080 (incremental=False) +[r6] listening on 0.0.0.0:8080 (incremental=False) +[r5] listening on 0.0.0.0:8080 (incremental=False) +[r7] listening on 0.0.0.0:8080 (incremental=False) +[r8] listening on 0.0.0.0:8080 (incremental=False) +[r10] listening on 0.0.0.0:8080 (incremental=False) +[r11] listening on 0.0.0.0:8080 (incremental=False) +[r12] listening on 0.0.0.0:8080 (incremental=False) +[r13] listening on 0.0.0.0:8080 (incremental=False) +[r14] listening on 0.0.0.0:8080 (incremental=False) +[r15] listening on 0.0.0.0:8080 (incremental=False) +[r9] listening on 0.0.0.0:8080 (incremental=False) +[r16] listening on 0.0.0.0:8080 (incremental=False) +[r17] listening on 0.0.0.0:8080 (incremental=False) +[r18] listening on 0.0.0.0:8080 (incremental=False) +[r19] listening on 0.0.0.0:8080 (incremental=False) +[r20] listening on 0.0.0.0:8080 (incremental=False) +[r21] listening on 0.0.0.0:8080 (incremental=False) +[r22] listening on 0.0.0.0:8080 (incremental=False) +[r23] listening on 0.0.0.0:8080 (incremental=False) +[r24] listening on 0.0.0.0:8080 (incremental=False) +[r25] listening on 0.0.0.0:8080 (incremental=False) +[r26] listening on 0.0.0.0:8080 (incremental=False) +[r27] listening on 0.0.0.0:8080 (incremental=False) +[r28] listening on 0.0.0.0:8080 (incremental=False) +[r29] listening on 0.0.0.0:8080 (incremental=False) +[r30] listening on 0.0.0.0:8080 (incremental=False) +[r31] listening on 0.0.0.0:8080 (incremental=False) +[r32] listening on 0.0.0.0:8080 (incremental=False) +[r33] listening on 0.0.0.0:8080 (incremental=False) +[r34] listening on 0.0.0.0:8080 (incremental=False) +[r35] listening on 0.0.0.0:8080 (incremental=False) +[r36] listening on 0.0.0.0:8080 (incremental=False) +[r37] listening on 0.0.0.0:8080 (incremental=False) +[r38] listening on 0.0.0.0:8080 (incremental=False) +[r39] listening on 0.0.0.0:8080 (incremental=False) +[r40] listening on 0.0.0.0:8080 (incremental=False) +[r41] listening on 0.0.0.0:8080 (incremental=False) +[r42] listening on 0.0.0.0:8080 (incremental=False) +[r43] listening on 0.0.0.0:8080 (incremental=False) +[r44] listening on 0.0.0.0:8080 (incremental=False) +[r45] listening on 0.0.0.0:8080 (incremental=False) +[r46] listening on 0.0.0.0:8080 (incremental=False) +[r47] listening on 0.0.0.0:8080 (incremental=False) +[r48] listening on 0.0.0.0:8080 (incremental=False) +[r49] listening on 0.0.0.0:8080 (incremental=False) +[r50] listening on 0.0.0.0:8080 (incremental=False) +[r51] listening on 0.0.0.0:8080 (incremental=False) +[r52] listening on 0.0.0.0:8080 (incremental=False) +[r53] listening on 0.0.0.0:8080 (incremental=False) +[r54] listening on 0.0.0.0:8080 (incremental=False) +[r55] listening on 0.0.0.0:8080 (incremental=False) +[r56] listening on 0.0.0.0:8080 (incremental=False) +[r57] listening on 0.0.0.0:8080 (incremental=False) +[r58] listening on 0.0.0.0:8080 (incremental=False) +[r59] listening on 0.0.0.0:8080 (incremental=False) +[r60] listening on 0.0.0.0:8080 (incremental=False) +[r61] listening on 0.0.0.0:8080 (incremental=False) +[r62] listening on 0.0.0.0:8080 (incremental=False) +[r63] listening on 0.0.0.0:8080 (incremental=False)