Skirr prototype: local HTTP/1 comparison One worker pinned to CPU 0; wrk on CPUs 4-7; identical apps and Python. Access logs, request IDs, compression and response caches disabled; lifespan recorded per matrix. Server allocator/GC defaults retained; Skirr does not alter application GC policy. Medians of repeated runs; counts, duration and warmup are recorded per matrix. Temporary performance-profile hold for final matrices; CPU clocks sampled per run. No TLS, HTTP/2, WebSockets or pipelining in the throughput workload. Exact body/status checked before/after each run, not on every wrk response. P99 below is median per-run wrk P99, not a pooled percentile. Timeout semantics follow the recorded generator; all counters are retained. These measurements do not establish production readiness or general superiority. Connections: 64; repeats: 5; duration: 8s; warmup: 1s; offered rate: unlimited; lifespan: off Power profile: performance Versions: {"fastapi": "0.143.1", "peregrine-server": "1.1.7", "uvloop": "0.23.0", "weft-server": "0.1.0"} Workload Server Req/s P99 ms IO failures Timeouts HTTP errors PSS MiB RPS range P99 range ms fastapi_json peregrine 25,820 3.73 0 0 0 55.2 25,740-25,944 3.56-4.02 fastapi_json skirr 25,897 3.93 0 0 0 37.9 25,770-26,000 3.72-4.54 fastapi_json skirr-before 25,041 3.61 0 0 0 37.9 24,898-25,090 3.01-4.89 Sampled server CPU clocks (MHz; median per-run mean, full observed range): peregrine 4483; 4200-4700 skirr 4505; 4200-4700 skirr-before 4503; 4200-4700 Optimized Skirr change versus same-session saved baseline: fastapi_json +3.4%; versus Peregrine +0.3% Raw artifact: bench/results/latency-round4-final-c64/results.json Connections: 256; repeats: 5; duration: 8s; warmup: 1s; offered rate: unlimited; lifespan: off Power profile: performance Versions: {"fastapi": "0.143.1", "peregrine-server": "1.1.7", "uvloop": "0.23.0", "weft-server": "0.1.0"} Workload Server Req/s P99 ms IO failures Timeouts HTTP errors PSS MiB RPS range P99 range ms fastapi_json peregrine 26,322 16.34 0 0 0 56.3 25,989-26,394 11.80-18.19 fastapi_json skirr 25,716 14.38 0 0 0 37.9 25,472-26,058 14.09-16.68 fastapi_json skirr-before 24,936 15.35 0 0 0 38.0 24,649-25,276 15.14-15.85 Sampled server CPU clocks (MHz; median per-run mean, full observed range): peregrine 4392; 399-4700 skirr 4409; 399-4700 skirr-before 4413; 400-4700 Optimized Skirr change versus same-session saved baseline: fastapi_json +3.1%; versus Peregrine -2.3% Raw artifact: bench/results/latency-round4-final-c256/results.json Connections: 64; repeats: 3; duration: 5s; warmup: 1s; offered rate: unlimited; lifespan: off Power profile: performance Versions: {"fastapi": "0.143.1", "peregrine-server": "1.1.7", "uvloop": "0.23.0", "weft-server": "0.1.0"} Workload Server Req/s P99 ms IO failures Timeouts HTTP errors PSS MiB RPS range P99 range ms post_4k peregrine 168,097 0.81 0 0 0 33.5 166,822-169,571 0.71-0.87 post_4k skirr 177,582 0.61 0 0 0 17.2 177,320-182,062 0.57-0.66 post_4k skirr-before 170,837 0.79 0 0 0 17.2 168,542-171,581 0.61-0.94 raw_get peregrine 206,398 0.66 0 0 0 32.6 205,568-207,784 0.59-0.76 raw_get skirr 225,310 0.56 0 0 0 17.2 224,678-228,404 0.51-0.77 raw_get skirr-before 219,191 0.56 0 0 0 17.1 218,013-219,963 0.52-0.66 Sampled server CPU clocks (MHz; median per-run mean, full observed range): peregrine 4475; 4200-4700 skirr 4525; 4200-4700 skirr-before 4471; 4200-4700 Optimized Skirr change versus same-session saved baseline: post_4k +3.9%; versus Peregrine +5.6% raw_get +2.8%; versus Peregrine +9.2% Streaming: app waits 50ms after the first chunk; 20 sequential samples. skirr first-byte 0.531ms; total 50.669ms peregrine first-byte 0.437ms; total 50.627ms skirr-before first-byte 0.602ms; total 50.772ms Raw artifact: bench/results/latency-round4-final-controls-c64/results.json Connections: 256; repeats: 3; duration: 5s; warmup: 1s; offered rate: unlimited; lifespan: off Power profile: performance Versions: {"fastapi": "0.143.1", "peregrine-server": "1.1.7", "uvloop": "0.23.0", "weft-server": "0.1.0"} Workload Server Req/s P99 ms IO failures Timeouts HTTP errors PSS MiB RPS range P99 range ms post_4k peregrine 158,892 2.66 0 0 0 38.6 158,279-160,054 2.60-2.72 post_4k skirr 169,572 2.49 0 0 0 18.1 169,558-170,261 2.33-2.71 post_4k skirr-before 161,667 2.67 0 0 0 18.1 161,359-164,768 2.57-3.39 raw_get peregrine 208,353 2.48 0 0 0 33.6 207,159-208,768 2.19-3.45 raw_get skirr 224,803 1.95 0 0 0 18.1 219,260-226,137 1.43-3.45 raw_get skirr-before 219,102 1.85 0 0 0 17.1 218,166-219,392 1.77-1.95 Sampled server CPU clocks (MHz; median per-run mean, full observed range): peregrine 4356; 400-4665 skirr 4461; 400-4700 skirr-before 4365; 400-4700 Optimized Skirr change versus same-session saved baseline: post_4k +4.9%; versus Peregrine +6.7% raw_get +2.6%; versus Peregrine +7.9% Streaming: app waits 50ms after the first chunk; 20 sequential samples. skirr first-byte 0.624ms; total 50.643ms peregrine first-byte 0.621ms; total 50.790ms skirr-before first-byte 0.510ms; total 50.605ms Raw artifact: bench/results/latency-round4-final-controls-c256/results.json Connections: 64; repeats: 3; duration: 8s; warmup: 1s; offered rate: unlimited; lifespan: on Power profile: performance Versions: {"fastapi": "0.143.1", "peregrine-server": "1.1.7", "uvloop": "0.23.0", "weft-server": "0.1.0"} Workload Server Req/s P99 ms IO failures Timeouts HTTP errors PSS MiB RPS range P99 range ms fastapi_json peregrine 25,850 3.98 0 0 0 55.2 25,746-25,971 3.47-4.33 fastapi_json skirr 25,693 3.73 0 0 0 37.9 25,659-25,818 3.71-4.39 fastapi_json skirr-before 25,226 3.60 0 0 0 37.9 25,084-25,407 3.59-3.69 Sampled server CPU clocks (MHz; median per-run mean, full observed range): peregrine 4466; 4200-4700 skirr 4464; 4200-4675 skirr-before 4495; 4200-4700 Optimized Skirr change versus same-session saved baseline: fastapi_json +1.9%; versus Peregrine -0.6% Raw artifact: bench/results/latency-round4-final-life-on/results.json Total completed requests across these comparisons: 43,138,827 wrk histogram counter behavior: https://github.com/wg/wrk/blob/4.1.0/src/wrk.c#L301-L325 wrk2 corrected fixed-rate histograms: https://github.com/giltene/wrk2/tree/44a94c17d8e6a0bac8559b53da76848e430cb7a7