usl

command
v0.1.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 17, 2021 License: Apache-2.0 Imports: 8 Imported by: 0

Documentation

Overview

USL is a modeler for the Universal Scalability Law, which can be used in system testing and capacity planning.

As an example, consider doing load testing and capacity planning for an HTTP server. To use USL, we must first gather a set of measurements of the system. These measurements will consist of pairs of simultaneous measurements of the independent and dependent variables. With an HTTP server, it might be tempting to use the rate as the independent variable, but this is a mistake. The rate of requests being handled by the server is actually itself a dependent variable of two other independent variables: the number of concurrent users and the rate at which users send requests.

As we do our capacity planning, we make the observation that users of our system do ~10 req/sec. (Or, more commonly, we assume this based on a hunch.) By holding this constant, we leave the number of concurrent users as the single remaining independent variable.

Our load testing, then, should consist of running a series of tests with an increasing number of simulated users, each performing ~10 req/sec. While the number of users to test with depends heavily on your system, you should be testing at least six different concurrency levels. You should do one test with a single user in order to determine the performance of an uncontended system.

After our load testing is done, we should have a CSV file which consists of a series of (concurrency, throughput) pairs of measurements:

1,65
18,996
36,1652
72,1853
108,1829
144,1775
216,1702

We can then run the USL binary:

usl data.csv

USL parses the given CSV file as a series of (concurrency, throughput) points, calculates the USL parameters using quadratic regression, and then prints out the details of the model, along with a graph of the model's predictions and the given measurements.

Finally, we can provide USL a series of additional data points to provide estimates for:

usl data.csv 128 256 512

USL will output the data in CSV format on STDOUT.

For more information, see http://www.perfdynamics.com/Manifesto/USLscalability.html.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL