动手实践云技术体系

主流benchmark工具使用汇总

2018-07-17  本文已影响0人  拖鞋花短裤

SPEC CPU 2006

基本的文件目录结构如下:

安装步骤如下:

# apt-get install libgfortran3 numactl /*安装必要组件*/

# cd $YOUR_FOLDER

# tar xzf cpu2006.tgz

# cd cpu2006

#  ./bin/relocate

# source $YOUR_FOLDER/cpu2006/shrc

配置我们的config文件,里面包含操作平台/硬件/软件信息,配合不同测试参数实现不同性能维度的测试。我们在此用的配置文件是clover-linux64-amd64-gcc47.cfg,修改其中的硬件参数然后执行runspe。关于配置的具体参数和描述可以参考https://www.spec.org/cpu2006/Docs/config.html

# ./bin/runspec --config clover-linux64-amd64-gcc47.cfg--tune=base int /*--config指定运行的配置文件,tune=base代表基本的性能衡量,还有peak可选,提供更多的配置编译选择

更多执行参数参考:https://www.spec.org/cpu2006/Docs/runspec.html

常见问题:https://www.spec.org/cpu2006/Docs/faq.html

LMbench

LMbench包括一套针对不同操作系统的基准测试工具,包括上下文切换,本地通信,内存带宽和文件操作等。

安装步骤如下:

# wget https://superb-sea2.dl.sourceforge.net/project/lmbench/development/lmbench-3.0-a9/lmbench-3.0-a9.tgz

# tar -xzvf lmbench-3.0-a9.tgz

# cd lmbench-3.0-a9/

# make results /*第一次执行,弹出的配置选项可暂时用default值*/

# make rerun /*在执行完第一次的初始化执行后,基本make result生成的配置文件再次测试*/

# make see /*查看结果,可以拷贝到excel上来进行进一步的分析和图表呈现*/

执行过程比较长,需要耐心等待。最后输出的信息有两个需要注意:

Using config in CONFIG.k-1 /*我们可以看到这次执行用的上次的配置文件*/

Mon Jul 23 06:27:25 UTC 2018

Latency measurements

Mon Jul 23 06:29:54 UTC 2018

Calculating file system latency

Mon Jul 23 06:29:57 UTC 2018

Local networking

Mon Jul 23 06:31:07 UTC 2018

Bandwidth measurements

Mon Jul 23 06:33:54 UTC 2018

Calculating context switch overhead

Mon Jul 23 06:34:02 UTC 2018

Calculating effective TLB size

Mon Jul 23 06:34:02 UTC 2018

Calculating memory load parallelism

Mon Jul 23 06:34:03 UTC 2018

McCalpin's STREAM benchmark

Mon Jul 23 06:34:04 UTC 2018

Calculating memory load latency

Mon Jul 23 06:56:01 UTC 2018

Mailing results

../scripts/results: 37: ../scripts/results: mail: not found /*这个错误无需理会,看看具体的shell就只知道原因了*/

当前的执行目录下查看测试结果,可以看到系统软硬件环境参数,输出的具体内存读写,文件系统读写等详细信息

# vim results/x86_64-linux-gnu/k-1.2

基本的测试完毕之后,利用make see来查看工具自动生成的表格状信息

# make see

cd results && make summary >summary.out 2>summary.errs

cd results && make percent >percent.out 2>percent.errs

# vim ./results/summary.out

查看summary.errs查看生成日志

IOzone

文件系统的基准测试工具,用来模拟各种磁盘访问操作,用户可以自己定义文件块大小,IO大小和访问模式。比如针对数据中心场景的IO密集型操作,该工具可以用来模拟针对大文件的大数据块的随机访问。

安装步骤如下:

# wget http://www.iozone.org/src/current/iozone3_482.tar

# tar -xvf iozone3_482.tar

# less iozone3_482/src/current/makefile

makefile中针对amd64的编译选项

# make linux-AMD64

Building iozone for Linux-AMD64

cc -c -O3 -Dunix -DHAVE_ANSIC_C -DASYNC_IO -DNAME='"linux-AMD64"' \

        -D__AMD64__ -DSHARED_MEM -Dlinux -D_LARGEFILE64_SOURCE \

        -DHAVE_PREAD  iozone.c -o iozone_linux-AMD64.o

cc -c -O3 -Dunix -DHAVE_ANSIC_C -DASYNC_IO -D_LARGEFILE64_SOURCE \

        -DSHARED_MEM -Dlinux  libbif.c -o libbif.o

cc -c -O3 -Dunix -Dlinux -DHAVE_ANSIC_C -DASYNC_IO \

        -D_LARGEFILE64_SOURCE  libasync.c  -o libasync.o

Building fileop for Linux-AMD64

cc -Wall -c -O3  fileop.c -o fileop_linux-AMD64.o

Building the pit_server

cc -c  pit_server.c  -o pit_server.o

cc  -O3  iozone_linux-AMD64.o libbif.o libasync.o \

        -lrt -lpthread -o iozone

cc  -O3 -Dlinux fileop_linux-AMD64.o -o fileop

cc  -O3 -Dlinux pit_server.o -o pit_server

root@k8s-cluster-1:/home/ubuntu/iozone/iozone3_482/src/current# ls *.o

fileop_linux-AMD64.o  iozone_linux-AMD64.o  libasync.o  libbif.o  pit_server.o

# ./iozone -h

在执行前,我们先准备一块测试用volume,基本步骤如下

OpenStack cinder分配出一块10G的volume

# fdisk -l

Disk /dev/vda: 100 GiB, 107374182400 bytes, 209715200 sectors

Units: sectors of 1 * 512 = 512 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

Disklabel type: dos

Disk identifier: 0x49ec635a

Device    Boot Start      End  Sectors  Size Id Type

/dev/vda1  *    2048 209715166 209713119  100G 83 Linux

Disk /dev/vdb: 10 GiB, 10737418240 bytes, 20971520 sectors

Units: sectors of 1 * 512 = 512 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

利用lvm和mkfs进行磁盘的划分和初始化

# fdisk /dev/vdb

...

Command (m for help): n

Partition type

  p  primary (0 primary, 0 extended, 4 free)

  e  extended (container for logical partitions)

Select (default p): e

...

Command (m for help): w

The partition table has been altered.

Calling ioctl() to re-read partition table.

Syncing disks.

# fdisk /dev/vdb

Command (m for help): p

Disk /dev/vdb: 10 GiB, 10737418240 bytes, 20971520 sectors

Units: sectors of 1 * 512 = 512 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

Disklabel type: dos

Disk identifier: 0x7ae1a7eb

Device    Boot Start      End  Sectors Size Id Type

/dev/vdb1        2048 20971519 20969472  10G  5 Extended

/dev/vdb5        4096 20971519 20967424  10G 83 Linux

Command (m for help): w

The partition table has been altered.

Calling ioctl() to re-read partition table.

Syncing disks.

# pvcreate /dev/vdb5

  Physical volume "/dev/vdb5" successfully created

# vgcreate vg-demo /dev/vdb5

  Volume group "vg-demo" successfully created

# lvcreate -L 5GB -n lv-demo vg-demo

  Logical volume "lv-demo" created.

# lvdisplay

  --- Logical volume ---

  LV Path                /dev/vg-demo/lv-demo

  LV Name                lv-demo

  VG Name                vg-demo

  LV UUID                oL5t1V-mBiD-eeo1-Yd3z-nKf2-BeMW-npEy0t

  LV Write Access        read/write

  LV Creation host, time k8s-cluster-1, 2018-07-23 07:41:19 +0000

  LV Status              available

  # open                0

  LV Size                5.00 GiB

  Current LE            1280

  Segments              1

  Allocation            inherit

  Read ahead sectors    auto

  - currently set to    256

  Block device          252:0

# mkfs -t ext4 /dev/vg-demo/lv-demo

# mount /dev/vg-demo/lv-demo /var/demo

# mount | grep demo

/dev/mapper/vg--demo-lv--demo on /var/demo type ext4 (rw,relatime,data=ordered)

执行测试,其中-b知道excel文件名,-R用于输出excel,-i指定访问模式,2是随机读写,-f指定使用的文件,-r指定IO块大小,这里是32kb,-s知道使用文件大小,这里是4.9g。其中需要注意的一点是benchmark使用的文件如果小于内存大小将可能被缓存,从而测试的是内存的吞吐量而不是磁盘系统的吞吐量,为了避免这种情况,我们可以1)让文件大小为两倍内存大小;2)mount的时候使用sync选项,这里我们用的前者

# ./iozone -b results.xls -R -i 0 -i 2 -f /var/demo/iozone.file -r 32 -s 4.9g

等待测试完毕

# ls -alh /var/demo/iozone.file

-rw-r----- 1 root root 2.7G Jul 23 07:58 /var/demo/iozone.file

# ls -alh /var/demo/iozone.file

-rw-r----- 1 root root 2.8G Jul 23 07:58 /var/demo/iozone.file

打开执行目录下的result.xls文件

具体的执行信息

netperf

安装直接apt-get install netperf

netperf用于测试tcp/ip的网络性能,支持unix docket和sctp。它基于client-server模式,被测系统或设备作为server端运行netserver,client通过额外的一条控制连接来进行配置,发包和获取结果,同实际的测试流量隔离开以确保测试结果的准确性。netperf发出的流量主要分为两类:1)bulk data;2)request/response。这里有个缺陷是netperf目前只能基于一个socket进行测试而无法支持多并发的session。当前用的版本是2.6.0,可以通过简单的shell脚本将任务循环放入后台来实现。

这里需要两个设备,一个client,一个server。

server端:

root@k-2:~# netserver -p 9999

Starting netserver with host 'IN(6)ADDR_ANY' port '9999' and family AF_UNSPEC

root@k-2:~# netstat -pan | grep 9999

tcp6      0      0 :::9999                :::*                    LISTEN      6163/netserver

client端(可以-c/-C来实现本地/远程CPU利用率的查看),这里我们-t指定的是TCP_CRR,实现连接/请求/回应/终结等操作,每次交互都会重新建立链接,http的keepalive功能是关闭的,主要用于http1.0/1.1模拟。其他几种主要的模式如下:

TCP_STREAM 基本的tcp大字节benchmark,属于bulk data

UDP_STREAM 基本的udp测试

TCP_RR tcp交互响应速率测试,主要用于http长连接(链接不拆除)和针对数据库的访问

UDP_RR 同上,用的udp报文

# netperf -t TCP_CRR -H k-2 -l 10 -- -r 128.1024

MIGRATED TCP Connect/Request/Response TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to k-2 () port 0 AF_INET : demo

Local /Remote

Socket Size  Request  Resp.  Elapsed  Trans.

Send  Recv  Size    Size    Time    Rate

bytes  Bytes  bytes    bytes  secs.    per sec

16384  87380  128      128    10.00    5172.56

16384  87380

上一篇下一篇

猜你喜欢

热点阅读