This is an automated email from the ASF dual-hosted git repository.
github-merge-queue[bot] pushed a commit to branch dev
in repository https://gitbox.apache.org/repos/asf/seatunnel.git
The following commit(s) were added to refs/heads/dev by this push:
new 9ebb27e8f9 [Docs] Add JMH and Zeta benchmark architecture (#12062)
9ebb27e8f9 is described below
commit 9ebb27e8f92059dee76d71029adbfbaa1c099285
Author: zhiweiniu <[email protected]>
AuthorDate: Thu Sep 3 14:31:56 2026 +0000
[Docs] Add JMH and Zeta benchmark architecture (#12062)
---
docs/en/engines/zeta/benchmark.md | 44 +++++++++++++++++++++++++++------------
docs/zh/engines/zeta/benchmark.md | 41 +++++++++++++++++++++++++-----------
2 files changed, 60 insertions(+), 25 deletions(-)
diff --git a/docs/en/engines/zeta/benchmark.md
b/docs/en/engines/zeta/benchmark.md
index d2b77ffa2a..27ff7193bc 100644
--- a/docs/en/engines/zeta/benchmark.md
+++ b/docs/en/engines/zeta/benchmark.md
@@ -32,25 +32,43 @@ The `seatunnel-benchmarks` module provides these types of
tests:
- `IMapWalStorageBenchmark` measures file-backed IMap WAL append cost, byte
growth, and recovery as
live-key count and per-key history depth change independently.
-For `SeaTunnelPipelineBenchmark`, the MiniCluster starts during JMH Trial
setup and is outside the
-measurement. Job submission, scheduling, Source, Transform, Sink, and job
completion are inside the
-JMH measurement.
+For benchmarks that require the Zeta runtime, JMH controls the forks, warmup,
measurement, and Trial
+lifecycle. The Environment Context creates the Client and starts embedded Zeta
during Trial setup.
+Setup and teardown are outside the timing; only operations performed by the
`@Benchmark` method are
+measured.
```mermaid
%%{init: {"theme": "base", "themeVariables": {"background": "#0f1d33",
"primaryColor": "#0c2530", "primaryBorderColor": "#2dd4bf", "primaryTextColor":
"#f8fbff", "actorBkg": "#0c2530", "actorBorder": "#2dd4bf", "actorTextColor":
"#f8fbff", "activationBkgColor": "#1f1a34", "activationBorderColor": "#8d7cf6",
"noteBkgColor": "#1f1a34", "noteBorderColor": "#8d7cf6", "noteTextColor":
"#f8fbff", "signalColor": "#5db8e2", "signalTextColor": "#f8fbff",
"labelBoxBkgColor": "#0f1d33", "labelBoxBo [...]
flowchart LR
- Setup["Start MiniCluster<br/>outside JMH timing"] -.-> Submit["Submit
job<br/>start timing"]
- Submit --> Source["BenchmarkSource"]
- Source --> Transform["BenchmarkTransform<br/>optional"]
- Transform --> Sink["BenchmarkSink"]
- Sink --> Finish["Job completes<br/>stop timing"]
- Source -. "scheduled time" .-> Sink
- Sink -.-> Result["Pipeline JSON<br/>throughput and latency"]
+ subgraph JMH["JMH"]
+ direction LR
+ Runner["Benchmark Runner<br/>Fork · Warmup · Measurement"]
+ Context["Environment Context<br/>Trial Setup / TearDown"]
+ Runner --> Context
+ end
+
+ subgraph Zeta["Zeta"]
+ direction LR
+ Client["SeaTunnel Client"]
+ Cluster["Embedded Zeta Cluster<br/>single-node or dedicated Master +
Worker"]
+ Client --> Cluster
+ end
+
+ Context -->|"create Client and run benchmark"| Client
+ Context -. "start / stop at Trial scope" .-> Cluster
+
+ classDef runner fill:#1f1a34,stroke:#8d7cf6,stroke-width:2px,color:#f8fbff
+ classDef runtime fill:#0c2530,stroke:#2dd4bf,stroke-width:2px,color:#f8fbff
+ class Runner,Context runner
+ class Client,Cluster runtime
+ style JMH fill:#15142a,stroke:#8d7cf6,stroke-width:1.5px,color:#f8fbff
+ style Zeta fill:#081d24,stroke:#2dd4bf,stroke-width:1.5px,color:#f8fbff
```
-The Source follows an absolute open-loop schedule. Each row carries its
planned generation time. If
-Zeta falls behind, planned time continues to advance, so queueing and backlog
remain visible in
-event-time latency instead of being hidden while the Source waits for the
engine.
+In `SeaTunnelPipelineBenchmark`, the Source follows an absolute open-loop
schedule. Each row carries
+its planned generation time. If Zeta falls behind, planned time continues to
advance, so queueing
+and backlog remain visible in event-time latency instead of being hidden while
the Source waits for
+the engine.
### Test Scope
diff --git a/docs/zh/engines/zeta/benchmark.md
b/docs/zh/engines/zeta/benchmark.md
index 468ae2c7f2..9338be814e 100644
--- a/docs/zh/engines/zeta/benchmark.md
+++ b/docs/zh/engines/zeta/benchmark.md
@@ -28,24 +28,41 @@ title: Zeta 基准测试
- `IMapWalStorageBenchmark`:分别改变有效 Key 数和单 Key 历史深度,测量文件型 IMap WAL
追加耗时、字节增长和恢复性能。
-对于 `SeaTunnelPipelineBenchmark`,MiniCluster 在每个 JMH Trial 的 Setup 阶段启动,不计入
-测量。作业提交、调度、Source、Transform、Sink 和作业完成都计入 JMH 测量。
+对于需要 Zeta 运行时的测试,JMH 负责 Fork、预热、测量和 Trial 生命周期;Environment
+Context 在 Trial Setup 阶段创建 Client 并启动嵌入式 Zeta。Setup 和 TearDown 不计时,只有
+`@Benchmark` 方法执行的操作计入 JMH 测量。
```mermaid
%%{init: {"theme": "base", "themeVariables": {"background": "#0f1d33",
"primaryColor": "#0c2530", "primaryBorderColor": "#2dd4bf", "primaryTextColor":
"#f8fbff", "actorBkg": "#0c2530", "actorBorder": "#2dd4bf", "actorTextColor":
"#f8fbff", "activationBkgColor": "#1f1a34", "activationBorderColor": "#8d7cf6",
"noteBkgColor": "#1f1a34", "noteBorderColor": "#8d7cf6", "noteTextColor":
"#f8fbff", "signalColor": "#5db8e2", "signalTextColor": "#f8fbff",
"labelBoxBkgColor": "#0f1d33", "labelBoxBo [...]
flowchart LR
- Setup["启动 MiniCluster<br/>不计入 JMH"] -.-> Submit["提交作业<br/>开始计时"]
- Submit --> Source["BenchmarkSource"]
- Source --> Transform["BenchmarkTransform<br/>可选"]
- Transform --> Sink["BenchmarkSink"]
- Sink --> Finish["作业完成<br/>停止计时"]
- Source -. "计划生成时间" .-> Sink
- Sink -.-> Result["Pipeline JSON<br/>吞吐与延迟"]
+ subgraph JMH["JMH"]
+ direction LR
+ Runner["Benchmark Runner<br/>Fork · 预热 · 测量"]
+ Context["Environment Context<br/>Trial Setup / TearDown"]
+ Runner --> Context
+ end
+
+ subgraph Zeta["Zeta"]
+ direction LR
+ Client["SeaTunnel Client"]
+ Cluster["嵌入式 Zeta Cluster<br/>单节点或独立 Master + Worker"]
+ Client --> Cluster
+ end
+
+ Context -->|"创建 Client 并执行测试"| Client
+ Context -. "Trial 级启动 / 停止" .-> Cluster
+
+ classDef runner fill:#1f1a34,stroke:#8d7cf6,stroke-width:2px,color:#f8fbff
+ classDef runtime fill:#0c2530,stroke:#2dd4bf,stroke-width:2px,color:#f8fbff
+ class Runner,Context runner
+ class Client,Cluster runtime
+ style JMH fill:#15142a,stroke:#8d7cf6,stroke-width:1.5px,color:#f8fbff
+ style Zeta fill:#081d24,stroke:#2dd4bf,stroke-width:1.5px,color:#f8fbff
```
-Source 使用基于绝对时间的开环调度。每条记录都携带计划生成时间;当 Zeta 跟不上时,计划
-时间仍持续向前推进,因此排队和 backlog 会体现在 event-time latency 中,不会因 Source
-等待引擎而被隐藏。
+在 `SeaTunnelPipelineBenchmark` 中,Source 使用基于绝对时间的开环调度。每条记录都携带
+计划生成时间;当 Zeta 跟不上时,计划时间仍持续向前推进,因此排队和 backlog 会体现在
+event-time latency 中,不会因 Source 等待引擎而被隐藏。
### 测试范围