Repository navigation
benchmarking/nighthawk-egress: size the rig so atenet-egress is the bottleneck under test - #3627
Open
Yuan Gao (ygao-g) wants to merge 4 commits into
Open
Yuan Gao (ygao-g) wants to merge 4 commits into
Yuan Gao (ygao-g) wants to merge 4 commits into
Conversation
Closed
2 tasks done
4 tasks
Yuan Gao (ygao-g)
force-pushed
the
nighthawk-egress-1-sizing
branch
from
November 5, 2026 19:01
d847d8c to
8ac15c2
Compare
Yuan Gao (ygao-g)
marked this pull request as draft
November 5, 2026 19:10
Yuan Gao (ygao-g)
force-pushed
the
nighthawk-egress-1-sizing
branch
2 times, most recently
from
November 5, 2026 21:19
a70ba52 to
e98a359
Compare
Yuan Gao (ygao-g)
marked this pull request as ready for review
November 5, 2026 21:28
Yuan Gao (ygao-g)
force-pushed
the
nighthawk-egress-1-sizing
branch
2 times, most recently
from
November 5, 2026 22:14
61962aa to
507ece3
Compare
This was referenced Nov 5, 2026
Merged
Yuan Gao (ygao-g)
marked this pull request as draft
November 5, 2026 22:34
Yuan Gao (ygao-g)
force-pushed
the
nighthawk-egress-1-sizing
branch
2 times, most recently
from
November 5, 2026 22:53
61962aa to
8c06a5b
Compare
Yuan Gao (ygao-g)
marked this pull request as ready for review
November 6, 2026 00:12
This was referenced Nov 6, 2026
Yuan Gao (ygao-g)
force-pushed
the
nighthawk-egress-1-sizing
branch
from
November 12, 2026 22:39
97ecbc2 to
136457f
Compare
shankgan
pushed a commit
to shankgan/substrate
that referenced
this pull request
Nov 13, 2026
…to nighthawk_common (agent-substrate#3628) Part of agent-substrate#3624 (Stage 1, item 2): share the adaptive load session spec and output helpers between `nighthawk-ingress` and the coming `nighthawk-egress` runner. ### What changes Pure relocation, no behavior change. `nighthawk-ingress/output.py` and `spec.py` move to `benchmarking/nighthawk_common/`. The router-specific parts of the spec builder (router SNI, certificate paths, `build_spec_dict`) stay in `nighthawk-ingress/spec.py`, which now calls the generic `build_session_spec`. Callers and tests import `nighthawk_common` directly; the ingress Dockerfile copies the package into the image. ### Review guide 1. `output.py` rename (GitHub shows 100%), two import lines, the Dockerfile `COPY`, two `sys.path` lines in the ingress tests. 2. `spec.py` rename at 100%, importers repointed, an unused import dropped from `actors.py`. 3. The split: read `nighthawk_common/spec.py` as deletions and `nighthawk-ingress/spec.py` as the same lines moving back. ### Testing `hack/verify/benchmarking-python.sh`: the ingress suite passes at each commit, and fails without the new `sys.path` lines, so the import path is exercised. Independent of agent-substrate#3627. agent-substrate#3629 and agent-substrate#3630 stack on both. AI use: AI-assisted for the diff, the commit split and the test runs; I reviewed the diff. - [x] Tests pass - [ ] Docs updated (none needed) --------- Signed-off-by: Yuan Gao <ypgao@google.com>
Move the function into benchmarking/lib/kubectl-ate.sh for reuse. Signed-off-by: Yuan Gao <ypgao@google.com>
…ration Give the actor sandbox, its worker pod and nighthawk-server enough CPU and memory that the gateway saturates first. Signed-off-by: Yuan Gao <ypgao@google.com>
deploy-traffic-driver.sh builds kubectl-ate from the tree into a temporary directory. Signed-off-by: Yuan Gao <ypgao@google.com>
With no context set, "${args[@]}" is an unbound variable under the macOS
system bash, and the EXIT trap of build_kubectl_ate made the script exit
0 after that error. The array now expands only when it has elements, as
in hack/run-e2e.sh.
Signed-off-by: Yuan Gao <ypgao@google.com>
Yuan Gao (ygao-g)
force-pushed
the
nighthawk-egress-1-sizing
branch
from
November 13, 2026 18:46
136457f to
9e9f50b
Compare
2 tasks done
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Part of #3624: size the rig so
atenet-egressis the bottleneck under test.Before this PR, the benchmark ran at a fixed request rate. The later PRs of #3624 measure the highest rate that
atenet-egressholds, with the gateway as the system under test. So the load generator, which runs inside an actor, and the origin server should get more CPU and memory.Measured on a GKE cluster with 4
c3-standard-22nodes andenvoyofatenet-egressat 1 vCPU. In each of the modeshttp,mitmandpassthrough,envoyreached its CPU limit. The worker pod of the load generator peaked at 12 of its 18 vCPUs, andnighthawk-serverat 2.1 of its 8. The run used the search of those later PRs.AI use: AI-assisted for the diff, the split and the test runs; I reviewed the diff.