-
Notifications
You must be signed in to change notification settings - Fork 1.4k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Variable Rate Pacing (concrete proposal + initial implementation) #483
Comments
On a related API note, I had to resort to globals in order to track state. It would be nice if the I suspect that most folks who will reach for Vegeta as a library will have squirrely stateful requirements and want to hang state on the pacer, tag requests/responses with context, handle multiple attacks/metrics, etc so little API affordances can really help |
I like your proposed CLI interface, but I'm not sure the text report makes total sense for a variable rate of attack, so I'm hesitant to pursue this. |
In playing with this a bit more, there are a few interesting CLI interfaces. My original proposal specified the exact steps but was crucially lacking a The text report was just an interface to test out the pacer. Don't care about it. Even if you just want to close this issue out, I do think that passing the |
Can you explain what you mean? |
I love this proposal. Other load generators such as JMeter and Locust already support rate pacing, however, no one guarantees the rate that I wanted, and the actual rate is affected by the performance of the testing target system. I hope to see this proposal merged to the main branch. |
Proposal
This issue proposes to introduce a new
Pacer
implementation that varies the load based on specific target rates + duration pairs. In order to deliver such an experience within the Vegeta CLI, this issue also raises the question of how to expose the configuration ofPacer
objects as arguments.From a product perspective, what we would like is to:
Just spitballing here to get the ball rolling, but here are some Vegeta incantations I can imagine:
There is a proof of concept implementation available that utilizes Vegeta as a library at opsani/vegeta-varload but this is literally the first Golang code I have ever written so please be gentle in your review. :-)
The implementation has the current experience:
Background
The driving use-case is working with autoscaling workloads where specific step-function type variance of the load is of particular interest. For example, within a given attack we may wish to oscillate the load at fixed intervals between thresholds such as 1000rpm for 10 minutes, 2000rpm for 5 minutes, 3000rpm for 15 minutes, 200rpm for 2 hours, and 50rpm for 30 minutes in order to describe an auto-scaling workload and observe the resource utilization and responsiveness within these durations.
Workarounds
We have looked at the load ramping script and scripting the Vegeta CLI is by no means off the table but the recent inclusion of the
Pacer
interface seems to indicate that there may be interest/appetite for direct support within Vegeta.The text was updated successfully, but these errors were encountered: