Skip to content

benchmarking: add ate_env boomer user class and workload - #2735

Open
Sairaj Pokale (sairajp-rewind) wants to merge 1 commit into
agent-substrate:mainfrom
sairajp-rewind:ate-env-benchmark
Open

Sairaj Pokale (sairajp-rewind) wants to merge 1 commit into
agent-substrate:mainfrom
sairajp-rewind:ate-env-benchmark

Conversation

@sairajp-rewind

@sairajp-rewind Sairaj Pokale (sairajp-rewind) commented Oct 16, 2026 •

Copy link
Copy Markdown
Collaborator

What is this PR ?

This PR adds:

  • ate_env boomer user class (AteEnvUser) in internal/benchmarking/boomer/ateenv: mirrors glutton's per-VU actor lifecycle (CreateAtespace, CreateActor, ResumeActorFirstResume / ResumeActor, live window with AteEnvExec, SuspendActor / PauseActor, and DeleteActor), replacing HTTP /ping with ProcessService.StartProcess(["echo", "hello world"]) + ProcessService.StreamProcessOutput(follow: true) over plaintext HTTP/2 gRPC directly through atenet-router (ate-target-actor: <atespace>/<actor>).
  • ate-env workload manifest template (benchmarking/workloads/manifests/ate-env-template.yaml.tmpl) and opt-in WORKLOAD_TEMPLATES="ate-env" support in benchmarking/workloads/deploy.sh (with ATE_ENV_IMAGE check matching glutton-storage).
  • Locust harness stub (benchmarking/locust/tests/ate_env.py) and documentation in benchmarking/README.md.

Live Cluster Smoke Validation

Validated on a GKE cluster (4 c3-standard-4 worker nodes, 4 benchmark-worker replicas, 256Mi actor memory limit) across suspend and pause modes for both gvisor and microvm.

Snapshot Size Comparison (gvisor vs microvm, 256Mi Actor Memory Limit)

Metric gvisor (ate-env) microvm (ate-env)
Golden Snapshot — Uncompressed Total (atelet_snapshot_size_bytes) 2.46 MiB (pages.img: 2.13 MiB, checkpoint.img: 328 KiB, pages_meta.img: 4 KiB) 62.43 MiB (memory-ranges: 62.35 MiB, state.json: 64 KiB, rootfs-upper-guest.tar: 8 KiB, base-id: 4 KiB, config.json: 4 KiB)
Golden Snapshot — Compressed in GCS 430.3 KiB (4 objects, ~5.8× compression) 16.37 MiB (6 objects, ~3.8× compression)
Per-Checkpoint after AteEnvExec (suspend) — Uncompressed Mean 4.30 MiB (pages.img mean: 3.94 MiB, p50: 3.17 MiB, p90: 6.12 MiB, p99: 9.20 MiB; checkpoint.img mean: 365 KiB) 66.65 MiB (memory-ranges mean: 66.54 MiB, p50: 71.53 MiB, p90: 90.60 MiB; state.json mean: 69 KiB; rootfs-upper-guest.tar mean: 36 KiB)
Per-Checkpoint after AteEnvExec (pause) — Uncompressed Mean 4.61 MiB (pages.img mean: 4.24 MiB, p50: 3.60 MiB, p90: 7.82 MiB, p99: 9.37 MiB; checkpoint.img mean: 365 KiB) 67.32 MiB (memory-ranges mean: 67.20 MiB, p50: 71.53 MiB, p90: 90.60 MiB; state.json mean: 70 KiB; rootfs-upper-guest.tar mean: 46 KiB)
  • Tests pass
  • Appropriate changes to documentation are included in the PR

Comment thread internal/proto/ateenv/v1alpha/guest.proto Outdated
Comment thread internal/benchmarking/boomer/ateenv/lifecycle.go Outdated

@maxsmythe Max Smythe (maxsmythe) left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

LGTM after 1 nit regarding RW lock

Comment thread internal/benchmarking/boomer/ateenv/lifecycle.go Outdated

@maxsmythe Max Smythe (maxsmythe) left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

LGTM

@maxsmythe
Max Smythe (maxsmythe) added this pull request to the merge queue Oct 19, 2026
@github-merge-queue
github-merge-queue Bot removed this pull request from the merge queue due to failed status checks Oct 19, 2026
@bowei Bowei Du (bowei) added area/benchmarking kind/feature An enhancement / feature request or implementation labels Oct 19, 2026
Existing benchmarks (glutton) only exercise synthetic in-process HTTP
/ping handlers after waking an actor, leaving real sandbox process
spawning and streaming I/O unmeasured. ate-env environments run
ate-env-guest inside each sandbox and execute commands over its gRPC
ProcessService.

Add the ate_env boomer user class (AteEnvUser), workload manifest
template, and guest.proto client definitions so boomer-worker can
benchmark end-to-end actor wake, child process fork/exec
(StartProcess), and stdout/exit streaming (StreamProcessOutput)
directly through atenet-router.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area/benchmarking kind/feature An enhancement / feature request or implementation

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants