Repository navigation
Run the hello benchmark's closed-loop client with two workers on two cores, and document hana in benchmarks/hosts. - #66
Merged
Conversation
…cores, as a client layout screen on hana found, and document each measuring host's hardware and CPU placement in benchmarks/hosts.
ioquatix
added a commit
that referenced
this pull request
Nov 9, 2026
…y` stop the server on a missing ready line or a signal. Correct three figures from #66 that an independent review found overstated or misattributed, checked against `samples.csv`, and make the screen's `layout.py` unable to leave a server running. - Layout A in `raw-closed` was below two workers in every round, but by 5.3% and 5.8% at the median and 3.5–6.7% in single rounds, not 5–6% in every round. - "B-u was within 1.1% of B" was the gap between the two "vs C" columns. By the median of each round's ratio, B-u was within 0.3% of B except for hyper-tokio in `http-closed`, at +2.1% (+1.6% between medians). - hana's host document: the worst single round was 8.9% below its cohort's median (base-native, A, server CPUs 2,3), so up to 9%, not 8%. `layout.py sample` now gives up if the server prints no address within 60 seconds, which previously held the host lock indefinitely. It also turns `SIGHUP`, `SIGINT` and `SIGTERM` into an exit through its cleanup, because the server and client run in their own sessions and a terminal's signals never reached them. The campaign lets the sample's stderr through so that a failure's reason shows. A successful sample measures and prints the same as before, and no measurements were rerun. The results readme notes that these changes came after the campaigns.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Run the hello benchmark's
raw-closedandhttp-closedclient with two workers, and document hana, the measuring host, in a newbenchmarks/hosts/hana.md, whose placement for the closed loop is--role-cpus client=1,2 --role-cpus server=3. The evidence is a screen on hana, recorded inbenchmarks/hello/results/client-layout-20261109.A review found
raw-closedlimited by its one client worker, and it was proposed to run two workers on the two hyperthreads of one core. The screen compared, with the server on CPU 3 and the scenarios' measured arguments, one worker on CPU 1 (A), two workers on CPU 1 and its sibling 5 (B), and two workers on CPUs 1 and 2, two cores (C), each pinned with the controller on CPU 0, and B and C again with the workers and controller unpinned within the client's CPUs, as--role-cpusplaces them (B-u, C-u). It covered base-native-raw and base-iouring-raw inraw-closed, base-native and hyper-tokio inhttp-closed, and the server on 2,3 and 2,3,6,7 under A. It ran six shuffled rounds under the host lock, with server CPU from/procover the client's window, and a supplementary campaign of six rounds with CPU frequencies and the server on 3,7.Requests per second are medians of six rounds; percentages are the median per-round ratio to C. No sample had an error or an invalid response.
raw-closedby 5–6% and is busy for 96–98% of the window inhttp-closed, so the client flags itself as saturated in both.raw-closed, but only with both threads saturated, leaving no headroom for a faster raw control. Inhttp-closedthey were 1–2% faster, but flagged as saturated, with the server spending up to 2.8% less CPU per request at the same frequency (about 4.0 GHz on CPU 3 in both layouts). The siblings' contention also doubles the client's dispatch lag p99 (0.7–0.8 µs to 1.1–1.3 µs) and raises its CPUs' softirq time per request by 53–73%.raw-closedand half inhttp-closed, with CVs of 0.3–1.4%, except base-native inhttp-closedunder pinned C (2.4–4.0%, from one or two low rounds); C-u had 1.0% there. Unpinned within--role-cpus client=1,2matched pinned within 0.6%.The fixed-rate scenarios keep one worker, as the screen did not measure them. Their placement in
hana.mdis the one the readme suggested before,client=1,5 server=2,3, marked as unmeasured.As the maintainer asked, hana's hardware and placement leave
benchmarks/hello/readme.mdforbenchmarks/hosts/hana.md. It records the CPU, SMT layout, caches, frequencies, scaling driver, governor and energy preference, memory, NUMA, kernel and distribution, mitigations, the NIC interrupt placement and loopback settings, the kinds of services sharing the host, the Rust toolchain, the CPU partitioning and the read-only commands that gathered it.benchmarks/hosts/readme.mdsays each host gets one such document.hana-linux.mdis an investigation rather than a host description, sohana.mdlinks to it and the other earlier placements.This is screening evidence: one host, one day and six rounds, run by the recorded
layout.pyrather than by base-benchmark, on a host shared with light services.