Solaris環境のベンチマーク時にvmstat、iostatを一元的に起動/停止するシェル

ちょっと仕事で必要となりそうだったので、以前、同僚が作成されたvmstatとiostatをバックグランドで開始するシェルとそれらのプロセスを停止するシェルの環境依存のところを取り除いてSolaris向けにシンプルにしたものを備忘録として整理します。

  • 起動シェル ・・・ 引数にテストケース番号と計測間隔秒を指定します
#!/usr/bin/ksh

# Change settings for your project.
export PROJECT_NAME=Benchmark-Project

export RESULT_DIR=/var/tmp/${PROJECT_NAME}
export HOSTNAME=`hostname`
export VMSTAT_OUT=vmstat_${HOSTNAME}.log
export IOSTAT_OUT=iostat_${HOSTNAME}.log
export LANG=C

echo $0 $1 $2 on ${HOSTNAME}

if [ "$1" = "" ]; then
  echo "Usage: start.sh "
  exit;
fi

TESTCASE=$1
INTERVAL=$2

if [ ! -d "${RESULT_DIR}" ]; then
  mkdir -p ${RESULT_DIR}
fi
vmstat ${INTERVAL} > ${RESULT_DIR}/${TESTCASE}_${VMSTAT_OUT} 2>&1 &
iostat ${INTERVAL} > ${RESULT_DIR}/${TESTCASE}_${IOSTAT_OUT} 2>&1 &

exit 0
  • 停止シェル ・・・ 引数は有りません
#!/usr/bin/ksh

KILL="./kill.sh"
echo \#! /bin/sh > "${KILL}"
ps -ef | grep vmstat | grep -v grep | awk '{print "kill ", $2}' >> ${KILL}
ps -ef | grep iostat | grep -v grep | awk '{print "kill ", $2}' >> ${KILL}

chmod +x ${KILL}
${KILL}
rm ${KILL}

exit 0

Linuxならそのまま動作するかも知れませんが未確認です。HP-UXだとiostatよりはsarを利用した方が良かったりします。AIXは最近は利用していないのでちょっと分からないですが、基本的にSolaris環境以外で動作させる場合は適宜修正が必要かと思います。

あとプロセス停止用シェルファイルを一時的に作成している処理がちょっと自分の趣味に合わないですが、作り直すのが面倒だったのでそのまま流用しています・・・。(^-^;