Repository navigation
Conversation
Pin nilo at c4e2d08 (Zig 0.17.0) and build it with http2, tls and libdeflate. Serve h2c on 8080 and 8082 and HTTP/2 over TLS on 8443, with /baseline2, /static and benchmark.BenchmarkService/GetSum. Set zio to work stealing, as a measurement of the async-db gap, and subscribe to the six new profiles.
|
/benchmark -f nilo |
|
👋 Benchmark request received. A collaborator will review and approve the run. |
Benchmark ResultsFramework:
Full log |
…ic disk The work-stealing override from the last run is gone: it did not close the async-db gap and it scattered every HTTP/2 stream off its connection's executor. The pin brings inline HTTP/2 calls for routes that never wait, JSON written once into the arena, a compressor slot per executor, and staticWith(.follow = true), which keeps the directory in memory and in step with the disk and serves the .br/.gz siblings itself. The database profiles print pool statistics to the log when DATABASE_URL is set.
|
/benchmark -f nilo |
|
👋 Benchmark request received. A collaborator will review and approve the run. |
Benchmark ResultsFramework:
Full log |
|
/benchmark -f nilo --save |
|
👋 Benchmark request received. A collaborator will review and approve the run. |
|
|
…repin-and-http2
|
/benchmark -f nilo --save |
|
👋 Benchmark request received. A collaborator will review and approve the run. |
|
/benchmark -f nilo --save |
|
👋 Benchmark request received. A collaborator will review and approve the run. |
Benchmark ResultsFramework:
Full log |
This updates the nilo entry from its Zig 0.16 pin to nilo c4e2d08, which needs Zig 0.17.0.
What changes:
build.zig.zonpins nilo atc4e2d0852bfab4ef0e737414b0c2ea9a63b2c8caand the Dockerfile builds with Zig 0.17.0. The CPU flags stayx86_64_v3+aes+pclmul..pinnedby default. This entry sets zio's.work_stealingthrough the rootzio_options, which is zio's own default and the mode dusty runs. Onasync-dbnilo currently reads 57k req/s at 830% CPU against dusty's 290k at 4,606%, so it is waiting rather than working, and a pinned fiber woken by the pool cannot be picked up by an idle thread. I do not know that scheduling is the cause; a run on the board's 64 cores is how to find out. If it does not moveasync-db, or it hurts another profile, I will revert it..libdeflate = true, so the compression middleware gzips with libdeflate instead ofstd.flate..http2 = true, nilo serves HTTP/2 and unary gRPC from the same routes. Listeners: 8080 is HTTP/1.1 plus h2c, 8081 is TLS, 8082 is h2c with prior knowledge, 8443 is HTTP/2 over TLS by ALPN. Addedbaseline-h2,baseline-h2c,json-h2c,static-h2,unary-grpcandunary-grpc-tls.static-h2uses nilo's static handler withreloadon, so it follows the disk as the profile's rule requires.fortunes) and the streaming gRPC profiles, because nilo's gRPC is unary only.scripts/validate.sh nilopasses all 101 checks, covering every subscribed profile.site/data/tls/nilo.jsonis the file that run generated.