COSBench 性能基准测试
COSBench 概览
COSBench 是一款由 Intel 开源,用于对象存储的压测工具。
Alluxio 支持与 Amazon[S3 API (http://docs.aws.amazon.com/AmazonS3/latest/API/Welcome.html)] 基本操作兼容的 RESTful API,可使用该工具进行读写性能压测。
本文档介绍如何通过COSBench来对Alluxio进行端到端测试。
测试结果摘要
文件大小 | 文件数量 | 每个driver的并发数 | 吞吐量 |
---|---|---|---|
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 |
测试结果基于如下配置的 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
有关其他 Alluxio 相关配置,请参阅 Fio Tests 部分。
可将一个或多个 Alluxio Worker 配置为缓存集群。
需要配置一个负载均衡器将请求均匀发往所有的 Alluxio Worker 节点
确保数据集已从 UFS 完全加载到 Alluxio 缓存中。
准备 COSBench工具
从 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命名规则的挂载点进行后续测试。
参数说明:
参数 描述 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
当前任务的线程数
示例配置如下:
运行任务:
检查任务结果
通过网址 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的性能压测,结果如下:
执行以下命令,停止测试服务
Last updated