Skip to content

Split callees and the rate among load generators; sample every one; count K8s restarts from pods - #29

Merged
psanders merged 5 commits into
mainfrom
fix/loadgen-callees
Nov 9, 2026
Merged

psanders merged 5 commits into
mainfrom
fix/loadgen-callees

Conversation

@psanders

@psanders psanders commented Nov 9, 2026

Copy link
Copy Markdown
Member
  • Split the rate among SIPp instances in whole numbers (SIPp rejected -rate_increase 6.25, so k8s-simple never ran in the full run).
  • Count cluster restarts from the pods' counters, not sampler gaps (the full run's k8s-soak read 29 restarts from sampler gaps; the pods had 0).
  • Split the callees among the load generators: as many callee processes as load.instances, users round robin, abort if a share does not register. One callee SIPp capped RoutrOne at about 2,850 calls/s.
  • Sample every load generator; report the load generator count; the app ignores unknown live fields (0.1.13).
  • README: how a run works, two diagrams.

Verified: 809 tests; Routr smoke run 42691147552 on DigitalOcean with two load generators, 6 of 6 passed (red only from the VPC delete).

🤖 Generated with Claude Code

https://claude.ai/code/session_01WSt25UoKGj2mgDNQ4dHVrB

psanders and others added 5 commits November 9, 2026 15:54
SIPp's -rate_increase takes only integers, so 50 over 8 instances (6.25)
kept every uac from starting. Shares are now whole numbers that add up to
the rate; a start below the instance count is rejected by the config.
…pler gaps

A tick where the Metrics API had no usage gave no sample line, and a missing
sample counted as a restart: the K8s soak of the full run reported 29 restarts
with none in the pods' counters. On the cluster only a counter rise, or a
replaced pod, is a restart. Server benchmarks count as before.
The callees were one SIPp process on the first load generator, answering every
call, and it capped RoutrOne at about 2,900 calls/s however many uac instances
there were. A benchmark with a register now runs as many callee processes as
load.instances, each registering its share of the users (round robin) from its
own port and address, spread over the load generators like the uac. Every
share must register before the ramp starts, or the benchmark aborts with the
callee that fell short. Saturation is judged on every callee process.
The sampler (processes and UDP counters) now runs on each worker too, and a
step is invalid when a SIPp process on any load generator is over 80% of its
core or any of them drops UDP packets. The report's run.infra.loadgen.count
lists the droplets. The page now ignores fields of live.json it does not know,
so a newer perfkit's snapshot still shows, and the version moves to 0.1.13 so
browsers do not keep the old app.js.
@psanders
psanders merged commit d8cf6a4 into main Nov 9, 2026
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