Linuxサーバーベンチマークスクリプト
CPUとHDDをすばやくベンチマーク
Linuxベンチマークシェルスクリプト
現在のテストは、sysbenchからのCPUおよびHDDを含みます(Debian/Ubuntu系では自動的にインストールされます)。
目標: パフォーマンスユーティリティの引数を覚える必要をなくすこと。bashで記述されています。
ステップ1: ベンチマークのセットアップ:
# 結果とスクリプト用のフォルダを作成export BENCH_DIR=$HOME/benchmarksmkdir -p $BENCH_DIR/resultsステップ2: ショートカットスクリプトの作成: $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}警告: \"${thread_limit}スレッドテスト\"によってテストをスキップしています\n${cyan}CPUコア数が不足しています($CPU_CORES)${reset}\n\n" else printf "\n\n${yellow}警告: \"${thread_limit}スレッドテスト\"によってテストをスキップしています\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 "####>>> \n${testSize}のテストデータを${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####>>> \nテスト完了!大成功です!!!\n\n\n"}ステップ3: スクリプトの権限を設定
chmod +x $BENCH_DIR/*.shsource $HOME/benchmarks/bench-library.shステップ4: バッチランナーのスクリプトを作成 (オプション)
$HOME/benchmarks/run-bench.sh
#!/bin/bashset -e
source ./bench-library.sh
# HDD速度のベンチマーク(現在のディレクトリ内)###########benchDisk
# CPUのベンチマーク - 異なるスレッド数を試す(および作業サイズ)# 十分なコア数がない場合は自動的にテストをスキップします(影響が出るまで)# 注: 異なるハードウェア間で結果が比較可能です(同じ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