准备工作
- 明确测试项目和指标
本例:
CPU:每秒运算数
内存:内存带宽、内存延迟
存储:IOPS、带宽、时延
网络:上传、下载带宽 - 对比基准测试数据以对结果进行评估
数据来源可以为云商提供的产品介绍或者其他的测评报告,测试时维持配置一致即可。
本测试机型为8核心32GB机器,对比以下基准数据
开始测试
- CPU
1、测试工具sysbench
# threads与cpu核心数量一致,避免上下文切换,建议测试3次,取平均结果
rpm -ql sysbench || yum -y install sysbench
sysbench cpu --cpu-max-prime=20000 --threads=8 --time=50 run
sysbench cpu --cpu-max-prime=20000 --threads=8 --time=50 run
sysbench cpu --cpu-max-prime=20000 --threads=8 --time=50 run
2、关键结果
3、基准数据对比评价:略
- 内存带宽:
1、测试工具stream
# stream需要手动编译后执行,编译的参数会影响到测试结果
rpm -ql gcc || yum -y install gcc
[ -e stream.c ] || wget http://www.cs.virginia.edu/stream/FTP/Code/stream.c
gcc -march=native -O3 -mcmodel=medium -fopenmp -DSTREAM_ARRAY_SIZE=100000000 -DNTIMES=30 -DOFFSET=4096 stream.c -o stream.o
./stream.o
2、关键结果
3、基准数据对比评价:略
4、额外说明:stream.c的编译参数对于测试结果有较大影响,其中参数的作用可以参见这篇文章
- 内存延迟
1、测试工具Intel MLC
[ -e mlc_v3.9.tgz ] || wget https://software.intel.com/content/dam/develop/external/us/en/protected/mlc_v3.9.tgz
[ -d Linux ] || tar xzf mlc_v3.9.tgz
num=$(cat /proc/sys/vm/nr_hugepages 2> /dev/null)
echo 4000 > /proc/sys/vm/nr_hugepages
cd Linux && ./mlc --latency_matrix
echo $num > /proc/sys/vm/nr_hugepages
2、关键结果
3、基准数据对比评价:略
- 存储
1、测试工具fio
#将命令中的target替换成目标磁盘(块设备而非分区),此此操作会破坏磁盘数据,如果不像破坏磁盘数据,请将测试目标替换为磁盘挂载的目录中的一个文件
#随机读IOPS
fio -bs=4k -ioengine=libaio -iodepth=32 -direct=1 -rw=randread -time_based -runtime=600 -refill_buffers -norandommap -randrepeat=0 -group_reporting -name=fio-randread-iops --size=1G -filename=${target} --runtime=30s
#随机写IOPS
fio -bs=4k -ioengine=libaio -iodepth=32 -direct=1 -rw=randwrite -time_based -runtime=600 -refill_buffers -norandommap -randrepeat=0 -group_reporting -name=fio-randwrite-iops --size=10G -filename=${target} --runtime=30s
#随机读时延
fio -bs=4k -ioengine=libaio -iodepth=1 -direct=1 -rw=randread -time_based -runtime=600 -refill_buffers -norandommap -randrepeat=0 -group_reporting -name=fio-randread-lat --size=10G --runtime=30s -filename=${target}
#随机写时延
fio -bs=4k -ioengine=libaio -iodepth=1 -direct=1 -rw=randwrite -time_based -runtime=600 -refill_buffers -norandommap -randrepeat=0 -group_reporting -name=fio-randwrite-lat --size=10G --runtime=30s -filename=${target}
#随机读带宽
fio -bs=128k -ioengine=libaio -iodepth=32 -direct=1 -rw=read -time_based -runtime=600 -refill_buffers -norandommap -randrepeat=0 -group_reporting -name=fio-read-throughput --size=10G --runtime=30s -filename=${target}
#随机写带宽
fio -bs=128k -ioengine=libaio -iodepth=32 -direct=1 -rw=write -time_based -runtime=600 -refill_buffers -norandommap -randrepeat=0 -group_reporting -name=fio-write-throughput --size=10G --runtime=30s -filename=${target}
2、关键结果
3、基准数据对比评价:略
4、额外说明:不能进使用一条命令的结果来获取各个指标项目的值,因为参数的不同会导致结果的不同而影响到获取到的指标的值,使用具体的命令获取具体项目的值已得到更真实的结果
- 网络测试
1、测试工具speedtest
rpm -ql speedtest || (yum install wget && wget https://bintray.com/ookla/rhel/rpm -O bintray-ookla-rhel.repo && mv bintray-ookla-rhel.repo /etc/yum.repos.d/ && yum -y install speedtest)
speedtest
2、关键结果:见终端输出
3、基准数据对比评价:略
4、额外说明:speedtest仅测试最近的一个测速点,如果想更换测速点,使用speedtest -L 列出测速点,使用speedtest -s <上一条命令获取的测速节点的编号>测试指定测速点
整理为测试脚本以复用