From 5d2722de9290472bb8fbd120d1ec506f7765e209 Mon Sep 17 00:00:00 2001 From: Siho Shin Date: Sat, 27 Jun 2026 08:59:14 +0900 Subject: asdf --- decompress/run.sh | 150 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 150 insertions(+) create mode 100755 decompress/run.sh (limited to 'decompress/run.sh') diff --git a/decompress/run.sh b/decompress/run.sh new file mode 100755 index 0000000..e75b465 --- /dev/null +++ b/decompress/run.sh @@ -0,0 +1,150 @@ +#!/usr/bin/env bash + +set -euo pipefail + +usage() { + echo "Usage: $0 [remote-log-prefix-base]" + echo + echo "Examples:" + echo " $0 VANILLA_1G 10 bins/1G 1M" + echo " $0 TRACE_5G 10 bins/5G 1M TRACE_5G" +} + +if [[ $# -lt 4 || $# -gt 5 ]]; then + usage + exit 1 +fi + +TAG="$1" +RUNS="$2" +REMOTE_CHUNK_DIR="$3" +CHUNK_SIZE="$4" +REMOTE_PREFIX_BASE="${5:-${TAG}}" + +SSH_KEY="$HOME/.ssh/id_ed25519" +REMOTE_HOST="ubuntu@143.248.53.46" +REMOTE_DIR="/home/ubuntu/siho-benchmark/compress" + +# DPU-side PCI BDF. +DPU_PCI="03:00.0" + +# DPU-side wrapper script. +DPU_SCRIPT="./run.sh" + +TIMES_CSV="times_${TAG}.csv" +BW_CSV="bw_${TAG}.csv" + +SSH_OPTS=( + -i "$SSH_KEY" + -n + -o BatchMode=yes + -o StrictHostKeyChecking=accept-new +) + +echo "=====" +echo "SIHO'S DOCA DECOMPRESS BENCHMARKING" +echo "SSH KEY LOCATION: $SSH_KEY" +echo "REMOTE HOST: $REMOTE_HOST" +echo "REMOTE DIR: $REMOTE_DIR" +echo "TAG: $TAG" +echo "DPU PCIE ADDRESS: $DPU_PCI" +echo "RUNS: $RUNS" +echo "REMOTE CHUNK DIR: $REMOTE_CHUNK_DIR" +echo "CHUNK SIZE: $CHUNK_SIZE" +echo "DPU SCRIPT: $DPU_SCRIPT" +echo "=====" +echo "PROCEED (y/N)?" + +read -r proceed + +if [[ "${proceed:-}" != "y" ]]; then + echo "TERMINATING..." + exit 0 +fi + +for i in $(seq 1 "$RUNS"); do + echo "===== RUN $i/$RUNS =====" + + RUN_LABEL="${REMOTE_PREFIX_BASE}_run_${i}" + + echo "[dpu] Running decompressor through wrapper..." + + if ! dpu_out="$( + ssh "${SSH_OPTS[@]}" "$REMOTE_HOST" \ + "cd '$REMOTE_DIR' && sudo -n '$DPU_SCRIPT' '$REMOTE_PREFIX_BASE' '$DPU_PCI' '$REMOTE_CHUNK_DIR' '$CHUNK_SIZE' '$RUN_LABEL'" \ + 2>&1 + )"; then + echo "ERROR: DPU decompressor failed" + echo "$dpu_out" + exit 1 + fi + + compressed_bytes="$( + awk '/^[[:space:]]*compressed_bytes:/ {print $2}' <<< "$dpu_out" | tail -n1 + )" + + bytes="$( + awk '/^[[:space:]]*bytes:/ {print $2}' <<< "$dpu_out" | tail -n1 + )" + + time_val="$( + awk '/^[[:space:]]*time:/ {print $2}' <<< "$dpu_out" | tail -n1 + )" + + time_unit="$( + awk '/^[[:space:]]*time:/ {print $3}' <<< "$dpu_out" | tail -n1 + )" + + bw_val="$( + awk '/^[[:space:]]*BW:/ {print $2}' <<< "$dpu_out" | tail -n1 + )" + + bw_unit="$( + awk '/^[[:space:]]*BW:/ {print $3}' <<< "$dpu_out" | tail -n1 + )" + + chunks="$( + awk '/^[[:space:]]*chunks:/ {print $2}' <<< "$dpu_out" | tail -n1 + )" + + if [[ -z "${bytes:-}" || -z "${time_val:-}" || -z "${bw_val:-}" ]]; then + echo "ERROR: failed to parse DPU output" + echo "$dpu_out" + exit 1 + fi + + # Convert time to usec. + case "$time_unit" in + usec) time_usec="$time_val" ;; + msec) time_usec="$(awk -v x="$time_val" 'BEGIN { printf "%.6f", x * 1000.0 }')" ;; + sec) time_usec="$(awk -v x="$time_val" 'BEGIN { printf "%.6f", x * 1000000.0 }')" ;; + nsec) time_usec="$(awk -v x="$time_val" 'BEGIN { printf "%.6f", x / 1000.0 }')" ;; + *) time_usec="$time_val" ;; + esac + + # Convert bandwidth to KiB/s. + case "$bw_unit" in + KiB/s|KiBps) bw_kibps="$bw_val" ;; + MiB/s|MiBps) bw_kibps="$(awk -v x="$bw_val" 'BEGIN { printf "%.6f", x * 1024.0 }')" ;; + GiB/s|GiBps) bw_kibps="$(awk -v x="$bw_val" 'BEGIN { printf "%.6f", x * 1024.0 * 1024.0 }')" ;; + B/s|Bps) bw_kibps="$(awk -v x="$bw_val" 'BEGIN { printf "%.6f", x / 1024.0 }')" ;; + *) bw_kibps="$bw_val" ;; + esac + + if [[ ! -f "$TIMES_CSV" ]]; then + echo "bytes,time_usec" > "$TIMES_CSV" + fi + + if [[ ! -f "$BW_CSV" ]]; then + echo "bytes,bw_KiBps" > "$BW_CSV" + fi + + echo "$bytes,$time_usec" >> "$TIMES_CSV" + echo "$bytes,$bw_kibps" >> "$BW_CSV" + + echo "[result] chunks=${chunks:-N/A} compressed_bytes=${compressed_bytes:-N/A} bytes=$bytes time_usec=$time_usec bw_KiBps=$bw_kibps" + echo "===== RUN $i/$RUNS DONE =====" +done + +echo "Wrote: $TIMES_CSV" +echo "Wrote: $BW_CSV" -- cgit v1.2.3