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工具

  1. 从 COSBench GitHub 网站 下载 COSBench 0.4.2.c4.zip 压缩包,并在服务器上进行解压。

  2. 安装 COSBench 的依赖库,执行如下命令。

  • 对于 centos 系统,执行如下命令安装依赖:

  1. 编辑 cosbench-start.sh 文件,在 Java 启动行添加如下参数,关闭 s3 的 md5 校验功能:

  1. 启动COSBench controller 和 driver:

  • 对于 centos 系统,执行以下命令:

运行测试

  1. 编辑 s3-config-sample.xml 文件并添加任务配置信息,任务配置主要包含如下五个阶段:

    1. init 阶段:根据参数配置的桶名的前缀、后缀和Container数目,创建存储桶。

    2. prepare 阶段:为桶写入后续读取的数据,根据配置指定线程数,上传对应大小和数目的对象。

    3. main 阶段:进行测试的主要阶段,可以指定运行的时长,指定线程数执行对应的读写操作。

    4. cleanup 阶段:这个阶段是进行环境的清理,主要是删除桶中的数据,保证测试后的数据不会保留在集群中

    5. 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

    当前任务的线程数

    示例配置如下:

  2. 运行任务:

  3. 检查任务结果

    通过网址 http://ip:19088/controller/index.html(ip 替换为使用的压测机器 IP)查看执行状态:

  4. 下面展示的是10万个100KB文件高并发读取的读性能测试,包括以下2个阶段:

    1. prepare 阶段:100个 worker 线程,上传 10000 个 100KB 对象。

    2. main 阶段:4个 Driver,每个Driver 128个 worker 线程并发读对象,运行300秒。

    经过以上阶段1和阶段2的性能压测,结果如下:

  5. 执行以下命令,停止测试服务

Last updated