Linux 服务器基准测试脚本
快速基准测试 CPU 与硬盘
Linux 性能基准测试 Shell 脚本
目前的测试涵盖了基于 sysbench 的 CPU 和硬盘性能(在 Debian/Ubuntu 系发行版上会自动安装相关依赖)。
目标:通过 Bash 脚本封装,避免死记硬背性能工具复杂的命令行参数。
第一步: 初始化环境:
# 创建存放结果和脚本的目录export BENCH_DIR=$HOME/benchmarksmkdir -p $BENCH_DIR/results第二步: 创建快捷脚本库:$HOME/benchmarks/bench-library.sh
#!/bin/bashset -e
# 安装依赖if [ "$(which sysbench)" == "" -o "$(which inxi)" == "" -o "$(which tcpdump)" == "" ]; then sudo apt-get update && apt-get install -y sysbench inxi htop iotop tcpdump hddtempfi# 变量定义export DATE_TAG=`date +%F` #YYYY-MM-DDexport CPU_CORES="$([ -e /proc/cpuinfo ] && grep -sc ^processor /proc/cpuinfo || sysctl -n hw.ncpu)"export BENCH_DIR=$HOME/benchmarks/
mkdir -p $BENCH_DIR
function benchCpu() { thread_limit=${1:$CPU_CORES} prime_limit=${2:-20000}
if [ $CPU_CORES -lt `expr 1 + $thread_limit` ]; then printf "\n\n${yellow}ALERT: Skipping tests limited by \"${thread_limit} thread test\"\n${cyan}Not enough CPU Cores ($CPU_CORES) ${reset}\n\n" else printf "\n\n${yellow}ALERT: Skipping tests limited by \"${thread_limit} thread test\"\n${reset}"
sudo sysbench --test=cpu \ --cpu-max-prime=${prime_limit} \ --num-threads=${CPU_CORES} \ run | tee -a $BENCH_DIR/results/cpu-test.log fi}
# benchSingleDisk seqrd 120G 8K 300function benchSingleDisk () { sudo sysbench --test=fileio --init-rng=on --file-test-mode=${1:-seqrd} --file-block-size=${3:-64K} \ --num-threads=${CPU_CORES} --max-time=${4:-180} --file-total-size=${2:-60G} \ --max-requests=0 run | tee -a $BENCH_DIR/results/sysbench-fileio.log}
# benchDisk - 依次测试随机读写、顺序读、顺序写,最后清理。function benchDisk() { # 生成测试文件 - 占用当前目录剩余空间的 75% - 运行 3 项测试(每项最长 20 分钟) freeSpace=`df -k . | tail -1 | awk '{print $4}'` freeSpace="${freeSpace//G|T/}" testSize=$(awk "BEGIN {print ($freeSpace / 1024 / 1024) * 0.75; exit}") testSize=${testSize}G printf "####>>> \nWriting $testSize test data to ${PWD}...\n"
benchSingleDisk seqrd ${testSize} 8K 300 benchSingleDisk seqwr ${testSize} 8K 300 benchSingleDisk seqrw ${testSize} 8K 300 benchSingleDisk rndrd ${testSize} 8K 300 benchSingleDisk rndwr ${testSize} 8K 300 benchSingleDisk rndrw ${testSize} 8K 300
benchSingleDisk seqrd ${testSize} 64K 300 benchSingleDisk seqwr ${testSize} 64K 300 benchSingleDisk seqrw ${testSize} 64K 300 benchSingleDisk rndrd ${testSize} 64K 300 benchSingleDisk rndwr ${testSize} 64K 300 benchSingleDisk rndrw ${testSize} 64K 300
printf "\n\n####>>> \nCOMPLETED TESTS! Great Success!!! \n\n\n"}第三步: 设置脚本权限
chmod +x $BENCH_DIR/*.shsource $HOME/benchmarks/bench-library.sh第四步: 创建批量运行脚本(可选)
$HOME/benchmarks/run-bench.sh
#!/bin/bashset -e
source ./bench-library.sh
# 测试硬盘速度(在当前目录下)###########benchDisk
# 测试 CPU - 尝试不同的线程数(和计算规模)# 如果核心数不足以产生有效对比,脚本会自动跳过该项# 注:结果在不同硬件之间具有可比性 —— 前提是它们的核心数相同。###########benchCpu 1benchCpu 4benchCpu 8 50000benchCpu 12 100000benchCpu 16 100000benchCpu 32 250000benchCpu 48 500000benchCpu 64 2000000最后添加执行权限:
chmod +x $BENCH_DIR/*.sh使用方法
确保先执行 source ~/benchmarks/bench-library.sh 加载函数库,然后直接运行 benchCpu 或 benchDisk。
benchCpu 8 250000benchCpu 16 250000benchDisk