Repository navigation
ps-st3 0.6.2: correct parking, short-idle locality and no_std OS waits - #6
Merged
Merged
Conversation
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.
ps-st3 0.6.2 fixes ready-work handling and a parking race, exposes the OS parker without Rust std, and selects a short idle budget for locality.
A worker that reaches its LIFO quota now continues ready work without an idle backoff. The final check after announcing sleep includes peer queues, closing the gap between the last search and sleep. Publication and wake ordering have deterministic regression coverage.
Locality uses four empty search rounds of 128 spin hints before host parking. The opt-in Rust preset
almost_tokio()exposes displaced jobs through a FIFO inbox, exposes the warm task at a three-poll quota and parks without idle spin rounds. This is the policy namedparkingin historical reports; the earlier aggressive-spin preset was retired. Existing presets retain their routing semantics; LowLatency in WorkTable keeps its explicit aggressive idle budget. There is no DSL grammar change.atomic-hostexposesAtomicHostwith a caller-supplied monotonic clock and retained wake permits.StdHostdelegates to the same implementation. Host creation does not create worker threads or drive timers.Release tests, Clippy with warnings denied, deterministic handshakes and queue/fanout regressions pass. The final head 2374640 passes every remote CI lane, including Rust 1.60, stable, Loom, lint and documentation checks. The no_std host was checked on macOS, Windows GNU and ARM Linux musl; portable fanout was checked on a bare-metal target.
The consolidated perf-benchmarks PR records throughput, CPU use between bursts, OS-policy controls and the default decision. The prior large spin budget is retained in dated evidence, not treated as the final baseline. Merge and publish 0.6.2 before Nagoya 0.1.2's registry-only checks.
At the LIFO quota, a lone task remains stealable without waking a sleeping peer. Wakeups are retained when the owner has other ready work. Deterministic tests cover both cases. In the paired twelve-worker/four-client arithmetic control this removed over 200 task migrations and improved throughput about fivefold, with CPU use falling from about eleven CPU-time cores to four. Long table reads did not improve: throughput fell 6–9% while CPU efficiency improved. This is an opt-in scheduler overhead fix, not a database throughput claim. The default non-stealable Locality path is unchanged.