mirror of
https://gitlab.kube.huskypup.net/Scooby/Homelabv4.git
synced 2026-08-21 11:36:50 +00:00
234 lines
6.1 KiB
YAML
234 lines
6.1 KiB
YAML
---
|
|
# V1 PVC (traditional iSCSI engine)
|
|
apiVersion: v1
|
|
kind: PersistentVolumeClaim
|
|
metadata:
|
|
name: benchmark-v1-pvc
|
|
namespace: default
|
|
spec:
|
|
accessModes:
|
|
- ReadWriteOnce
|
|
storageClassName: longhorn # V1 engine (default)
|
|
resources:
|
|
requests:
|
|
storage: 50Gi
|
|
---
|
|
# V2 PVC (SPDK engine)
|
|
apiVersion: v1
|
|
kind: PersistentVolumeClaim
|
|
metadata:
|
|
name: benchmark-v2-pvc
|
|
namespace: default
|
|
spec:
|
|
accessModes:
|
|
- ReadWriteOnce
|
|
storageClassName: longhorn-v2 # V2 SPDK engine
|
|
resources:
|
|
requests:
|
|
storage: 50Gi
|
|
---
|
|
# Benchmark scripts ConfigMap
|
|
apiVersion: v1
|
|
kind: ConfigMap
|
|
metadata:
|
|
name: v1-v2-benchmark-scripts
|
|
namespace: default
|
|
data:
|
|
run-benchmarks.sh: |
|
|
#!/bin/sh
|
|
set -e
|
|
|
|
ENGINE=$1
|
|
DATA_DIR=$2
|
|
|
|
echo "=========================================="
|
|
echo "Longhorn $ENGINE Data Engine Benchmark"
|
|
echo "=========================================="
|
|
echo "Test file: $DATA_DIR/testfile (10GB)"
|
|
echo ""
|
|
|
|
# Sequential Write
|
|
echo "1. Sequential Write Test..."
|
|
fio --name=seq-write \
|
|
--filename=$DATA_DIR/testfile \
|
|
--size=10G \
|
|
--rw=write \
|
|
--bs=1M \
|
|
--direct=1 \
|
|
--numjobs=1 \
|
|
--time_based \
|
|
--runtime=60 \
|
|
--group_reporting \
|
|
--output-format=normal | tee /tmp/seq-write.log
|
|
|
|
SEQ_WRITE_BW=$(grep "WRITE:" /tmp/seq-write.log | awk '{print $2}' | sed 's/bw=//;s/,//')
|
|
SEQ_WRITE_IOPS=$(grep "WRITE:" /tmp/seq-write.log | awk '{print $4}' | sed 's/IOPS=//;s/,//')
|
|
|
|
echo ""
|
|
echo "=========================================="
|
|
echo ""
|
|
|
|
# Sequential Read
|
|
echo "2. Sequential Read Test..."
|
|
fio --name=seq-read \
|
|
--filename=$DATA_DIR/testfile \
|
|
--rw=read \
|
|
--bs=1M \
|
|
--direct=1 \
|
|
--numjobs=1 \
|
|
--time_based \
|
|
--runtime=60 \
|
|
--group_reporting \
|
|
--output-format=normal | tee /tmp/seq-read.log
|
|
|
|
SEQ_READ_BW=$(grep "READ:" /tmp/seq-read.log | awk '{print $2}' | sed 's/bw=//;s/,//')
|
|
SEQ_READ_IOPS=$(grep "READ:" /tmp/seq-read.log | awk '{print $4}' | sed 's/IOPS=//;s/,//')
|
|
|
|
echo ""
|
|
echo "=========================================="
|
|
echo ""
|
|
|
|
# Random Write
|
|
echo "3. Random Write Test (4K blocks)..."
|
|
fio --name=rand-write \
|
|
--filename=$DATA_DIR/testfile \
|
|
--rw=randwrite \
|
|
--bs=4k \
|
|
--direct=1 \
|
|
--numjobs=4 \
|
|
--time_based \
|
|
--runtime=60 \
|
|
--group_reporting \
|
|
--output-format=normal | tee /tmp/rand-write.log
|
|
|
|
RAND_WRITE_IOPS=$(grep "WRITE:" /tmp/rand-write.log | awk '{print $4}' | sed 's/IOPS=//;s/,//')
|
|
RAND_WRITE_BW=$(grep "WRITE:" /tmp/rand-write.log | awk '{print $2}' | sed 's/bw=//;s/,//')
|
|
|
|
echo ""
|
|
echo "=========================================="
|
|
echo ""
|
|
|
|
# Random Read
|
|
echo "4. Random Read Test (4K blocks)..."
|
|
fio --name=rand-read \
|
|
--filename=$DATA_DIR/testfile \
|
|
--rw=randread \
|
|
--bs=4k \
|
|
--direct=1 \
|
|
--numjobs=4 \
|
|
--time_based \
|
|
--runtime=60 \
|
|
--group_reporting \
|
|
--output-format=normal | tee /tmp/rand-read.log
|
|
|
|
RAND_READ_IOPS=$(grep "READ:" /tmp/rand-read.log | awk '{print $4}' | sed 's/IOPS=//;s/,//')
|
|
RAND_READ_BW=$(grep "READ:" /tmp/rand-read.log | awk '{print $2}' | sed 's/bw=//;s/,//')
|
|
|
|
echo ""
|
|
echo "=========================================="
|
|
echo "$ENGINE Engine Results Summary"
|
|
echo "=========================================="
|
|
echo "Sequential Write: $SEQ_WRITE_BW ($SEQ_WRITE_IOPS IOPS)"
|
|
echo "Sequential Read: $SEQ_READ_BW ($SEQ_READ_IOPS IOPS)"
|
|
echo "Random Write: $RAND_WRITE_BW ($RAND_WRITE_IOPS IOPS)"
|
|
echo "Random Read: $RAND_READ_BW ($RAND_READ_IOPS IOPS)"
|
|
echo "=========================================="
|
|
---
|
|
# V1 Benchmark Job
|
|
apiVersion: batch/v1
|
|
kind: Job
|
|
metadata:
|
|
name: benchmark-v1
|
|
namespace: default
|
|
spec:
|
|
ttlSecondsAfterFinished: 3600
|
|
template:
|
|
metadata:
|
|
labels:
|
|
app: benchmark
|
|
engine: v1
|
|
spec:
|
|
restartPolicy: Never
|
|
containers:
|
|
- name: fio
|
|
image: ljishen/fio:latest
|
|
command: ["/bin/sh"]
|
|
args: ["/scripts/run-benchmarks.sh", "V1", "/data"]
|
|
resources:
|
|
requests:
|
|
cpu: "1"
|
|
memory: "2Gi"
|
|
limits:
|
|
cpu: "2"
|
|
memory: "4Gi"
|
|
volumeMounts:
|
|
- name: data
|
|
mountPath: /data
|
|
- name: scripts
|
|
mountPath: /scripts
|
|
securityContext:
|
|
runAsNonRoot: false
|
|
runAsUser: 0
|
|
capabilities:
|
|
drop:
|
|
- ALL
|
|
seccompProfile:
|
|
type: RuntimeDefault
|
|
volumes:
|
|
- name: data
|
|
persistentVolumeClaim:
|
|
claimName: benchmark-v1-pvc
|
|
- name: scripts
|
|
configMap:
|
|
name: v1-v2-benchmark-scripts
|
|
defaultMode: 0755
|
|
---
|
|
# V2 Benchmark Job
|
|
apiVersion: batch/v1
|
|
kind: Job
|
|
metadata:
|
|
name: benchmark-v2
|
|
namespace: default
|
|
spec:
|
|
ttlSecondsAfterFinished: 3600
|
|
template:
|
|
metadata:
|
|
labels:
|
|
app: benchmark
|
|
engine: v2
|
|
spec:
|
|
restartPolicy: Never
|
|
containers:
|
|
- name: fio
|
|
image: ljishen/fio:latest
|
|
command: ["/bin/sh"]
|
|
args: ["/scripts/run-benchmarks.sh", "V2", "/data"]
|
|
resources:
|
|
requests:
|
|
cpu: "1"
|
|
memory: "2Gi"
|
|
limits:
|
|
cpu: "2"
|
|
memory: "4Gi"
|
|
volumeMounts:
|
|
- name: data
|
|
mountPath: /data
|
|
- name: scripts
|
|
mountPath: /scripts
|
|
securityContext:
|
|
runAsNonRoot: false
|
|
runAsUser: 0
|
|
capabilities:
|
|
drop:
|
|
- ALL
|
|
seccompProfile:
|
|
type: RuntimeDefault
|
|
volumes:
|
|
- name: data
|
|
persistentVolumeClaim:
|
|
claimName: benchmark-v2-pvc
|
|
- name: scripts
|
|
configMap:
|
|
name: v1-v2-benchmark-scripts
|
|
defaultMode: 0755
|