COSBench 是一个用于测试对象存储系统的分布式基准测试工具。主要由两个组件组成:
-
Driver(Load Generator)
负责生成工作负载,向目标云对象存储发出操作;性能统计,可通过 http://:18088/driver/index.html 访问 -
Controller
负责协调drivers集体执行工作,收集和汇总聚合来自driver实例的运行时状态或基准测试结果,可通过 http://:19088/controller/index.html访问
两个组件可以混合部署在一个节点上,也可以分开来部署。
启动和部署
启动执行 ./start-all.sh 脚本
启动后,可通过执行 sh cli.sh info
来查看启动结果:
停止执行 ./stop-all.sh 脚本。
driver 可以部署单个,也可以部署多个。如果需要部署多个,那么需要修改 conf/controller.conf 配置文件:
[controller]
drivers = 3
log_level = INFO
log_file = log/system.log
archive_dir = archive
[driver1]
name = driver1
url = http://192.168.1.51:18088/driver
[driver2]
name = driver2
url = http://192.168.1.51:18188/driver
[driver3]
name = driver3
url = http://192.168.1.51:18288/driver
日志在可以查看。
测试模板文件介绍
<?xml version="1.0" encoding="UTF-8" ?>
<workload name="s3-test1" description="10-100-4kb-test">
<storage type="s3" config="accesskey=123;secretkey=123;endpoint=http://192.168.1.51:7480" />
<workflow>
<workstage name="init">
<work type="init" workers="1" config="cprefix=cosbench;containers=r(1,1)" />
</workstage>
<workstage name="prepare">
<work type="prepare" workers="1" config="cprefix=cosbench;containers=r(1,1);objects=r(1,100);sizes=c(4)KB" />
</workstage>
<workstage name="main">
<work name="main" workers="8" runtime="30">
<operation type="read" ratio="80" config="cprefix=cosbench;containers=u(1,1);objects=u(1,100)" />
<operation type="write" ratio="20" config="cprefix=cosbench;containers=u(1,1);objects=u(100,200);sizes=c(4)KB" />
</work>
</workstage>
<workstage name="cleanup">
<work type="cleanup" workers="1" config="cprefix=cosbench;containers=r(1,1);objects=r(1,200)" />
</workstage>
<workstage name="dispose">
<work type="dispose" workers="1" config="cprefix=cosbench;containers=r(1,1)" />
</workstage>
</workflow>
</workload>
参数说明:
-
workload name: 任务名称,这里可以自行定义
-
description : 描述信息,这里可以自己定义,示例写的是(10并发写100个4kb文件)
-
storage type: 存储类型,这里配置为s3即可,config: 连接信息配置,accesskey和secretkey填写使用用户的key,endpoint填写rgw的访问地址
-
workstage name: 执行的任务事项,cosbench是分阶段按顺序执行
-
init: 初始化阶段,主要是进行bucket的创建。
- workers: 表示执行该阶段的时候开启多少个工作线程。
- config: 配置的是存储桶bucket的名称前缀。
- containers: 表示后缀,上例中将会创建以s3testqwer为前缀,后缀分别为1和2的bucket。
-
prepare: 初始化阶段,配置为bucket写入的数据,workers和config以及containers与init阶段相同
- object: 表示一轮写入多少个对象,以及object的大小,示例中的objects=r(1,10);sizes=c(64)KB"代表写入1到10个大小为64KB的对象
-
-
main阶段: 进行测试的阶段:
- workers: 开启多少线程数去执行操作。
- runtime: 表示运行的时间,时间默认为秒。
- operation type: 操作类型,可以是read、write、delete等。
- ratio: 表示该操作所占有操作的比例,例如上面的例子中测试读写read的比例为80%,write的比例为20%。
- config: 配置bucket的前缀后缀信息。
-
cleanup: 环境清理阶段,主要是删除bucket中的对象。
-
dispose: 这个阶段是删除bucket。
执行:
# sh cli.sh submit conf/s3-config-test.xml
查看当前执行的任务:
#
网友评论