Skip to content

Conversation

aranadive
Copy link
Contributor

@aranadive aranadive commented Oct 9, 2025

What?

Added GUSLI (G3+ User Space Access Library) backend support to NIXL and NIXLBench. This integration leverages GUSLI's user-space block device access to provide storage performance measurements through the NIXL framework.

Why?

  • User-Space Block Access: GUSLI provides direct, user-space access to block storage devices, bypassing kernel overhead for low-latency storage operations
  • G3+ Storage Integration: Enables benchmarking of next-generation storage architectures that benefit from user-space I/O control
  • Storage Performance Measurement: Extends NIXLBench from network/memory benchmarks to include precise storage I/O performance analysis

How?

GUSLI Architecture

  • Block Device Management: GUSLI manages devices through configuration:
    • Local Files: File-backed storage (./store0.bin)
    • Block Devices: Direct device access (/dev/nvme0)
  • Asynchronous I/O: Implements pollable async operations with configurable concurrency
  • LBA Addressing: Uses Logical Block Address offsets for precise block-level positioning

GUSLI I/O Model

  • Buffer Registration: Explicit memory buffer registration before I/O operations
  • Request Lifecycle: Prepare → Submit → Poll → Complete with comprehensive error handling
  • Multi-Range Operations: Supports scatter-gather I/O across multiple memory regions

NIXLBench Integration

  • Configuration: Mirrors reference test setup with client context and device mapping
  • Transfer Patterns: Supports DRAM↔Block bidirectional transfers using GUSLI's optimized paths
  • Performance Features: Direct I/O, batch processing, and priority scheduling for accurate storage benchmarking
# Usage example
./nixlbench --backend=GUSLI --initiator_seg_type=DRAM --target_seg_type=BLK

The integration maintains GUSLI's user-space performance advantages while providing NIXLBench's standardized benchmarking interface for G3+ storage subsystem analysis.

Original from PR #494. Thanks to @danielhe-nvidia.

Copy link

github-actions bot commented Oct 9, 2025

👋 Hi aranadive! Thank you for contributing to ai-dynamo/nixl.

Your PR reviewers will review your contribution then trigger the CI to test your changes.

🚀

@aranadive
Copy link
Contributor Author

/build

danielhe-nvidia and others added 7 commits October 10, 2025 01:21
Change-Id: I05e7b35eb3076142b4dcc1f58a68865d5a5962c0
Signed-off-by: danielhsh <[email protected]>
Also update clang format.

Signed-off-by: Adit Ranadive <[email protected]>
Update manylinux dockerfile

Signed-off-by: Adit Ranadive <[email protected]>
Signed-off-by: Adit Ranadive <[email protected]>
Signed-off-by: Adit Ranadive <[email protected]>
Makefile needs to add librt dependency

Signed-off-by: Adit Ranadive <[email protected]>
@ovidiusm
Copy link
Contributor

/build

@ovidiusm
Copy link
Contributor

/build

Copy link
Contributor

@ovidiusm ovidiusm left a comment

Choose a reason for hiding this comment

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

LGTM

@aranadive aranadive merged commit 1ee9e6d into ai-dynamo:main Oct 13, 2025
21 checks passed
@aranadive aranadive deleted the add_gusli_plugin branch October 13, 2025 16:54
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.

4 participants