COSBench 性能基准测试
Last updated
Last updated
COSBench 是一款由 Intel 开源,用于对象存储的压测工具。
Alluxio 支持与 Amazon[S3 API (http://docs.aws.amazon.com/AmazonS3/latest/API/Welcome.html)] 基本操作兼容的 RESTful API,可使用该工具进行读写性能压测。
本文档介绍如何通过COSBench来对Alluxio进行端到端测试。
文件大小 | 文件数量 | 每个driver的并发数 | 吞吐量 |
---|---|---|---|
测试结果基于如下配置的 Alluxio 集群,所有服务器实例均在 AWS 上可用:
COSBench 集群: 1个 COSBench Controller 节点和 4个 COSBench Driver 节点
COSBench 实例: c5n.metal: 72内核 + 192GB 内存 + 100Gb网络
Alluxio 集群: 1个 Alluxio Coordinator 节点和4个 Alluxio Worker 节点。
Alluxio Worker 实例: i3en.metal: 96内核 + 768GB 内存 + 100Gb网络 + 8 nvme固态硬盘
AWS ELB 负载均衡器: Elastic Load Balancing
工具推荐运行在 CentOS 7.0 及其以上版本,ubuntu 环境可能存在预期外的问题。
有关其他 Alluxio 相关配置,请参阅 Fio Tests 部分。
可将一个或多个 Alluxio Worker 配置为缓存集群。
需要配置一个负载均衡器将请求均匀发往所有的 Alluxio Worker 节点
确保数据集已从 UFS 完全加载到 Alluxio 缓存中。
从 COSBench GitHub 网站 下载 COSBench 0.4.2.c4.zip 压缩包,并在服务器上进行解压。
安装 COSBench 的依赖库,执行如下命令。
对于 centos 系统,执行如下命令安装依赖:
编辑 cosbench-start.sh
文件,在 Java 启动行添加如下参数,关闭 s3 的 md5 校验功能:
启动COSBench controller 和 driver:
对于 centos 系统,执行以下命令:
编辑 s3-config-sample.xml 文件并添加任务配置信息,任务配置主要包含如下五个阶段:
init 阶段:根据参数配置的桶名的前缀、后缀和Container数目,创建存储桶。
prepare 阶段:为桶写入后续读取的数据,根据配置指定线程数,上传对应大小和数目的对象。
main 阶段:进行测试的主要阶段,可以指定运行的时长,指定线程数执行对应的读写操作。
cleanup 阶段:这个阶段是进行环境的清理,主要是删除桶中的数据,保证测试后的数据不会保留在集群中
dispose 阶段:删除存储桶。
在测试过程中,可以根据实际需要,执行所有的阶段或者只执行其中部分阶段。
注意: 使用使用 挂载表操作时, 无法创建新桶,你应该跳过 init 阶段和 dispose 阶段,并手动创建满足桶名前缀和container命名规则的挂载点进行后续测试。
参数说明:
示例配置如下:
运行任务:
检查任务结果
通过网址 http://ip:19088/controller/index.html(ip 替换为使用的压测机器 IP)查看执行状态:
下面展示的是10万个100KB文件高并发读取的读性能测试,包括以下2个阶段:
prepare 阶段:100个 worker 线程,上传 10000 个 100KB 对象。
main 阶段:4个 Driver,每个Driver 128个 worker 线程并发读对象,运行300秒。
经过以上阶段1和阶段2的性能压测,结果如下:
执行以下命令,停止测试服务
参数 | 描述 |
---|---|
1GB
10000
1
driver1: 604.03 MB/S driver2: 592.85 MB/S driver3: 597.94 MB/S driver4: 612.99 MB/S total: 2407.81 MB/S
1GB
10000
16
driver1: 5.45 GB/S driver2: 5.1 GB/S driver3: 4.69 GB/S driver4: 5.2 GB/S total: 20.44 GB/s
1GB
10000
128
driver1: 9.24 GB/S driver2: 8.59 GB/S driver3: 10.06 GB/S driver4: 9.05 GB/S total: 36.94 GB/s
100KB
10000
1
driver1: 14.61 MB/S - 146.08 op/s driver2: 11.96 MB/S - 119.55 op/s driver3: 11.75 MB/S - 117.46 op/s driver4: 11.94 MB/S - 119.42 op/s total: 50.26 MB/S - 502.51 op/s
100KB
10000
16
driver1: 311.69 MB/S - 3116.87 op/s driver2: 244.72 MB/S - 2447.15 op/s driver3: 286.34 MB/S - 2863.35 op/s driver4: 287.53 MB/S - 2875.26 op/s total: 1130.28 MB/S - 11302.63 op/s
100KB
10000
128
driver1: 1.19 GB/S - 11877.99 op/s driver2: 1.17 GB/S - 11660.19 op/s driver3: 1.16 GB/S - 11569.5 op/s driver4: 1.17 GB/S - 11650.17 op/s total: 4.69 GB/S - 46757.85 op/s
accesskey、secretkey
目前 Alluxio S3 API 不支持access key和secret key。 当向 S3 client 提供access key时,请输入要使用的 Alluxio ACL 用户名。 secret key未使用,因此您可以使用任何虚拟值。
cprefix
存储桶名称前缀,例如 examplebucket
containers
为存储桶名称数值区间,最后的存储桶名称由 cprefix 和 containers 和 csuffix(如果设置了该参数) 组成, 例如:examplebucket1test,examplebucket2test
csuffix
可选,存储桶名称后缀,例如 test
oprefix
对象名称前缀,例如 "testobject", "dir/testobject"
objects
当前任务的对象数目和命名范围,例如 "r(1,10000)", "r(200,500)"
osuffix
对象名称后缀,例如 ".jpg", ".csv"
radio
当前任务的读写比例
runtime
压测运行时间
workers
当前任务的线程数