Skip to content

perf(e2e): load the operator images in one kind invocation - #2300

Merged
csatib02 merged 1 commit into
kube-logging:masterfrom
vyncint:fix-e2e-batch-image-load
Jul 30, 2026
Merged

perf(e2e): load the operator images in one kind invocation#2300
csatib02 merged 1 commit into
kube-logging:masterfrom
vyncint:fix-e2e-batch-image-load

Conversation

@vyncint

@vyncint vyncint commented Jul 30, 2026

Copy link
Copy Markdown
Contributor

LoggingOperator looped over the six images calling LoadImages once each, so every cluster ran six kind load docker-image invocations — 102 across a full run where 17 would do. LoadImages was already variadic and LoadDockerImage already appends every image to one command, so only the caller changed.

docker save writes a shared layer once per invocation rather than once per image. Measured on three layer-sharing images locally: 88,659,456 bytes as three separate tars against 59,109,376 batched, 33% less. The six e2e images are not built locally, so their real overlap is unmeasured.

This reduces I/O volume without serialising anything, so it does not contradict the measurement in #2287 that concurrent loads beat serial ones. It is one contributor to that flake, not the whole fix — the concurrency cap is still open there.

TestInvocations now pins that several images produce a single command line. The caller side has no unit test: LoggingOperator needs a live cluster, so only a real e2e run exercises it.

LoggingOperator looped over the six images calling LoadImages once each, so
every cluster ran six kind load docker-image invocations: 102 across a full
run where 17 would do. LoadImages was already variadic and LoadDockerImage
already appends every image to one command, so only the caller had to change.

docker save writes a shared layer once per invocation rather than once per
image, and kube-logging#2287 measured the bottleneck as roughly 13 GB of tar-and-import
per run with fluentd-full unpacked into every cluster. Batching cuts that
volume without serialising anything, so it does not contradict the finding
there that concurrent loads beat serial ones.

Measured on three layer-sharing images locally: three separate tars came to
88,659,456 bytes against 59,109,376 for one batched tar, 33 percent less.
The six e2e images are not built here, so their real overlap is unmeasured.

TestInvocations now pins that several images produce a single command line.
The caller side has no unit test: LoggingOperator needs a live cluster, so
only a real e2e run exercises it.

Signed-off-by: Vyncint Ng <115854244+vyncint@users.noreply.github.com>
Copilot AI review requested due to automatic review settings July 30, 2026 12:45

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@csatib02
csatib02 merged commit 80ebc1a into kube-logging:master Jul 30, 2026
29 checks passed
@csatib02 csatib02 added the enhancement New feature or request label Jul 31, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants