diff --git a/.github/actions/setup-disk-benchmark/action.yml b/.github/actions/setup-disk-benchmark/action.yml index 19c6fcbaa..69d7cef74 100644 --- a/.github/actions/setup-disk-benchmark/action.yml +++ b/.github/actions/setup-disk-benchmark/action.yml @@ -23,8 +23,16 @@ runs: steps: - name: Install Rust shell: bash - run: rustup show + run: | + if ! command -v rustup &>/dev/null; then + curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y + echo "$HOME/.cargo/bin" >> "$GITHUB_PATH" + fi + - name: Show Rust toolchain + shell: bash + run: rustup show + - name: Install system dependencies shell: bash run: | diff --git a/.github/workflows/disk-benchmarks-aa.yml b/.github/workflows/disk-benchmarks-aa.yml index 800acbdfb..60e38aa08 100644 --- a/.github/workflows/disk-benchmarks-aa.yml +++ b/.github/workflows/disk-benchmarks-aa.yml @@ -37,7 +37,7 @@ jobs: # A/A benchmark: run main vs main to detect environment noise. aa-benchmark: name: A/A - ${{ matrix.dataset }} - runs-on: ubuntu-latest + runs-on: [ self-hosted, 1ES.Pool=diskann-github, ubuntu-latest ] timeout-minutes: 120 strategy: fail-fast: false @@ -51,6 +51,18 @@ jobs: archive: openai-100K.tar.gz steps: + - name: Mount high-speed NVMe SSD + shell: bash + run: | + sudo mkdir -p /mnt/nvme + sudo lsblk + sudo mkfs.ext4 /dev/nvme0n1 + sudo mount /dev/nvme0n1 /mnt/nvme + sudo chmod 777 /mnt/nvme + mkdir -p /mnt/nvme/diskann_rust /mnt/nvme/baseline + ln -s /mnt/nvme/diskann_rust diskann_rust + ln -s /mnt/nvme/baseline baseline + - name: Checkout main uses: actions/checkout@v4 with: diff --git a/.github/workflows/disk-benchmarks.yml b/.github/workflows/disk-benchmarks.yml index 919e74c15..9ef3b4075 100644 --- a/.github/workflows/disk-benchmarks.yml +++ b/.github/workflows/disk-benchmarks.yml @@ -54,7 +54,7 @@ jobs: # Macro benchmark: compare current branch against baseline macro-benchmark: name: Macro Benchmark - ${{ matrix.dataset }} - runs-on: ubuntu-latest + runs-on: [ self-hosted, 1ES.Pool=diskann-github, ubuntu-latest ] # TODO: For production benchmarks, consider using a self-hosted runner with: # - NVMe storage for consistent I/O performance # - CPU pinning (taskset) for reduced variance @@ -74,6 +74,18 @@ jobs: data_dir: OpenAIArXiv steps: + - name: Mount high-speed NVMe SSD + shell: bash + run: | + sudo mkdir -p /mnt/nvme + sudo lsblk + sudo mkfs.ext4 /dev/nvme0n1 + sudo mount /dev/nvme0n1 /mnt/nvme + sudo chmod 777 /mnt/nvme + mkdir -p /mnt/nvme/diskann_rust /mnt/nvme/baseline + ln -s /mnt/nvme/diskann_rust diskann_rust + ln -s /mnt/nvme/baseline baseline + - name: Checkout current branch uses: actions/checkout@v4 with: