Cosbench - Cloud Object Storage Beachmark,是Intel开发的有的一个对象存储基准性能测试工具,支持open stack s3。
组件:driver cosbench负载生成器,主要负责工作负载生成,发布针对云对象存储的操作和收集性能统计信息,可以通过http://{driver-ip}:18088/controller地址访问
Controller控制器,主要负责协调负载生成器共同执行工作负载,收集来自负载生成器的基准性能测试结果。可以通过http://{controller-ip}:19088/controller地址访问
注:controller和driver角色可以部署在同一个节点上
安装部署
部署jdk环境
安装nmap-ncat,controller和driver之间通信需要依赖nc环境
yum -y install nmap-ncat
部署cosbench环境
关闭防火墙
开放指定端口,driver角色需要使用到18089及18088,controller角色需要使用到19089及19088端口
关闭MD5检验功能
修该conbench-start.sh配置文件,在java后添加参数:
-Dcom.amazonaws.services.s3.disableGetObjectMD5Validation=true
Cosbench工具使用按照流程可分为以下几个步骤:参数配置-服务启动-提交测试-分析结果
节点主机名 |
节点IP地址 |
Cosbench角色 |
100.100.228.13 |
Controller、driver |
|
100.100.228.12 |
Driver |
|
100.100.228.14 |
Driver |
Controller在初始化时读取conf/controller.conf配置文件启动控制器服务
[controller]
默认为1,表示可以同时执行的工作负载数量
Drivers
默认值为1,表示此controller控制的driver数量
Log_level
默认值为INFO,可选值为TRACE、DEBUG、INFO、WARN、ERROR,表示日志打印等级
Archive
表示工作负载结果存放位置
提交测试
使用命令行接口,在controller节点cosbench目录下,使用sh cli.sh submit {test.xml}
命令提交测试
2. 参数说明
workload name: 测试时显示的任务名称,这里可以自行定义
description : 描述信息,这里可以自己定义,示例写的是(10并发写100个4kb文件)
storage type: 存储类型,这里配置为s3即可
config: 连接信息配置,accesskey和secretkey填写使用用户的key即可;proxyhost和proxyport填写http代理主机的IP和端口,有需要的话填写,没有可以删掉;endpoint填写rgw的访问地址
workstage name: 执行的任务事项,cosbench是分阶段按顺序执行
init: 初始化阶段,主要是进行bucket的创建,
workers: 表示执行该阶段的时候开启多少个工作线程,创建bucket通过不会计算为性能,所以单线程也可以;
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: 表示运行的时间,时间默认为秒(和totalOps可以联合或者单独使用)
totalOps: 表示执行多少次操作,比如当该值为10,object=(1,00),那么本来是要创建100个对象,加上totalOps后,就要循环从1-100创建10次,总共创建1000个文件,但是实际上创建出的文件数还是只有100个,像覆盖性创建一样
operation type: 操作类型,可以是read、write、delete等。
ratio: 表示该操作所占有操作的比例,例如上面的例子中测试读写read的比例为80%,write的比例为20%;
config: 配置bucket的前缀后缀信息。注意write的sizes可以根据实际测试进行修改
cleanup: 环境清理阶段,主要是删除bucket中的数据,保证测试后的数据不会保留在集群中
dispose: 这个阶段是删除bucket
例如4k write一亿对象