Hasty Briefsbeta

Bilingual

Offloading I/O to Dedicated Cores: An Asymmetric io_uring Back end for Seastar

7 hours ago
  • Seastar moved I/O handling from application cores to dedicated networking cores to free up CPU for compute workloads.
  • The new asymmetric_io_uring backend organizes application cores into groups, each sharing a networking core that handles all I/O via per-shard io_uring instances with shared kernel workers.
  • Fast-track speculative I/O was removed to ensure all I/O is offloaded to networking cores, preventing synchronous syscalls on application cores.
  • NUMA-aware allocation assigns worker cores based on SMT siblings and NUMA locality to minimize cache coherence overhead.
  • Buffer rings were considered but not implemented due to architectural incompatibility with Seastar's buffer management.
  • Benchmarks show networking I/O throughput improves for compute-heavy workloads (e.g., 15% gain with 1 shard), but a single networking core becomes a bottleneck under pure I/O load due to memory copying.
  • Disk I/O performance remains unchanged; hardware is the primary bottleneck.
  • The asymmetric backend is best suited for applications with significant compute combined with high-throughput networking, not for pure I/O-bound workloads.
  • The backend has been merged into Seastar and is available for testing with instructions on compilation, tuning, and usage.