Repository navigation
feat(file): a coalescing IO service for planning-protocol scans - #10463
joseph-isaacs wants to merge 1 commit into
Conversation
Merging this PR will improve performance by 15%
|
| Mode | Benchmark | BASE |
HEAD |
Efficiency | |
|---|---|---|---|---|---|
| ⚡ | WallTime | threshold_neon[64] |
5.6 µs | 4.5 µs | +25.71% |
| ⚡ | WallTime | threshold_neon[80] |
5.6 µs | 4.9 µs | +14.9% |
| ⚡ | WallTime | filter_neon[64] |
3.3 µs | 2.8 µs | +14.9% |
| ⚡ | WallTime | starts_with_avx512[8, VarBin] |
46.2 µs | 40.7 µs | +13.57% |
| ⚡ | WallTime | threshold_neon[8] |
3.4 µs | 3 µs | +10.79% |
| ⚡ | WallTime | starts_with_avx512[64, VarBin] |
59.7 µs | 53.9 µs | +10.76% |
Tip
Curious why performance improved? Comment @codspeedbot explain why performance improved on this PR, or directly use the CodSpeed MCP with your agent.
Comparing ji/scan-v2-io (22871ce) with develop (ce04bf9)
ad53eaf to
d4d0acd
Compare
82aa9ef to
27bffeb
Compare
27bffeb to
3c37da1
Compare
Serves the planning protocol's `IoService` reads of a file: - `FileIoService` coalesces the ranges a batch of requests or announcements asks for, reads each range once for every session interested in it, and withdraws a dropped session's interest. `FileScanIo` serves the same protocol through the file's segment source and read driver. - Local files reuse their handles and admit native reads up to a bound; object-store reads stream completions as they land. - The read driver keeps its coalescing scratch between passes and can leave optional requests out of coalescing. - Segment caches can answer synchronously from `get_if_ready`. - Request tracing ids for diagnostics. A file opened over a reader carries the service as `VortexFile::scan_io`. Nothing drives it yet; the planning scan that does follows separately. Co-Authored-By: Claude Opus 5.5 <[email protected]> Claude-Session: https://claude.ai/code/session_01P1oQtzTgSzkvrGDKisoNko Signed-off-by: Claude <[email protected]>
3c37da1 to
22871ce
Compare
|
Closing as superseded: this is the same change as #10548. V2 scans on Generated by Claude Code |
Summary
Carved out of #10339 alongside the plan PR (#10462) and the planning PR. This PR is independent: it targets
developdirectly and does not depend on #10462. It adds the IO layer that the planner-driven scan reads through. Nothing drives it until the planning PR.Changes
FileIoService. Coalesces the ranges a batch of planning-protocol requests or announcements asks for. Each range is read once for every session interested in it, and a dropped session's interest is withdrawn.FileScanIo. Serves the same protocol through the file's segment source and read driver, sharing pending reads between live consumers.VORTEX_SCAN_IO_COALESCE_OPTIONAL).SegmentCache::get_if_ready.VortexFile::scan_io;FileIoServiceis opt-in through its env settings.Tests:
segments::{io_service, scan_io}.Checks run:
cargo check -p vortex-io -p vortex-file -p vortex-layout --all-targets --all-features(after moving ontodevelop)cargo clippy -p vortex-io -p vortex-file -p vortex-layout --all-targets --all-features -- -D warnings,cargo +nightly-2026-09-10 fmt,cargo test -p vortex-io -p vortex-file -p vortex-layout --lib🤖 Generated with Claude Code
https://claude.ai/code/session_01N4PmceDHg8rFe5bgkhGFU9