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 coefficientssigma
andkappa
but also thescale.factor
for the normalization.nls
with 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 functionnlxb
from thenlmrt
package.
This method also estimates both coefficients and the
normalization factor. It is expected to be more robust
than thenls
method.
The parameter R
defines the number of bootstrap
replicates used to estimate the parameter confidence
intervals. Depending on the number of observations the
default 50 may be too low to get reasonable results. See
boot
and boot.ci
for details.
The method confint
is used to get
confidence intervals for a model.
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)}$$