> For the complete documentation index, see [llms.txt](https://documentation.alluxio.io/ee-ai-cn/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://documentation.alluxio.io/ee-ai-cn/benchmark/s3-api.md).

# S3 API 基准测试

## 概述

摘要

* 三种基准测试工具，各有一页文档：[**COSBench**](/ee-ai-cn/benchmark/s3-api/cosbench.md)（复杂混合工作负载）、[**Warp**](/ee-ai-cn/benchmark/s3-api/warp.md)（快速的 bucket 级读取）、[**httpbench**](/ee-ai-cn/benchmark/s3-api/httpbench.md)（约 50 行的 Go 小工具，专门用于 redirect 模式集群的单 worker 测量）。
* 三组不同硬件的参考性能基线（AWS 4 节点 COSBench、OCI 6 节点 Warp、AWS 6 节点 httpbench）。
* **对象大小很关键。** 对于 1 GiB 以上的对象（典型的 AI 模型分片），Alluxio 的 HTTP 307 重定向在 keep-alive 热连接上的开销几乎为 0%。对于小对象（<100 KiB），握手开销占主导，吞吐量最多可损失一半——此时两种模式差距明显。
* 关键的潜在性能瓶颈：网络带宽、TCP 连接复用、HTTP 重定向开销（仅小对象）、内核调优。

有关 Alluxio S3 API 的工作原理（请求流程、一致性哈希、重定向），请参阅 [部署模式](/ee-ai-cn/data-access/s3-api.md#bu-shu-mo-shi)。

## 基准测试工具选型

|                   | [COSBench](/ee-ai-cn/benchmark/s3-api/cosbench.md)        | [Warp](/ee-ai-cn/benchmark/s3-api/warp.md) | [httpbench](/ee-ai-cn/benchmark/s3-api/httpbench.md) |
| ----------------- | --------------------------------------------------------- | ------------------------------------------ | ---------------------------------------------------- |
| **最适合**           | 复杂的多阶段工作负载                                                | 快速的 bucket 级单操作测试                          | redirect 模式集群下的单 worker 吞吐测量                         |
| **部署**            | Controller + Driver 节点                                    | 单一可执行文件                                    | 约 50 行 Go，在客户端上编译                                    |
| **工作负载定义**        | XML 配置文件                                                  | CLI 参数                                     | 命令行 URL 列表                                           |
| **是否跟随 HTTP 307** | 跟随（via SDK）——需要 `alluxio.worker.s3.redirect.enabled=true` | **不跟随** —— 与 redirect 模式不兼容                | 跟随（Go 默认）——两种模式都能用                                   |
| **多客户端协调**        | 内置 Driver 模型                                              | `--syncstart`                              | ssh + 时间戳协调                                          |
| **结果展示**          | Web 仪表盘                                                   | 终端输出                                       | 终端输出                                                 |

**选型准则**：

* **集群启用 redirect，需要单 worker 隔离**（比如单独 CPU profiling 某个 worker，或测量单张 NIC）：用 [**httpbench**](/ee-ai-cn/benchmark/s3-api/httpbench.md)。
* **redirect 关闭，想要快速的 bucket 级数字**：用 [**Warp**](/ee-ai-cn/benchmark/s3-api/warp.md)。
* **读写混合、多 Driver、长时间运行或复杂分阶段工作负载**：用 [**COSBench**](/ee-ai-cn/benchmark/s3-api/cosbench.md)。

## 参考性能基线

下方所有吞吐量数据均假设数据**完全缓存在 Alluxio 中**。如果数据从底层 UFS 提供服务，吞吐量将显著降低。测试前请使用 `bin/alluxio fs check-cached /path` 进行验证。

### 4 节点 COSBench（AWS）

以下结果是使用一个 4 驱动程序的 COSBench 集群测试一个 4 工作节点的 Alluxio 集群得出的。

| 组件                  | 配置                                  |
| ------------------- | ----------------------------------- |
| COSBench Controller | 1 × `c5n.metal`                     |
| COSBench Drivers    | 4 × `c5n.metal`                     |
| Alluxio Coordinator | 1 个节点                               |
| Alluxio Workers     | 4 × `i3en.metal`（每个节点 8 个 NVMe SSD） |
| 负载均衡器               | 跨 4 个工作节点的 AWS ELB                  |

**大文件读取吞吐量（1 GB 文件）** — 受带宽限制，随并发数增加而扩展直到网络饱和：

| 每个驱动程序的并发数 | 总吞吐量       |
| ---------- | ---------- |
| 1 个线程      | 2.35 GB/s  |
| 16 个线程     | 20.44 GB/s |
| 128 个线程    | 36.94 GB/s |

**小文件读取 IOPS（100 KB 文件）** — 受 IOPS 限制，随并发数增加而扩展直到 CPU 饱和：

| 每个驱动程序的并发数 | 总吞吐量       | 总操作数/秒      |
| ---------- | ---------- | ----------- |
| 1 个线程      | 50.26 MB/s | 502 op/s    |
| 16 个线程     | 1.10 GB/s  | 11,302 op/s |
| 128 个线程    | 4.69 GB/s  | 46,757 op/s |

### 6 节点 Warp（OCI）

在 OCI `BM.DenseIO.E5.128` 节点（100 Gbps 网络，12 个 NVMe 组成 RAID 0）上的 Warp GET 测试中，Alluxio 在单节点上实现了 11.2 GiB/s 的吞吐量（平均延迟 0.3 ms，P99 延迟 0.4 ms），在 6 节点上实现了 33.3 GiB/s（平均延迟 0.6 ms，P99 延迟 0.9 ms）。请注意，Warp 不跟随指向非 AWS endpoint 的 HTTP 307 重定向，因此以上数据对应 [Worker 直连模式](/ee-ai-cn/data-access/s3-api.md#worker-zhi-lian-mo-shi)（经负载均衡器,并设置 `alluxio.worker.s3.redirect.enabled=false`）。完整结果请参阅 [Alluxio on OCI](https://blogs.oracle.com/cloud-infrastructure/post/alluxio-on-oci-submillisecond-latency-for-ai)。

### 6 节点 httpbench（AWS）

在 6 × `c5n.18xlarge` worker（72 vCPU、192 GiB 内存、100 Gbps 网卡、80 GiB tmpfs page store）+ 6 × `c5n.18xlarge` 客户端上运行，服务 82 个 safetensor 文件（共约 137 GB，每个 1–3 GiB），数据已在 Alluxio 中完全缓存。工具：[httpbench](/ee-ai-cn/benchmark/s3-api/httpbench.md)。

**单 worker，单客户端（1:1），1–3 GiB 对象**：

| 并发     | 吞吐量                        | 相对 iperf3 上限 |
| ------ | -------------------------- | ------------ |
| 1      | 0.62 GB/s (5.0 Gbps)       | AWS ENA 单流上限 |
| 16     | 8.66 GB/s (69.3 Gbps)      | 87%          |
| **32** | **11.35 GB/s (90.8 Gbps)** | **95%**      |
| 64     | 11.15 GB/s (89.2 Gbps)     | 已饱和          |
| 128    | 10.46 GB/s (83.7 Gbps)     | 连接数过多带来的开销   |

本地读取时，单个 worker 的 S3 API 能为单个客户端提供接近 TCP 线速（iperf3）95% 的吞吐。

**6 客户端 × 6 worker 成对聚合（每客户端 C=32，30s）**：

| 指标                                     | 数值                        |
| -------------------------------------- | ------------------------- |
| 每对平均                                   | 11.43 GB/s (91.4 Gbps)    |
| **聚合吞吐**                               | **68.55 GB/s (548 Gbps)** |
| Worker CPU 平均（72 vCPU，`mpstat -P ALL`） | 4.1% ≈ **3 核平均**          |
| Worker CPU 峰值                          | 7.2–8.2% ≈ **5–6 核峰值**    |

吞吐从每对 11.4 GB/s 到 6 对 68.5 GB/s 近线性扩展。聚合期间 worker CPU 几乎空闲——对于大对象读取，Alluxio 是 NIC-bound 而非 CPU-bound。

### 网络上限（iperf3 基线）

同一测试环境下，客户端与 worker 之间的裸 TCP 吞吐（供对照参考）：

| TCP 流数 | 吞吐量                                           |
| ------ | --------------------------------------------- |
| 1      | 4.97 Gbps (0.62 GB/s) — AWS ENA 单流上限          |
| 8      | 37.9 Gbps                                     |
| 32     | **95.6 Gbps (11.95 GB/s)** — 接近 100 Gbps 网卡线速 |

在该硬件下，任何单客户端的 S3 API 吞吐超过约 95 Gbps 都不可能，无论集群规模——NIC 就是天花板。解读 S3 API 数据前，先用 `iperf3 -c <worker> -P 32` 建立此上限。

## 307 重定向开销：大对象 vs 小对象

[S3 API 文档](/ee-ai-cn/data-access/s3-api.md#bu-shu-mo-shi)里"Worker 直连模式 ≈ Worker 重定向模式（redirect）吞吐的 50%"这条经验，**仅适用于小对象工作负载**——那里每个请求都被 307 握手开销主导。对于大对象顺序读（1 GiB+ 分片，典型 AI 模型加载场景），握手只发生一次然后被摊薄到接近于零——在我们的测试里，Worker 重定向模式和 Worker 直连模式的吞吐相差约 2% 以内（1–3 GiB 对象，C=64 下 Worker 直连模式 11.28 GB/s vs Worker 重定向模式 11.02 GB/s；C=128 下 Worker 直连模式 10.80 GB/s vs Worker 重定向模式 10.89 GB/s）。

经验法则：如果 `平均对象字节数 / 网卡每秒字节数` 远大于 307 重定向 RTT（同可用区通常约 1 ms），重定向开销就可以忽略不计。100 Gbps 网卡下，这意味着：100 MB 以上对象重定向开销基本为 0，1 GB+ 对象开销可忽略不计（<2%）；对于小于 1 MB 的对象，握手占主导，Worker 直连模式吞吐会回落到 Worker 重定向模式的约 50%。

## 性能调优与故障排除

有关建议的 Alluxio 配置参数和 Linux 内核调优，请参阅 [S3 API — 性能](/ee-ai-cn/data-access/s3-api.md#xing-neng)。各个工具特有的故障排查请见每个工具自己的页面。

跨工具通用症状：

* **小对象吞吐比预期低约 50%** — 对于 <100 KiB 的小对象工作负载，请检查重定向是否被禁用（`alluxio.worker.s3.redirect.enabled=false`），此时跨工作节点的读取会通过中间节点代理，而不是由数据所在节点直接提供服务。若要获得完整吞吐量，请使用 Worker 重定向模式：将 `alluxio.worker.s3.redirect.enabled=true` 与支持重定向的客户端配合使用。参见[部署模式](/ee-ai-cn/data-access/s3-api.md#bu-shu-mo-shi)。对于大对象（1 GiB+），Worker 重定向模式与 Worker 直连模式吞吐几乎没有差距——重定向开销可以忽略，见 [307 重定向开销：大对象 vs 小对象](#id-307-zhong-ding-xiang-kai-xiao-da-dui-xiang-vs-xiao-dui-xiang)。
* **吞吐量远低于基线** — 最可能的原因是数据未完全缓存。在测试前使用 `bin/alluxio fs check-cached` 验证文件已缓存在 Alluxio 中。
* **高并发下吞吐量仍然很低** — 网络瓶颈或负载均衡器分配不均。验证 100 Gbps 连接、同可用区部署，以及负载均衡器是否将请求均匀分配到所有 Alluxio 工作节点。测试前先用 `iperf3` 建立 NIC 上限——参见[网络上限（iperf3 基线）](#wang-luo-shang-xian-iperf3-ji-xian)。
* **增加并发数后无法扩展** — CPU 或连接池瓶颈。检查工作节点 CPU 使用率，确保已启用 `alluxio.worker.s3.connection.keep.alive.enabled`。
* **尾部延迟高** — TCP 端口耗尽。应用[内核调优](/ee-ai-cn/data-access/s3-api.md#linux-nei-he-can-shu)参数（`tcp_tw_reuse`、`tcp_fin_timeout`）。
* **吞吐量在较低水平停滞** — 在 AI-3.8-15.1.15 之前，`alluxio.worker.s3.redirect.health.check.enabled` 会产生逐请求的健康检查 RPC，基准测试时禁用它可消除该开销。从 AI-3.8-15.1.15 起该开关不再产生任何逐请求 RPC，应保持启用。
* **多次运行结果不一致或波动较大** — 数据未完全缓存，或存在环境干扰（跨可用区流量、共享网络）。预加载数据后在专用的同可用区环境中重新运行。

## 另请参阅

* [COSBench 基准测试](/ee-ai-cn/benchmark/s3-api/cosbench.md) — 复杂的多阶段工作负载
* [Warp 基准测试](/ee-ai-cn/benchmark/s3-api/warp.md) — 单二进制快速测试，仅限 redirect 关闭的集群
* [httpbench 基准测试](/ee-ai-cn/benchmark/s3-api/httpbench.md) — 单 worker、redirect 感知
* [S3 API 设置与配置](/ee-ai-cn/data-access/s3-api.md) — 部署模式、端点设置、负载均衡器配置和客户端示例
* [S3 UFS 集成](/ee-ai-cn/ufs/s3.md) — 分片上传调优、高并发设置和 S3 区域配置
