Skip to content

Add the TC-1 ingestion-throughput benchmark for the Table Mode write path - #120

Open
PDGGK wants to merge 1 commit into
apache:masterfrom
PDGGK:feature/wk6-ingestion-benchmark
Open

Add the TC-1 ingestion-throughput benchmark for the Table Mode write path#120
PDGGK wants to merge 1 commit into
apache:masterfrom
PDGGK:feature/wk6-ingestion-benchmark

Conversation

@PDGGK

@PDGGK PDGGK commented Aug 3, 2026

Copy link
Copy Markdown
Contributor

Adds the TC-1 ingestion-throughput benchmark for the IoTDB Table Mode write path, together with the case definition and the measured result.

What it does

IoTDBTableIngestionBenchmarkIT drives the real save path — bounded queue, single flush worker, multi-row Tablet insert — against the same apache/iotdb:2.0.8-standalone Testcontainer the functional integration tests use, then reports records/sec, error rate and writer statistics.

It asserts a deliberately conservative floor of 1,000 rows/sec plus strict correctness: zero failures, zero rejects, flushed equal to rows written, and sampled rows readable back from IoTDB. The job is to catch a gross throughput regression and to prove real end-to-end ingestion — not to certify a headline number. It carries @Tag("benchmark") and is not part of the default test run.

On the number, and what it is not

Two back-to-back runs on this branch measured 54,292 and 61,936 rows/sec with a zero error rate; docs/benchmarks/report.md anchors on the conservative figure.

The report is explicit that this is not a pass of the sustained full-profile target, and records why:

  • 50 saver threads drive only 50 distinct devices, against a profile defined for 1,000;
  • entity_id is a TAG column, so device cardinality materially changes the write workload;
  • 30,000 rows fit entirely in the 50,000-row queue, so the run exercises no back-pressure;
  • a single flush worker by design.

It also records the host provenance — a shared developer laptop under Docker Desktop, not dedicated benchmark hardware — so the figure can be read for what it is. The full profile is marked deferred with an explicit to-be-filled list.

docker-compose.bench.yml provides the equivalent stack for running the case outside JUnit.

Scope

Test, docs and a compose file. No production code, no new dependency.

…path

Adds a JUnit-driven smoke benchmark that drives the real save path -- bounded
queue, single flush worker, multi-row Tablet insert -- against the same
apache/iotdb:2.0.8-standalone Testcontainer the functional integration tests
use, and reports records/sec, error rate and writer statistics.

The test asserts a deliberately conservative floor of 1,000 rows/sec plus
strict correctness: zero failures, zero rejects, flushed equal to rows written,
and sampled rows readable back from IoTDB. Its job is to catch a gross
throughput regression and to prove real end-to-end ingestion, not to certify a
headline number -- 50 saver threads drive only 50 distinct devices, entity_id
is a TAG column so device cardinality materially changes the workload, and
30,000 rows fit entirely in the 50,000-row queue, so the run exercises no
back-pressure. It carries the benchmark tag and is not part of the default
test run.

docs/benchmarks records the case definition, the two profiles, and the measured
result with its provenance: a shared developer laptop under Docker Desktop
rather than a dedicated benchmark host. Two back-to-back runs on that host
measured 54,292 and 61,936 rows/sec with a zero error rate; the report anchors
on the conservative figure and states explicitly that this does not constitute
a pass of the sustained full-profile target, which is defined for 1,000 devices
on dedicated hardware and remains deferred.

docker-compose.bench.yml provides the equivalent stack for running the case
outside JUnit.

Signed-off-by: Zihan Dai <99155080+PDGGK@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant