Configuring Runs with Varying Loads

Module: Driver Framework
Status: Experimental
Feature is permanent, but interfaces and usage will change


It is desirable to vary the scale of the workload during the run. This is often used for quick scaling tests to find the limitations of the system under test. It is also used for testing elastic, self configuring components how well it adapts to load variation or component-level failure. The final result of such tests are usually less important than the intermittent behavior at and after the time of the scale change.

Faban allows you to vary the scale of the workload by providing load variation files to a run at submission time. All the needed driver threads for the maximum load are being created at the beginning of the run. Unneeded threads will remain idle until they are needed, and will return to idle/sleeping state between or after the times they are needed. This feature coupled with the runtime reporting allows us to monitor the response times and its stability as the load varies.


  1. Prepare a load variation file. The file contains load level records, one per line. Each record is a comma-separated pair of integers in the form <runtime in secs>,<thread count> such as in the following example:


    In the example above, a load of 500 threads are applied for 10 seconds, then 700 threads start applying load for 20 seconds. Afterwards, 600 threads apply the last set of load for 10 seconds.
  2. In your run.xml, add the load variation elements fa:variableLoad and fa:variableLoadFile to the runControl element as follows:


    Make sure the scale of the run results in threads being created matching the largest thread count in the load variation file. Also ensure that the total time of the load variation matches the steady state time of the run.
  3. Now, start the run via the submission form or command line as usual, then observe the runtime statistics and the results.


  1. The load variation file works on a per agent basis. The thread count is the thread in each agent. So if there n agents, the effect of the load variation will be n times the number of threads that get added or removed.
  2. The load variation file does not get distributed to all the driver systems. They have to be manually placed in the given path on each driver system.
  3. The sum of time in the load variation file and the steady state must match.
  4. The load variation is still configured on a thread basis and not a scale basis. The maximum thread count in the load variation file must match the thread count  on each agent as calculated by the scale.