主流benchmark工具使用汇总

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,053评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,527评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,779评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,685评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,699评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,609评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,989评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,654评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,890评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,634评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,716评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,394评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,976评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,950评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,191评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,849评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,458评论 2 342

推荐阅读更多精彩内容