Expand description
§io_uring Advanced Optimization
Implements advanced io_uring optimizations including SQPOLL mode, registered buffers,
IOPOLL mode, and per-core ring management for sub-microsecond I/O latency.
§Features
- SQPOLL Mode: Eliminates syscalls by using a dedicated kernel polling thread
- Registered Buffers: Avoids per-operation buffer mapping overhead
- IOPOLL Mode: Polls completions directly from
NVMequeue (no interrupts) - Per-Core Rings: Each core has its own
io_uringinstance for thread-per-core - Three-Ring I/O: Separate latency/main/poll rings for optimal scheduling
§Research Background
From TU Munich (Dec 2024): Basic io_uring yields only 1.06-1.10x improvement,
while careful optimization achieves 2.05x or more.
§Platform Support
This module is Linux-only (io_uring requires Linux 5.10+, advanced features need 5.19+).
On other platforms, a no-op fallback is provided.
§Example
ⓘ
use laminar_core::io_uring::{IoUringConfig, CoreRingManager};
let config = IoUringConfig::builder()
.ring_entries(256)
.enable_sqpoll(true)
.sqpoll_idle_ms(1000)
.buffer_size(64 * 1024)
.buffer_count(256)
.build();
let mut manager = CoreRingManager::new(0, &config)?;
// Submit and poll I/O operations
let user_data = manager.submit_read(fd, offset, len)?;
let completions = manager.poll_completions();§Three-Ring I/O
For optimal latency/throughput balance, use the three-ring reactor:
ⓘ
use laminar_core::io_uring::three_ring::{ThreeRingConfig, ThreeRingReactor};
let config = ThreeRingConfig::builder()
.latency_entries(256)
.main_entries(1024)
.build()?;
let mut reactor = ThreeRingReactor::new(0, config)?;
// Latency ring for network, main ring for WAL, poll ring for NVMeStructs§
- Completion
- Completion result from an
io_uringoperation. - Core
Ring Manager - Per-core
io_uringmanager. - IoUring
Config - Configuration for
io_uringoperations. - IoUring
Config Builder - Builder for
IoUringConfig. - IoUring
Ring - Wrapper around
io_uringwith mode information. - Registered
Buffer Pool - A pre-registered buffer pool for
io_uringoperations. - Ring
Metrics - Metrics for ring operations.
Enums§
- Completion
Kind - Kind of completion for quick matching.
- IoUring
Error - Errors that can occur during
io_uringoperations. - Pending
Op - Pending operation types for tracking.
- Ring
Mode - Ring operation mode.
Functions§
- advanced_
kernel_ version - Get the kernel version required for advanced features (IOPOLL, passthrough).
- is_
available - Check if
io_uringis available on this platform. - min_
kernel_ version - Get the minimum kernel version required for basic
io_uringfeatures.