Skip to content

Benchmark EPoll and URing side-by-side in CI#168

Merged
samuel-williams-shopify merged 1 commit into
mainfrom
benchmark-baseline
May 9, 2026
Merged

Benchmark EPoll and URing side-by-side in CI#168
samuel-williams-shopify merged 1 commit into
mainfrom
benchmark-baseline

Conversation

@samuel-williams-shopify
Copy link
Copy Markdown
Contributor

Why

The benchmark workflow never installed liburing-dev, so every benchmark run silently used epoll. There was no way to compare the two backends without a separate branch.

What

  • Add a selector matrix dimension (EPoll / URing) so both backends run in the same CI pass.
  • Set IO_EVENT_SELECTOR: ${{matrix.selector}} on the benchmark step — IO::Event::Selector.default already reads this env var.
  • Install liburing-dev so the URing backend is compiled and available.
  • Bump actions/checkout@v2@v4 while here.

How to read the results

Each job is named EPoll on ubuntu (head) / URing on ubuntu (head) — compare the Requests/sec lines between the two jobs for each server scenario (event.rb, loop.rb, thread.rb, etc.).

This branch is on unmodified main, so the numbers serve as a clean baseline before any wakeup / SINGLE_ISSUER changes.

Made with Cursor

Add a selector matrix (EPoll / URing) to the benchmark workflow so both
backends run in the same CI pass and can be compared directly.  Also
install liburing-dev so the URing backend is actually compiled, and bump
checkout to actions/checkout@v4.

Co-authored-by: Cursor <cursoragent@cursor.com>
@samuel-williams-shopify samuel-williams-shopify force-pushed the benchmark-baseline branch 2 times, most recently from 5669bab to 4b9a046 Compare May 9, 2026 03:48
@samuel-williams-shopify samuel-williams-shopify merged commit df24422 into main May 9, 2026
48 of 60 checks passed
@samuel-williams-shopify samuel-williams-shopify deleted the benchmark-baseline branch May 9, 2026 03:50
samuel-williams-shopify added a commit that referenced this pull request May 10, 2026
Add a selector matrix (EPoll / URing) to the benchmark workflow so both
backends run in the same CI pass and can be compared directly.  Also
install `liburing-dev` so the URing backend is actually compiled, and bump
checkout to actions/checkout@v4.
@samuel-williams-shopify samuel-williams-shopify added this to the v1.16.0 milestone May 12, 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