Ramp Up to Warm Caches Before Load Test

45 views
Skip to first unread message

Spencer de Mars

unread,
Oct 31, 2013, 8:06:11 PM10/31/13
to iago-...@googlegroups.com
Hi,

We have Iago set up but would like to make a modification so that there is a ramp up time to warm caches followed by the test at full qps where the performance is actually measured.  I noticed the blog post announcing Iago referenced this: "The request rate can be varied as appropriate – for instance to warm up caches before handling full production load."  

However looking at the documentation I didn't see a reference for this kind of control in the configuration nor which component to extend to get this functionality.  Could you point me in the right direction for the easiest way to implement this modification?

Thanks,

Tom Howland

unread,
Nov 1, 2013, 2:19:39 PM11/1/13
to iago-...@googlegroups.com
Greetings Spencer de Mars

In parrot/util there's

* RequestDistribution: A function specifying the time to arrival of the next request, used to control the request rate. Instances include
* UniformDistribution: Sends requests at a uniform rate
* PoissonProcess: Sends requests at approximatly constant rate randomly varying using a poisson process. This is the default.
* SinusoidalPoissonProcess: Like PoissonProcess but varying the rate sinusoidally.
* SlowStartPoissionProcess: Same as PoissonProcess but starting with a gradual ramp from initial rate to final rate. It will then hold steady at the final rate until time runs out.

Would SlowStartPoissionProcess fill the bill?

Here's an example of using SlowStartPoissionProcess

  duration = 30
  timeUnit = "MINUTES"

  imports = """
  import com.twitter.conversions.time._
  import com.twitter.parrot.util.SlowStartPoissonProcess"""
  createDistribution = "createDistribution = { rate => new SlowStartPoissonProcess(rate, (duration/2).minutes) }"

There's another distribution,

* InfiniteRampPoissonProcess: a two staged ramped distribution. Ideal for services that need a warm-up period before ramping up. The rate continues to increase until time runs out.

however it isn't on github. It will be eventually. I could mail it to you if you like. I don't really like it much because I would rather someone implemented a way of sequencing distributions. So InfiniteRampPoissonProcess would be a sequence of [ramp,ramp,flat].


--
 
---
You received this message because you are subscribed to the Google Groups "Iago Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to iago-users+...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

Spencer de Mars

unread,
Nov 1, 2013, 7:11:41 PM11/1/13
to iago-...@googlegroups.com
That sounds about right but one clarifying question:
Because the initial queries during ramp up have high latency and high variability I would prefer for them not to be included in the performance metrics at all.  With SlowStartPoissonProcess are the ramp up queries included in performance metrics or do the metrics only start when the request rate hits the final rate?

James Waldrop

unread,
Nov 1, 2013, 7:21:42 PM11/1/13
to iago-...@googlegroups.com
The metrics will be over the whole length of the test. You could pretty easily exclude the period you don't care about, though.

Tom Howland

unread,
Nov 1, 2013, 8:05:30 PM11/1/13
to iago-...@googlegroups.com
I think the ideal solution for you would be to run iago twice: first to warm the caches, and second to collect stats.
Reply all
Reply to author
Forward
0 new messages