基准测试V1.1

来源:互联网 发布:戴尔ubuntu怎么装系统 编辑:程序博客网 时间:2024/04/29 02:22
#! /bin/bash
##此基准测试脚本测试使用工具为:fio以及sysbench
##1.fio用于测试HDD和SSD
##2.sysbench用于测试mem和cpu
##3.脚本不区分挂载盘、raid策略和规格,只识别HDD还是SSD
##4.需要hikvision yum源
##5.请使用root执行
##6.各型号存在性能差异,脚本只做测试,不做比较


cur_time=`date '+%Y-%m-%d %H:%M:%S'`
result_file="/root/benchmark/result.log"
hik_yum='/etc/yum.repos.d/hikvision.repo'


#初始化结果文件
if [ -d "/root/benchmark" ]
then continue
else mkdir /root/benchmark
fi
:> $result_file
echo $cur_time >> $result_file


if [ -f "$hik_yum" ]
then continue
else echo "$hik_yum is not exist,quite"
exit 1
fi


echo "Check if fio is install..."
flg=`rpm -qa | grep 'fio-'`
if [ -n "$flg" ]
then echo "$flg is installed"
else echo "Start to install fio"
yum install -y fio.x86_64
fi


echo "Check if sysbench is install..."
flg=`rpm -qa | grep 'sysbench'`
if [ -n "$flg" ]
then echo "$flg is installed"
else echo "Start to install sysbench"
yum install -y sysbench.x86_64
fi


###############测试IO
echo "-------------------IO--------------------------------------" > $result_file
disk_list=`sfdisk -l | grep 'cylinders' | grep 'heads' | grep 'sectors/track' | awk '{gsub(/:/,"");print $2}'`


for i in $disk_list
do
disk_name=`echo $i |awk '{gsub("/dev/","");print $0}'`#盘符名称
disk_rotational=`cat /sys/block/$disk_name/queue/rotational`#HDD为1,SSD为0
disk_mount=`df -hl | grep "$i"| grep -v '/boot' | awk '{print $6}'` #磁盘mount路径

if [ "$disk_rotational" -eq 1 ]
then disk_type="HDD"
else disk_type="SSD"
fi

echo "Start to benchmark IO $disk_type:$i"
for j in "randwrite" "randread" "write" "read"
do
echo "$j"
fio -direct=1  -iodepth=32  -readwrite=$j  -ioengine=libaio  -bs=4K -size=100G  -numjobs=1 --runtime=60s  -group_reporting  -name=$disk_mount/fio_testfile > /root/benchmark/io_${disk_name}_$j.log
echo "$i","$disk_type","$j",`grep "iops" /root/benchmark/io_${disk_name}_$j.log` >> $result_file
done
rm -rf $disk_mount/fio_testfile*
done


###############测试Mem
echo "-------------------Mem--------------------------------------" >> $result_file
mem_type=`dmidecode -t memory | grep 'DDR' |sort -u | awk '{print $2}'`
mem_slot_total=`dmidecode -t memory | grep 'Memory Device' | wc -l`
mem_slot_used=`dmidecode -t memory | grep 'Size:' | grep -v 'No Module Installed' | wc -l`
mem_size=`dmidecode -t memory | grep 'Size:' | grep -v 'No Module Installed' | sort -u | awk '{for (i=2; i <= NF; i++) printf "%s ",\$i }{print ""}'`
mem_speed=`dmidecode -t memory | grep 'Speed' | grep -v 'Configured Clock Speed' | grep -v 'Unknown' | sort -u | awk '{for (i=2; i <= NF; i++) printf "%s ",\$i }{print ""}'`
mem_con_speed=`dmidecode -t memory | grep 'Configured Clock Speed' | grep -v 'Unknown' | sort -u | awk '{for (i=4; i <= NF; i++) printf "%s ",\$i }{print ""}'`
echo "Type: $mem_type Size: $mem_slot_used * $mem_size Speed: $mem_con_speed(max:$mem_speed)" >> $result_file


echo "Start to benchmark Mem"
mem_log="/root/benchmark/mem.log"
sysbench --test=memory --memory-block-size=4K --memory-total-size=16G  --num-threads=1 run > $mem_log
echo `grep "Operations performed" $mem_log`,`grep "transferred" $mem_log` >> $result_file


################测试Cpu
echo "-------------------Cpu--------------------------------------" >> $result_file
cpu_model=`cat /proc/cpuinfo | grep 'model name' | sort -u | awk '{for (i=4; i <= NF; i++) printf "%s ",\$i }{print ""}'`
cpu_core=`cat /proc/cpuinfo|grep "model name" |wc -l`
cpu_cur_speed=`dmidecode -t processor | grep 'Current Speed' | sort -u |awk '{for (i=3; i <= NF; i++) printf "%s ",\$i }{print ""}'`
echo "Model: $cpu_model Core: $cpu_core Cureent Speed: $cpu_cur_speed" >> $result_file


echo "Start to benchmark Cpu"
cpu_log="/root/benchmark/cpu.log"
sysbench --test=cpu --cpu-max-prime=20000 run > $cpu_log
echo `grep "total time taken by event execution" $cpu_log` >> $result_file


#################输出
echo "Benchmark Over."
cat $result_file

0 0
原创粉丝点击