Skip to content

Conversation

@krhancoc
Copy link
Contributor

@krhancoc krhancoc commented Jan 22, 2026

This diff introduces the IODispatcher into the BlockBasedTableIterator. This replaces much of the prefetch logic with the logic found in IODispatcher.

Test Plan:

I ran the following benchmark, %change is within noise tolerance. There shouldn't be any large performance improvement with this change, more so there should also not be any performance degradation.

MultiScan Benchmark: Current Branch vs Main

Configuration:

  • Threads: 4
  • Ranges per scan: 10
  • Stride: 5000
  • Seek nexts: 100
  • Cache: Cold (dropped before each run)
  • Runs: 3

Results:
│ Mode │ Main (ops/sec) │ Current (ops/sec) │ Change │
│ Sync │ 8,901 │ 9,032 │ +1.5% │
│ Async │ 11,297 │ 11,947 │ +5.8% │

@meta-cla meta-cla bot added the CLA Signed label Jan 22, 2026
multi_scan_status_ = FilterAndPinCachedBlocks(
scan_block_handles, multiscan_opts, &block_indices_to_read,
&pinned_data_blocks_guard, &prefetched_max_idx);
// Calculate prefetch_max_idx (enforces max_prefetch_size)
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This will eventually be replaced by pushing this into the IO Dispatcher. I didn't want to add semantic changes into IODispatcher in this diff.

@krhancoc krhancoc marked this pull request as ready for review January 23, 2026 20:21
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant