描述
COSBench是Intel团队基于java开发,用于存储的测试工具,全称是Cloud object Storage Bench;
COSBench分控制台和发起请求的driver,driver可以分布式部署,可以支持swift、s3、Openstack等接口;
安装
下载:https://github.com/intel-cloud/cosbench
解压到任意目录,然后进入到对应目录0.4.2.c4,有COSBenchUserGuide.pdf使用手册;
使用
启动
压测时,需要一个controller、一个或者多个driver。
(1)启动controller
下面以启动两个driver为例,看controller的配置文件如下:
[root@node2 0.4.2.c4]# vim conf/controller.conf
[controller]
drivers = 2
log_level = INFO
log_file = log/system.log
archive_dir = archive
[driver1]
name = driver1
url = http://192.168.231.212:18088/driver
[driver2]
name = driver2
url = http://192.168.231.213:18088/driver
如果要增加driver,就按照上述格式补充,上图表示该controller管理两个driver;
然后执行 sh start-controller.sh 启动controller即可。
(2)启动driver
在上述controller指定的driver对应的机器上,执行sh start-driver.sh即可,其他不需要改变;
# 登录控制界面:
在浏览器输入:
http://127.0.0.1:19088/controller/index.html
注意127.0.0.1替换成所在的controller ip;
xml测试配置
按照上述步骤启动controller和driver之后,只是开启了客户端服务,还没有往存储系统中做读写数据等操作;
点击“submit new workloads”,从本地选择xml测试配置文件之后,才开始测试;下面主要简要描述配置文件的格式和写法(更多细节请参考用户手册),如下是一份xml模板:
<?xml version="1.0" encoding="UTF-8"?>
<workload name="write-730KB" description="730KB pure writes">
<storage type="s3" config="accesskey=LK8OVJTCFHXPT9LZDX53;secretkey=TyRbgZKBFqTGlu2bo8Me2AXgT9Bl3PGfBxgekPbH;endpoint=http://192.168.242.211:7480" />
<workflow>
<!--注释内容########################
<workstage name="init">
<work name="init" type="init" workers="1" interval="10"
division="container" runtime="0" rampup="0" rampdown="0"
config="cprefix=fxl2;containers=r(1,1)">
<auth type="none" config=""/>
<storage type="s3" config="accesskey=LK8OVJTCFHXPT9LZDX53;secretkey=TyRbgZKBFqTGlu2bo8Me2AXgT9Bl3PGfBxgekPbH;endpoint=http://192.168.242.211:7480"/>
<operation type="init" ratio="100" division="container"
config="cprefix=fxl2;containers=r(1,1);objects=r(0,0);sizes=c(0)B;" id="none"/>
</work>
</workstage>
########################-->
<workstage name="WriteJob">
<work name="211" type="write" workers="50" interval="10"
division="object" runtime="1800" rampup="0" rampdown="0"
config="cprefix=fxl3;oprefix=bb;containers=r(1,1);objects=r(1,1000000);sizes=c(730)KB">
<auth type="none" config=""/>
<storage type="s3" config="accesskey=LK8OVJTCFHXPT9LZDX53;secretkey=TyRbgZKBFqTGlu2bo8Me2AXgT9Bl3PGfBxgekPbH;endpoint=http://192.168.242.211:7480"/>
<operation type="write" ratio="100" division="object"
config="cprefix=fxl3;oprefix=bb;containers=r(1,1);objects=r(1,1000000);sizes=c(730)KB;createContainer=false;"
id="none" />
</work>
<work name="212" type="write" workers="50" interval="10"
division="object" runtime="1800" rampup="0" rampdown="0"
config="cprefix=fxl3;oprefix=bb;containers=r(1,1);objects=r(1000001,2000000);sizes=c(730)KB">
<auth type="none" config=""/>
<storage type="s3" config="accesskey=LK8OVJTCFHXPT9LZDX53;secretkey=TyRbgZKBFqTGlu2bo8Me2AXgT9Bl3PGfBxgekPbH;endpoint=http://192.168.242.212:7480"/>
<operation type="write" ratio="100" division="object"
config="cprefix=fxl3;oprefix=bb;containers=r(1,1);objects=r(1000001,2000000);sizes=c(730)KB;createContainer=false;"
id="none" />
</work>
</workstage>
<!--注释内容########################
<workstage name="cleanup" closuredelay="0" config="">
<work name="cleanup" type="cleanup" workers="2" interval="10"
division="object" runtime="0" rampup="0" rampdown="0"
config="cprefix=fxl;containers=r(1,200);objects=r(1,1000);">
<auth type="none" config=""/>
<storage type="s3" config="accesskey=LK8OVJTCFHXPT9LZDX53;secretkey=TyRbgZKBFqTGlu2bo8Me2AXgT9Bl3PGfBxgekPbH;endpoint=http://192.168.242.211:7480"/>
<operation type="cleanup" ratio="100" division="object"
config="cprefix=fxl;containers=r(1,200);objects=r(1,1000);deleteContainer=false;" id="none"/>
</work>
</workstage>
<workstage name="dispose" closuredelay="0" config="">
<work name="dispose" type="dispose" workers="2" interval="10"
division="container" runtime="0" rampup="0" rampdown="0"
config="cprefix=mycontainers;containers=r(1,200);">
<auth type="none" config=""/>
<storage type="s3" config="accesskey=LK8OVJTCFHXPT9LZDX53;secretkey=TyRbgZKBFqTGlu2bo8Me2AXgT9Bl3PGfBxgekPbH;endpoint=http://192.168.242.211:7480"/>
<operation type="dispose" ratio="100"
division="container"
config="cprefix=mycontainers;containers=r(1,200);objects=r(0,0);sizes=c(0)B;" id="none"/>
</work>
</workstage>
########################-->
</workflow>
</workload>
基本格式如下:
每个workflow可以多个workstage,每个workstage下可以有多个work;
每钟workstage对应一个工作类别,有work下的type字段标识,总共有init(创建bucket),write(创建object写数据)、cleanup(删除object)、dispose(删除bucket)。
work下有很多其他配置,具体可以参考用户手册;
<workflow>
<workstage name="init">
<work>name="cleanup" type="cleanup"</work>
<work>name="cleanup" type="cleanup"</work>
</workstage>
<workstage name="WriteJob">
<work>name="write" type="write"</work>
</workstage>
<workstage name="cleanup">
<work>name="cleanup" type="cleanup"</work>
</workstage>
<workstage name="dispose">
<work>name="dispose" type="dispose"</work>
</workstage>
</workflow>