Skip to content

Add object store support to llm-d storage offloading#499

Open
effi-ofer wants to merge 7 commits intollm-d:mainfrom
effi-ofer:nixl
Open

Add object store support to llm-d storage offloading#499
effi-ofer wants to merge 7 commits intollm-d:mainfrom
effi-ofer:nixl

Conversation

@effi-ofer
Copy link
Copy Markdown

This PR adds object store backend to the llm-d storage offloading. It does this by introducing a "backend" configuration parameter which can be set as follows, with POSIX as the default.

  "POSIX"           - POSIX engine, GDS disabled
  "POSIX_GDS_READ"  - GDS for reads only
  "POSIX_GDS_WRITE" - GDS for writes only
  "POSIX_GDS"       - GDS for reads and writes
  "POSIX_BB_READ"   - bounce-buffer GDS for reads only
  "POSIX_BB_WRITE"  - bounce-buffer GDS for writes only
  "POSIX_BB"        - bounce-buffer GDS for reads and writes
  "OBJ"             - NIXL S3 object store backend

The object store access is implemented using NIXL (for PUT/GET) and boto3 (for lookup).

Documentation:
The full configuration of the object store is described in docs/object_store.md.

Testing:

  • all the tests in the tests directories
  • added a new test_obj_backend test case

@github-actions
Copy link
Copy Markdown

github-actions bot commented Apr 6, 2026

Unsigned commits detected! Please sign your commits.

For instructions on how to set up GPG/SSH signing and verify your commits, please see GitHub Documentation.

@github-actions github-actions bot added the size/XXL Denotes a PR that changes 1000+ lines, ignoring generated files. label Apr 6, 2026
Signed-off-by: Effi Ofer <effi.ofer@gmail.com>

debugging

Signed-off-by: Effi Ofer <effi.ofer@gmail.com>

debugging

Signed-off-by: Effi Ofer <effi.ofer@gmail.com>

debugging

Signed-off-by: Effi Ofer <effi.ofer@gmail.com>

debugging

Signed-off-by: Effi Ofer <effi.ofer@gmail.com>

debug

Signed-off-by: Effi Ofer <effi.ofer@gmail.com>

debug

Signed-off-by: Effi Ofer <effi.ofer@gmail.com>

debug

Signed-off-by: Effi Ofer <effi.ofer@gmail.com>

debugging

Signed-off-by: Effi Ofer <effi.ofer@gmail.com>

debugging

Signed-off-by: Effi Ofer <effi.ofer@gmail.com>

debugging

Signed-off-by: Effi Ofer <effi.ofer@gmail.com>

debugging

Signed-off-by: Effi Ofer <effi.ofer@gmail.com>

debugging

Signed-off-by: Effi Ofer <effi.ofer@gmail.com>

debugging

Signed-off-by: Effi Ofer <effi.ofer@gmail.com>

debugging

Signed-off-by: Effi Ofer <effi.ofer@gmail.com>

debugging

Signed-off-by: Effi Ofer <effi.ofer@gmail.com>

debugging

Signed-off-by: Effi Ofer <effi.ofer@gmail.com>

debugging

Signed-off-by: Effi Ofer <effi.ofer@gmail.com>

debugging

Signed-off-by: Effi Ofer <effi.ofer@gmail.com>

debugging

Signed-off-by: Effi Ofer <effi.ofer@gmail.com>

debugging

Signed-off-by: Effi Ofer <effi.ofer@gmail.com>

debugging

Signed-off-by: Effi Ofer <effi.ofer@gmail.com>
Signed-off-by: Effi Ofer <effi.ofer@gmail.com>

debugging

Signed-off-by: Effi Ofer <effi.ofer@gmail.com>

debugging

Signed-off-by: Effi Ofer <effi.ofer@gmail.com>

debugging

Signed-off-by: Effi Ofer <effi.ofer@gmail.com>

debugging

Signed-off-by: Effi Ofer <effi.ofer@gmail.com>

debugging

Signed-off-by: Effi Ofer <effi.ofer@gmail.com>

debugging

Signed-off-by: Effi Ofer <effi.ofer@gmail.com>

debugging

Signed-off-by: Effi Ofer <effi.ofer@gmail.com>
Signed-off-by: Effi Ofer <effi.ofer@gmail.com>

debug

Signed-off-by: Effi Ofer <effi.ofer@gmail.com>

debug

Signed-off-by: Effi Ofer <effi.ofer@gmail.com>

debug

Signed-off-by: Effi Ofer <effi.ofer@gmail.com>

debug

Signed-off-by: Effi Ofer <effi.ofer@gmail.com>

debug

Signed-off-by: Effi Ofer <effi.ofer@gmail.com>

debug

Signed-off-by: Effi Ofer <effi.ofer@gmail.com>

debug

Signed-off-by: Effi Ofer <effi.ofer@gmail.com>

debug

Signed-off-by: Effi Ofer <effi.ofer@gmail.com>

debug

Signed-off-by: Effi Ofer <effi.ofer@gmail.com>

debug

Signed-off-by: Effi Ofer <effi.ofer@gmail.com>

debug

Signed-off-by: Effi Ofer <effi.ofer@gmail.com>

debug

Signed-off-by: Effi Ofer <effi.ofer@gmail.com>

debug

Signed-off-by: Effi Ofer <effi.ofer@gmail.com>

debug

Signed-off-by: Effi Ofer <effi.ofer@gmail.com>

debug

Signed-off-by: Effi Ofer <effi.ofer@gmail.com>

debug

Signed-off-by: Effi Ofer <effi.ofer@gmail.com>

debug

Signed-off-by: Effi Ofer <effi.ofer@gmail.com>

debug

Signed-off-by: Effi Ofer <effi.ofer@gmail.com>

debug

Signed-off-by: Effi Ofer <effi.ofer@gmail.com>

debug

Signed-off-by: Effi Ofer <effi.ofer@gmail.com>

debug

Signed-off-by: Effi Ofer <effi.ofer@gmail.com>

debug

Signed-off-by: Effi Ofer <effi.ofer@gmail.com>

debug

Signed-off-by: Effi Ofer <effi.ofer@gmail.com>

debug

Signed-off-by: Effi Ofer <effi.ofer@gmail.com>

debug

Signed-off-by: Effi Ofer <effi.ofer@gmail.com>

debug

Signed-off-by: Effi Ofer <effi.ofer@gmail.com>

debug

Signed-off-by: Effi Ofer <effi.ofer@gmail.com>

debug

Signed-off-by: Effi Ofer <effi.ofer@gmail.com>

debug

Signed-off-by: Effi Ofer <effi.ofer@gmail.com>

debug

Signed-off-by: Effi Ofer <effi.ofer@gmail.com>

debug

Signed-off-by: Effi Ofer <effi.ofer@gmail.com>

debug

Signed-off-by: Effi Ofer <effi.ofer@gmail.com>

debug

Signed-off-by: Effi Ofer <effi.ofer@gmail.com>

debug

Signed-off-by: Effi Ofer <effi.ofer@gmail.com>

debug

Signed-off-by: Effi Ofer <effi.ofer@gmail.com>

debug

Signed-off-by: Effi Ofer <effi.ofer@gmail.com>

debug

Signed-off-by: Effi Ofer <effi.ofer@gmail.com>

debug

Signed-off-by: Effi Ofer <effi.ofer@gmail.com>

debug

Signed-off-by: Effi Ofer <effi.ofer@gmail.com>

debug

Signed-off-by: Effi Ofer <effi.ofer@gmail.com>

debug

Signed-off-by: Effi Ofer <effi.ofer@gmail.com>

debug

Signed-off-by: Effi Ofer <effi.ofer@gmail.com>

debug

Signed-off-by: Effi Ofer <effi.ofer@gmail.com>

debug

Signed-off-by: Effi Ofer <effi.ofer@gmail.com>

debug

Signed-off-by: Effi Ofer <effi.ofer@gmail.com>

debug

Signed-off-by: Effi Ofer <effi.ofer@gmail.com>

debug

Signed-off-by: Effi Ofer <effi.ofer@gmail.com>

debug

Signed-off-by: Effi Ofer <effi.ofer@gmail.com>

debug

Signed-off-by: Effi Ofer <effi.ofer@gmail.com>

debug

Signed-off-by: Effi Ofer <effi.ofer@gmail.com>

debug

Signed-off-by: Effi Ofer <effi.ofer@gmail.com>

debug

Signed-off-by: Effi Ofer <effi.ofer@gmail.com>

debug

Signed-off-by: Effi Ofer <effi.ofer@gmail.com>

debug

Signed-off-by: Effi Ofer <effi.ofer@gmail.com>
Signed-off-by: Effi Ofer <effi.ofer@gmail.com>

add test_obj_backend

Signed-off-by: Effi Ofer <effi.ofer@gmail.com>

add certificate to boto3

Signed-off-by: Effi Ofer <effi.ofer@gmail.com>

add certificate to boto3

Signed-off-by: Effi Ofer <effi.ofer@gmail.com>

fix test_obj_backend.py

Signed-off-by: Effi Ofer <effi.ofer@gmail.com>

fix test_obj_backend.py

Signed-off-by: Effi Ofer <effi.ofer@gmail.com>

fix test_obj_backend.py

Signed-off-by: Effi Ofer <effi.ofer@gmail.com>

fix test_obj_backend.py

Signed-off-by: Effi Ofer <effi.ofer@gmail.com>

combine gds parameter with backend

Signed-off-by: Effi Ofer <effi.ofer@gmail.com>

combine gds parameter with backend

Signed-off-by: Effi Ofer <effi.ofer@gmail.com>

move nixl source to a new subdirectory

Signed-off-by: Effi Ofer <effi.ofer@gmail.com>

change dir nixl to llmd_nixl to avoid name collision with nixl library

Signed-off-by: Effi Ofer <effi.ofer@gmail.com>

change dir nixl to llmd_nixl to avoid name collision with nixl library

Signed-off-by: Effi Ofer <effi.ofer@gmail.com>

add nixl dependency

Signed-off-by: Effi Ofer <effi.ofer@gmail.com>

rm old nixl subdir

Signed-off-by: Effi Ofer <effi.ofer@gmail.com>

minor changes

Signed-off-by: Effi Ofer <effi.ofer@gmail.com>

fix wait logic

Signed-off-by: Effi Ofer <effi.ofer@gmail.com>

clean staging buffer release

Signed-off-by: Effi Ofer <effi.ofer@gmail.com>
Signed-off-by: Effi Ofer <effi.ofer@gmail.com>
Signed-off-by: Effi Ofer <effi.ofer@gmail.com>
Signed-off-by: Effi Ofer <effi.ofer@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size/XXL Denotes a PR that changes 1000+ lines, ignoring generated files.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant