The Universal Scalability Law is used to forcast the scalability of
either a hardware or a software system.The USL model works with one independent variable (e.g. virtual users,
processes, threads, ...) and one dependent variable (e.g. throughput, ...).
Therefore the model formula must be in the simple
"response ~ predictor" format.
The model produces two coefficients as result: sigma models the
contention and kappa the coherency delay of the system. The
function coef extracts the coefficients from the model
object.
The argument method selects which solver is used to solve the
model:
- "
default" for the default method using a transformation
into a 2nd degree polynom. It can only be used if the model frame
contains a value for the normalization where the predictor equals
"1" for one measurement. This is the algorithm introduced by
Dr. Neil J. Gunther in the bookGuerrilla Capacity Planning. - "
nls" for a nonlinear regression model. This method
estimates not only the coefficientssigmaandkappabut
also thescale.factorfor the normalization.nlswith the "port" algorithm is used internally to solve the
model. So all restrictions of the "port" algorithm apply. - "
nlxb" for a nonliner regression model using the functionnlxbfrom thenlmrtpackage. This method
also estimates both coefficients and the normalization factor. It is
expected to be more robust than thenlsmethod.
The Universal Scalability Law can be expressed with following formula.
C(N) predicts the relative capacity of the system for a given
load N:
$$C(N) = \frac{N}{1 + \sigma (N - 1) + \kappa N (N - 1)}$$