Changelog¶
All notable changes to numaperf.
[Unreleased]¶
Added¶
- Initial public release
- Comprehensive MkDocs documentation
[0.1.0] - 2024-XX-XX¶
Added¶
Core Types¶
NodeId- Type-safe NUMA node identifierCpuSet- Efficient CPU set with bitmap operationsNodeMask- NUMA node set for memory policies
Topology Discovery¶
Topology::discover()- Automatic topology detection from sysfsNumaNode- Per-node information (CPUs, memory, distances)- Distance matrix queries
Memory Management¶
NumaRegion- RAII NUMA-aware memory regionsMemPolicy- Memory placement policies (Local, Bind, Preferred, Interleave)Prefault- Page fault strategies (None, Touch, Populate)HardMode- Strict vs soft enforcement
Thread Affinity¶
ScopedPin- RAII thread pinningpin_to_node()- Pin to all CPUs on a nodeget_affinity()/set_affinity()- Low-level affinity control
Work Scheduling¶
NumaExecutor- NUMA-aware task executorNumaExecutorBuilder- Fluent configurationStealPolicy- Work stealing strategies (LocalOnly, LocalThenSocketThenRemote, Any)- Per-node worker pools with configurable thread counts
Sharded Data Structures¶
NumaSharded<T>- Per-node sharded dataShardedCounter- Lock-free distributed counterCachePadded<T>- Cache line padding to prevent false sharing
I/O Device Locality¶
DeviceMap- Discover device-to-node mappingDeviceLocality- Device NUMA information- Network and block device support
Observability¶
StatsCollector- Lock-free locality metricsLocalityStats- Point-in-time snapshotsLocalityReport- Diagnostic reports with health classificationLocalityHealth- Health levels (Excellent, Good, Fair, Poor)
System Capabilities¶
Capabilities::detect()- Runtime capability detection- Hard mode support checking
- Missing capability reporting
Error Handling¶
NumaError- Unified error typeHardModeUnavailable- Detailed hard mode failures
CLI Tools¶
numaperf-bench- Benchmarking and system informationinfosubcommand - System topology displaybenchsubcommand - Performance benchmarks- JSON output support
Platform Support¶
- Linux x86_64 - Full support
- Linux aarch64 - Full support
- macOS - Graceful degradation (no NUMA)
Version History¶
| Version | Date | Highlights |
|---|---|---|
| 0.1.0 | TBD | Initial release |
Versioning Policy¶
numaperf follows Semantic Versioning:
- MAJOR: Breaking API changes
- MINOR: New features, backward compatible
- PATCH: Bug fixes, backward compatible
Stability Guarantees¶
- Stable API: All public items in the
numaperffacade crate - Unstable API: Items marked with
#[doc(hidden)]or in-internalcrates
Minimum Supported Rust Version (MSRV)¶
- Current MSRV: 1.70.0
- MSRV bumps are considered minor version changes
Migration Guides¶
Upgrading to 0.2.0 (Future)¶
No breaking changes planned yet.
Reporting Issues¶
Found a bug or have a feature request?
- Check existing issues
- Open a new issue with:
- numaperf version
- Rust version
- Operating system and kernel version
- Minimal reproduction case
Contributing¶
See CONTRIBUTING.md for guidelines.