Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
53 changes: 53 additions & 0 deletions .github/workflows/testops.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
name: TestOps

on:
pull_request:
paths:
- "testops/**"
- ".github/workflows/testops.yml"
push:
branches:
- main
paths:
- "testops/**"
- ".github/workflows/testops.yml"
workflow_dispatch:

permissions:
contents: read

jobs:
go:
name: Go test + docs
runs-on: ubuntu-24.04
timeout-minutes: 15

steps:
- name: Checkout
uses: actions/checkout@v6

- name: Setup Go
uses: actions/setup-go@v6
with:
go-version-file: testops/go.mod
cache-dependency-path: testops/go.sum

- name: Test
working-directory: testops
run: go test ./...

- name: Vet
working-directory: testops
run: go vet ./...

- name: Validate RDMA gate scenario
working-directory: testops
run: |
go run ./cmd/sweedrdma validate scenarios/rdma-unified-lab-gate.yaml
go run ./cmd/sweedrdma validate scenarios/nixl-provider-cpu-gate.yaml

- name: Build docs
working-directory: testops
run: |
python -m pip install -r requirements-docs.txt
python -m mkdocs build --strict
42 changes: 42 additions & 0 deletions rdma-lab-ci/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,18 @@ object/loader path:
- SHA/byte correctness;
- benchmark lines for the active rows.

The second supported profile is `lmcache-nixl`. It runs the mono
`enterprise/python/seaweedkv-lmcache/tests/lab/lmcache-connector-gate`
scripts and checks the SeaweedKV/LMCache connector path:

- `libseaweedfs_sw_rdma_nixl.so` built with `--features real-rdma`;
- canonical RDMA-enabled `enterprise/seaweed-volume` on M02;
- LMCache source staged on M01;
- `nixl==1.3.0` installed in the M01 LMCache venv if missing;
- 1 MiB and 20 MiB connector smokes through `loader-rdma`;
- real NIXL CPU runtime transfer from retained Seaweed CPU descriptor to
caller-owned CPU DRAM descriptor, with SHA match.

## Install on M01

1. Install a Buildkite agent on M01.
Expand All @@ -43,6 +55,17 @@ bash rdma-lab-ci/run-mono-rdma-lab.sh \
--profile unified
```

For the LMCache/NIXL CPU runtime gate:

```bash
bash rdma-lab-ci/run-mono-rdma-lab.sh \
--repo https://github.com/seaweedfs/seaweed-mono.git \
--ref main \
--profile lmcache-nixl \
--lmcache-repo https://github.com/LMCache/LMCache.git \
--lmcache-ref dev
```

For a PR branch:

```bash
Expand Down Expand Up @@ -83,6 +106,20 @@ The run must print:
- `UNIFIED_VFS_READ_MATRIX_DONE`
- `UNIFIED_RDMA_GATE_PASS`

For `lmcache-nixl`, the run must print:

- `SEAWEEDKV_LMCACHE_CONNECTOR_GATE_PASS` for both configured sizes;
- `SEAWEEDKV_LMCACHE_WORKLOAD_PASS` with nonzero `batch_saves` and
`batch_loads` when `LMCACHE_WORKLOAD_SECONDS` is enabled;
- `UNIFIED_COMMIT_WITNESS_OK`;
- `LMCACHE_NIXL_RUNTIME_GATE_PASS`.

When `LMCACHE_REQUIRE_NIXL_RUNTIME=1`, the run must also print:

- `SEAWEEDKV_LMCACHE_NIXL_CPU_CALLER`;
- `SEAWEEDKV_LMCACHE_NIXL_RUNTIME_CPU`;
- `LMCACHE_CONNECTOR_NIXL_RUNTIME_SIZE_PASS`.

For the current object hot path, the PR evidence should also record:

- RC push throughput for 20MiB/c32 and 128MiB/c32;
Expand All @@ -102,6 +139,11 @@ Each run writes to `rdma-lab-runs/<timestamp>-<ref>-<profile>/`:
- `run.log`
- `summary.env`

For `lmcache-nixl`, `summary.env` additionally records:

- `RDMA_CI_LMCACHE_ROWS`;
- `RDMA_CI_NIXL_RUNTIME_ROWS`.

Buildkite uploads that directory as an artifact. For manual runs, serve the
directory with any static file server if a simple web view is needed.

Expand Down
15 changes: 15 additions & 0 deletions rdma-lab-ci/config.example.env
Original file line number Diff line number Diff line change
Expand Up @@ -12,3 +12,18 @@ ARTIFACT_DIR=$PWD/rdma-lab-runs
RDMA_PIPES=8
ENABLE_DC=0
DC_INITIATORS=4

# Used by RDMA_CI_PROFILE=lmcache-nixl.
LMCACHE_REPO=https://github.com/LMCache/LMCache.git
LMCACHE_REF=dev
LMCACHE_VENV=/opt/work/lmcache-connector-venv
LMCACHE_SIZES="1048576 20971520"
LMCACHE_WORKLOAD_SECONDS=0
LMCACHE_WORKLOAD_SAVE_BATCH_SIZE=4
LMCACHE_WORKLOAD_LOAD_BATCH_SIZE=4
LMCACHE_WORKLOAD_SEED_SETTLE_SECS=0.5
LMCACHE_RUN_NIXL_RUNTIME=1
LMCACHE_REQUIRE_NIXL_RUNTIME=1
LMCACHE_NIXL_RUNTIME_BACKEND=UCX
LMCACHE_NIXL_RUNTIME_SIZES=1048576
NIXL_PIP_SPEC=nixl==1.3.0
Loading