Skip to content

v0.1.7

Choose a tag to compare

@github-actions github-actions released this 10 Sep 14:46
· 2 commits to master since this release

Highlights

  • backend-sharding auto is the default. The proxy runs one experiment for itself, judged on its whole command rate: sessions start on their worker's own connections, a probe moves the proxy to the shared per-node pipes when the workers are busy and thin batches, and the move stays only where the measured rate is higher; a later fall in that rate re-arms the probe. On a 128-master rig auto sits within the noise floor of the best fixed mode in the fan-out lane (P16 GET 8.98M vs yes 9.01M, no 5.54M) and within 2% in the sliding-pipeline lane where yes loses 17%. A single worker with one connection per node has nothing to share and runs as no. INFO reports pipes_prefer_shared, pipe_probes, pipe_keeps, pipe_reverts and per-worker worker_busy.
  • A refused CLIENT CACHING opt-in is harmless. A backend answering a reply-cache fill's opt-in with the tracking-off error now gets its tracking frame again on that connection, the request runs once more without the opt-in (a fan-out part at its slot's current owner, following one redirect), and the client sees its reply; nothing fills. Dials, rearms and tracker arrivals log at debug level, a refusal at warn.
  • Ownership pass over the whole crate: a remembered script is stored as its SCRIPT LOAD frame (a watched EVALSHA no longer copies the script body per command), the dispatch subcommand lookup reuses the parsed argument iterator, and the writer's ready buffer sheds a large excursion's capacity. Measured on the rig: the single-key path allocates 0.02 times per command, all of it read-buffer chunk turnover.
  • Hot path: every batch was A/B-measured against its base on the 128-master rig; the release head is flat against v0.1.6 inside the A/A floor (P16 GET +1.3% with A/A +0.9%, SET −0.2% with A/A −0.6%).

Changelog

Performance

  • 3df1b1c perf: backend-sharding defaults to auto
  • 3e10ce1 perf: only a lighter load on the shared pipes voids the decision
  • b1db534 perf: a rate shift is judged once the rate is steady, and a pause changes nothing
  • d49a99e perf: a changed workload ends the tuner's wait
  • fd9042c perf: one experiment for the whole proxy, judged on its whole command rate
  • 1d5a0a4 perf: the auto tuner keeps the shared pipes only where they measure faster

Bug fixes

  • 039682e fix: a rerun fan-out part follows one redirect
  • 9440101 fix: a refused fan-out part reruns at the slot's current owner
  • 5571c6e fix: rerun a refused opt-in for fan-out parts and only for a filled request
  • 6902904 fix: a refused caching opt-in re-tracks the connection and reruns the request
  • b78dff4 fix: one worker with several connections per node still has a lane to choose
  • d65e426 fix: one worker has nothing to share, and the docs qualify the shared-nothing claim
  • 993286c fix: an idle pause is not a settled rate
  • 3be4008 fix: a probe after a rate shift waits one window, and a steady baseline spreads under a quarter
  • a96c935 fix: a probe needs a steady baseline
  • ea3c0d7 fix: a losing trial left in the rate ring is not a changed workload
  • 762682c fix: only a switch that stays wanted pauses a session to drain
  • 611b6cd fix: a pipelining session drains for the move back to its worker's connections

Other

  • fed1251 chore: crate version 0.1.7
  • 30c3ce0 log: dials, rearms and tracker arrivals at debug level

Full Changelog: v0.1.6...v0.1.7