Skip to content

Add Compio runtime for completion-based local I/O - #9253

Closed
gatesn wants to merge 6 commits into
developfrom
ngates/vortex-compio
Closed

Add Compio runtime for completion-based local I/O#9253
gatesn wants to merge 6 commits into
developfrom
ngates/vortex-compio

Conversation

@gatesn

@gatesn gatesn commented Aug 6, 2026

Copy link
Copy Markdown
Contributor

Summary

  • add feature-gated Compio buffer support and a new vortex-compio crate
  • add a Compio-backed runtime and VortexReadAt implementation that reads directly into sealed ByteBuffer values
  • route file read-driver work through the I/O executor while preserving CurrentThread and Tokio runtimes
  • bypass the synchronized spawn queue when spawning from the Compio runtime thread
  • add VORTEX_IO_RUNTIME=compio to the random-access benchmark

I/O behavior

On Linux, Compio uses io_uring when available and falls back to polling. The file reader currently uses buffered I/O rather than O_DIRECT. On macOS, Compio uses its polling backend.

Local benchmark signal

On macOS, two order-reversed runs showed Compio improving correlated random access by roughly 11–31%, while uniform random access was roughly 12–27% slower.

The random-access PR workflow temporarily sets VORTEX_IO_RUNTIME=compio so the labeled Linux run exercises the io_uring path. The isolated CI override commit should be reverted before merge.

Validation

  • cargo +nightly fmt --all
  • cargo clippy --all-targets --all-features
  • cargo test -p vortex-buffer --all-features
  • cargo test -p vortex-compio --all-features
  • cargo test -p vortex-file --all-features
  • cargo test -p random-access-bench --all-features
  • cargo test -p vortex-bench --all-features
  • yamllint --strict -c .yamllint.yaml .github/workflows/pr-bench-runner.yml
  • git diff --check

gatesn added 5 commits August 6, 2026 18:42
Signed-off-by: "Nicholas Gates" <nick@nickgates.com>
Signed-off-by: "Nicholas Gates" <nick@nickgates.com>
Signed-off-by: "Nicholas Gates" <nick@nickgates.com>
Signed-off-by: "Nicholas Gates" <nick@nickgates.com>
Signed-off-by: "Nicholas Gates" <nick@nickgates.com>
@gatesn gatesn added the action/bench-random-access Run only the random-access benchmark on this PR label Aug 6, 2026 — with ChatGPT Codex Connector
@github-actions github-actions Bot removed the action/bench-random-access Run only the random-access benchmark on this PR label Aug 6, 2026
Signed-off-by: "Nicholas Gates" <nick@nickgates.com>
@gatesn gatesn added the action/bench-random-access Run only the random-access benchmark on this PR label Aug 6, 2026 — with ChatGPT Codex Connector
@github-actions github-actions Bot removed the action/bench-random-access Run only the random-access benchmark on this PR label Aug 6, 2026
@codspeed-hq

codspeed-hq Bot commented Aug 7, 2026

Copy link
Copy Markdown

Merging this PR will degrade performance by 12.36%

❌ 2 regressed benchmarks
✅ 1923 untouched benchmarks
⏩ 51 skipped benchmarks1

Warning

Please fix the performance issues or acknowledge them on CodSpeed.

Performance Changes

Mode Benchmark BASE HEAD Efficiency
Simulation decompress[u64, (10000, 4)] 311.7 µs 361.3 µs -13.73%
Simulation compress_fsst[(1000, 64, 8)] 1 ms 1.2 ms -10.96%

Tip

Investigate this regression by commenting @codspeedbot fix this regression on this PR, or directly use the CodSpeed MCP with your agent.


Comparing ngates/vortex-compio (c2b6933) with develop (a1057db)

Open in CodSpeed

Footnotes

  1. 51 benchmarks were skipped, so the baseline results were used instead. If they were deleted from the codebase, click here and archive them to remove them from the performance reports.

@github-actions

github-actions Bot commented Aug 7, 2026

Copy link
Copy Markdown
Contributor

Polar Signals Profiling Results

Latest Run

Status Commit Job Attempt Link
🟢 Done c2b6933 random-access-bench 1 Explore Profiling Data
Previous Runs (1)
Status Commit Job Attempt Link
🟢 Done 10bf29a random-access-bench 1 Explore Profiling Data

Powered by Polar Signals Cloud

@github-actions

github-actions Bot commented Aug 7, 2026

Copy link
Copy Markdown
Contributor

Benchmarks: Random Access 📖

Vortex (geomean): no vortex data
Parquet (geomean): 0.991x ➖


random-access / vortex-file-compressed / ns (no group data, 0↑ 0↓)
name PR c2b6933 (ns) base 68e0e58 (ns) ratio (PR/base)
random-access/feature-vectors/correlated/vortex-compio-local-disk 672541 no baseline
random-access/feature-vectors/correlated/vortex-compio-local-disk-footer 3122015 no baseline
random-access/feature-vectors/uniform/vortex-compio-local-disk 14925483 no baseline
random-access/feature-vectors/uniform/vortex-compio-local-disk-footer 17449314 no baseline
random-access/nested-lists/correlated/vortex-compio-local-disk 613542 no baseline
random-access/nested-lists/correlated/vortex-compio-local-disk-footer 666111 no baseline
random-access/nested-lists/uniform/vortex-compio-local-disk 9890251 no baseline
random-access/nested-lists/uniform/vortex-compio-local-disk-footer 10030553 no baseline
random-access/nested-structs/correlated/vortex-compio-local-disk 1187776 no baseline
random-access/nested-structs/correlated/vortex-compio-local-disk-footer 1340649 no baseline
random-access/nested-structs/uniform/vortex-compio-local-disk 3933584 no baseline
random-access/nested-structs/uniform/vortex-compio-local-disk-footer 4350433 no baseline
random-access/taxi/correlated/vortex-compio-local-disk 2883413 no baseline
random-access/taxi/correlated/vortex-compio-local-disk-footer 3522044 no baseline
random-access/taxi/uniform/vortex-compio-local-disk 15582602 no baseline
random-access/taxi/uniform/vortex-compio-local-disk-footer 16582518 no baseline
random-access/vortex-compio-local-disk 1296956 no baseline
random-access/vortex-compio-local-disk-footer 1781580 no baseline
random-access / parquet / ns (0.991x ➖, 0↑ 0↓)
name PR c2b6933 (ns) base 68e0e58 (ns) ratio (PR/base)
random-access/feature-vectors/correlated/parquet-tokio-local-disk 9076413906 9204037998 0.99
random-access/feature-vectors/correlated/parquet-tokio-local-disk-footer 9006602964 9108008883 0.99
random-access/feature-vectors/uniform/parquet-tokio-local-disk 9001824989 9005831320 1.00
random-access/feature-vectors/uniform/parquet-tokio-local-disk-footer 8905302129 8900728340 1.00
random-access/nested-lists/correlated/parquet-tokio-local-disk 136749144 140083260 0.98
random-access/nested-lists/correlated/parquet-tokio-local-disk-footer 138684698 141500437 0.98
random-access/nested-lists/uniform/parquet-tokio-local-disk 139512545 138700218 1.01
random-access/nested-lists/uniform/parquet-tokio-local-disk-footer 138535351 139732212 0.99
random-access/nested-structs/correlated/parquet-tokio-local-disk 20093225 20132703 1.00
random-access/nested-structs/correlated/parquet-tokio-local-disk-footer 19404193 20670560 0.94
random-access/nested-structs/uniform/parquet-tokio-local-disk 19605067 20279098 0.97
random-access/nested-structs/uniform/parquet-tokio-local-disk-footer 19718498 20210651 0.98
random-access/parquet-tokio-local-disk 183266758 183166266 1.00
random-access/parquet-tokio-local-disk-footer 183179907 182513494 1.00
random-access/taxi/correlated/parquet-tokio-local-disk 275212899 274577739 1.00
random-access/taxi/correlated/parquet-tokio-local-disk-footer 274602543 273493989 1.00
random-access/taxi/uniform/parquet-tokio-local-disk 293241804 291417410 1.01
random-access/taxi/uniform/parquet-tokio-local-disk-footer 292791380 289958163 1.01
random-access / lance / ns (1.002x ➖, 0↑ 0↓)
name PR c2b6933 (ns) base 68e0e58 (ns) ratio (PR/base)
random-access/feature-vectors/correlated/lance-tokio-local-disk 361489 351313 1.03
random-access/feature-vectors/correlated/lance-tokio-local-disk-footer 1084253 1055604 1.03
random-access/feature-vectors/uniform/lance-tokio-local-disk 1130214 1106759 1.02
random-access/feature-vectors/uniform/lance-tokio-local-disk-footer 1857705 1829301 1.02
random-access/lance-tokio-local-disk 642471 638926 1.01
random-access/lance-tokio-local-disk-footer 1404343 1385067 1.01
random-access/nested-lists/correlated/lance-tokio-local-disk 192790 194556 0.99
random-access/nested-lists/correlated/lance-tokio-local-disk-footer 519787 518568 1.00
random-access/nested-lists/uniform/lance-tokio-local-disk 949655 966850 0.98
random-access/nested-lists/uniform/lance-tokio-local-disk-footer 1303931 1301483 1.00
random-access/nested-structs/correlated/lance-tokio-local-disk 317855 319621 0.99
random-access/nested-structs/correlated/lance-tokio-local-disk-footer 463591 477802 0.97
random-access/nested-structs/uniform/lance-tokio-local-disk 2452520 2454250 1.00
random-access/nested-structs/uniform/lance-tokio-local-disk-footer 2583012 2591914 1.00
random-access/taxi/correlated/lance-tokio-local-disk 969202 977529 0.99
random-access/taxi/correlated/lance-tokio-local-disk-footer 1930393 1953869 0.99
random-access/taxi/uniform/lance-tokio-local-disk 9858853 9851887 1.00
random-access/taxi/uniform/lance-tokio-local-disk-footer 10394132 10382373 1.00

@gatesn

gatesn commented Aug 7, 2026

Copy link
Copy Markdown
Contributor Author

Closing this draft in favor of restructuring Compio as a dedicated I/O backend rather than a universal Vortex executor.

@gatesn gatesn closed this Aug 7, 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