Repository navigation
Merged
Conversation
The parity boot of #1114 missed its 100 ms mark by 30 KB, 0.5 %, against the lower of two Linux runs. That rule, one ToyOS run between two Linux runs, fails one session in three when the systems are alike, and a run's mean of five connections gives no spread to judge a miss by. osbench's upload row now carries each round's mark beside the mean (`peer_received_by_<ms>ms_bytes=a,b,c,d,e`), so one Linux, ToyOS, Linux session gives five connections against ten. The ramp issue records why the miss is not resolved: the peer's read step (up to 64 KiB, twice the miss), the session-to-session spread, and a host model of [tcp]'s ramp in which neither the half-window bucket nor growing cwnd at a window stop moves the 100 ms mark by 0.1 MB. Its exit becomes an exact one-sided rank test of those rounds at p > 0.05, with Linux's own two runs as the check that connections are exchangeable across runs. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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.
Problem
#1114's parity boot missed the ramp issue's 100 ms mark by 30 KB, 0.5 %, against the lower of two Linux runs. Its 300 ms mark, p50 and loss passed.
Finding: the bench does not resolve the miss
No sender cause was found. Three readings put the miss below what that session form can tell apart:
The candidate causes were checked against the RFCs and a host model:
tcp_pacing_ss_ratiodefault of 200.In a model of [tcp]'s host network (card at 113 MB/s, round trips of 2, 4 and 8 ms), neither the half-window bucket nor growing cwnd at a window stop moved the 100 ms mark by 0.1 MB. RFC 9438 §4.6 admits RFC 7661 for such a stop. Pacing itself is worth 0.07–1.1 MB there. The model's receiver is [tcp]'s, not the peer's Linux, so it rules out sender-side mechanisms only within that model.
On the bench, both senders are held by the peer's window first: ToyOS for 66 ms a connection, Linux for 92–148 ms. So the first 100 ms mostly reads the receiver's window growth, which the two senders share.
Change
osbench's upload row now carries each round's mark beside the mean:peer_received_by_<ms>ms_bytes=a,b,c,d,e. So a Linux, ToyOS, Linux session gives five ToyOS connections against ten Linux ones.The peer is unchanged.
osbench-lan's source has not changed since the running peer was built.Checks (at 4f52c30)
cargo run -- --ci host: 108 steps green, exit 0.--metal-readback, exit 2 (staged). Image sha256 c2f145b8…; it carries the new field.osbenchrebuilt at 4f52c30 with the earlier recipe, EXIT=0.Evidence: https://github.com/ToyOSOrg/evidence/tree/fafecedccf763c601a03c49422d636ed7ea498d1/r1
Risks
🤖 Generated with Claude Code