usl {usl} | R Documentation |
Create a model for the Universal Scalability Law
Description
usl
is used to create a model for the Universal Scalability Law.
Usage
usl(formula, data, method = "default")
Arguments
formula |
An object of class " |
data |
A data frame, list or environment (or object coercible by
as.data.frame to a data frame) containing the variables in the model.
If not found in data, the variables are taken from
|
method |
Character value specifying the method to use. The possible values are described under 'Details'. |
Details
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 main coefficients as result: alpha
models the
contention and beta
the coherency delay of the system. The third
coefficient gamma
estimates the value of the dependent variable
(e.g. throughput) for the single user/process/thread case. It therefore
corresponds to the scale factor calculated in previous versions of the
usl
package.
The function coef
extracts the coefficients from the model
object.
The argument method
selects which solver is used to solve the
model:
"
nls
" for a nonlinear regression model. This method estimates all coefficientsalpha
,beta
andgamma
. The R base functionnls
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 thenlsr
package. This method also estimates all three coefficients. It is expected to be more robust than thenls
method."
default
" for the default method using a transformation into a 2nd degree polynom has been removed with the implementation of the model using three coefficients in the usl package 2.0.0. Calling the "default
" method will internally dispatch to the "nlxb
" solver instead.
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{\gamma N}{1 + \alpha (N - 1) + \beta N (N - 1)}
Value
An object of class USL.
References
Neil J. Gunther. Guerrilla Capacity Planning: A Tactical Approach to Planning for Highly Scalable Applications and Services. Springer, Heidelberg, Germany, 1st edition, 2007.
John C. Nash. nlsr: Functions for nonlinear least squares solutions, 2017. R package version 2017.6.18.
See Also
efficiency,USL-method
,
scalability,USL-method
,
peak.scalability,USL-method
,
optimal.scalability,USL-method
,
limit.scalability,USL-method
,
summary,USL-method
,
sigma,USL-method
predict,USL-method
,
overhead,USL-method
,
confint,USL-method
,
coef
,
fitted
,
residuals
,
df.residual
Examples
require(usl)
data(raytracer)
## Create USL model for "throughput" by "processors"
usl.model <- usl(throughput ~ processors, raytracer)
## Show summary of model parameters
summary(usl.model)
## Show complete list of efficiency parameters
efficiency(usl.model)
## Extract coefficients for model
coef(usl.model)
## Calculate point of peak scalability
peak.scalability(usl.model)
## Plot original data and scalability function
plot(raytracer)
plot(usl.model, add=TRUE)