forked from woqidaideshi/openruyi-autotest
e2e680831c
All .sh files under tests/ lacked the Git executable permission bit (100644 instead of 100755), causing tmt run to fail with 'permission denied' errors on Linux servers. Fixes: woqidaideshi/openruyi-autotest#80
56 lines
1.9 KiB
Bash
Executable File
56 lines
1.9 KiB
Bash
Executable File
#!/bin/bash
|
|
# Performance: sysbench - 内存带宽: 顺序/随机 读/写
|
|
. /usr/share/beakerlib/beakerlib.sh || exit 1
|
|
. "$(dirname "$0")/../lib.sh"
|
|
|
|
rlJournalStart
|
|
rlPhaseStartSetup "环境准备"
|
|
sysbenchSetup
|
|
TmpDir=$(mktemp -d)
|
|
rlRun "cd $TmpDir" 0 ""
|
|
local cores=$(nproc)
|
|
rlPhaseEnd
|
|
|
|
rlPhaseStartTest "顺序读写 (大块 1M)"
|
|
echo ""
|
|
echo "=== 内存顺序访问 ($cores 线程) ==="
|
|
printf "%-12s %-15s\n" "Mode" "MiB/s"
|
|
|
|
for op in read write; do
|
|
local log="/tmp/sb_mem_seq_${op}.log"
|
|
sysbench --threads=$cores --memory-block-size=1M --memory-total-size=10000G \
|
|
--memory-oper=$op --memory-access-mode=seq --time=15 \
|
|
--report-interval=5 memory run 2>&1 | tee "$log"
|
|
|
|
local bw
|
|
bw=$(grep "MiB/sec" "$log" | grep -oP '[\d.]+' | head -1)
|
|
printf "%-12s %-15s\n" "seq/$op" "${bw:-N/A}"
|
|
rlPass "顺序${op}: ${bw:-N/A} MiB/s"
|
|
done
|
|
rlPhaseEnd
|
|
|
|
rlPhaseStartTest "随机读写 (小块 8K)"
|
|
echo ""
|
|
echo "=== 内存随机访问 ($cores 线程) ==="
|
|
printf "%-12s %-15s\n" "Mode" "MiB/s"
|
|
|
|
for op in read write; do
|
|
local log="/tmp/sb_mem_rnd_${op}.log"
|
|
sysbench --threads=$cores --memory-block-size=8K --memory-total-size=200G \
|
|
--memory-oper=$op --memory-access-mode=rnd --time=15 \
|
|
--report-interval=5 memory run 2>&1 | tee "$log"
|
|
|
|
local bw
|
|
bw=$(grep "MiB/sec" "$log" | grep -oP '[\d.]+' | head -1)
|
|
printf "%-12s %-15s\n" "rnd/$op" "${bw:-N/A}"
|
|
rlPass "随机${op}: ${bw:-N/A} MiB/s"
|
|
done
|
|
rlPhaseEnd
|
|
|
|
rlPhaseStartCleanup "清理"
|
|
rlRun "cd /" 0 ""; [ -n "$TmpDir" ] && rlRun "rm -rf $TmpDir" 0 ""
|
|
rm -f /tmp/sb_mem_*.log
|
|
rlPhaseEnd
|
|
rlJournalPrintText
|
|
rlJournalEnd
|