Skip to content

perf(zero-cache): apply serving replica changes locally - #6

Closed
Karavil wants to merge 1 commit into
capy/rm-vs-load-worker-batchingfrom
capy/rm-vs-load-serving-local-apply
Closed

perf(zero-cache): apply serving replica changes locally#6
Karavil wants to merge 1 commit into
capy/rm-vs-load-worker-batchingfrom
capy/rm-vs-load-serving-local-apply

Conversation

@Karavil

@Karavil Karavil commented May 26, 2026

Copy link
Copy Markdown
Owner

what changed

Serving mode applies changes through a local write-worker client to avoid thread hops. Backup mode keeps the existing thread-worker path.

benchmark output

medium-wide-batch-pressure, 15s, compared to worker batching:

tx/s: 946.6 -> 1,836.4
rows/s: 18,932.1 -> 36,728.1
fanout msg/s: 31,512.8 -> 57,399.7
avg VS tx apply: 0.731 ms -> 0.398 ms

validation

pnpm exec vitest --project='*no-pg*' run src/workers/replicator.test.ts
pnpm run check-types
pnpm exec oxlint --config ../../oxlint.config.ts bench/rm-vs-load/e2e.ts src/services/replicator/local-write-worker-client.ts src/server/replicator.ts src/services/replicator/replicator.ts src/workers/replicator.ts src/workers/replicator.test.ts

Why: serving replicator workers are already isolated, so an extra write-worker thread hop only adds overhead on the hot serving path

* add LocalWriteWorkerClient for serving mode

* keep backup mode on ThreadWriteWorkerClient

* move serving WAL autocheckpoint work off the tight default window
@Karavil
Karavil force-pushed the capy/rm-vs-load-worker-batching branch from 16e39ec to 7338bf8 Compare May 26, 2026 19:02
@Karavil
Karavil force-pushed the capy/rm-vs-load-serving-local-apply branch from 0d0e9ec to 8b7d6ce Compare May 26, 2026 19:02
@Karavil

Karavil commented May 26, 2026

Copy link
Copy Markdown
Owner Author

Replaced by rocicorp/mono PRs rocicorp#6070 through rocicorp#6078.

@Karavil Karavil closed this May 26, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant