Skip to content

mookerji/sca_tools

Folders and files

NameName
Last commit message
Last commit date
Nov 15, 2017
Dec 7, 2017
Dec 7, 2017
Dec 10, 2017
Dec 11, 2017
Nov 29, 2017
Nov 29, 2017
Dec 7, 2017
Nov 29, 2017
Nov 15, 2017
Nov 29, 2017
Dec 10, 2017
Dec 10, 2017
Nov 15, 2017
Nov 29, 2017
Nov 15, 2017
Dec 10, 2017
Dec 7, 2017
Nov 29, 2017

Repository files navigation

Scalability Analysis Tools

Build Status codecov PyPI version

sca_tools analyzes software scalability benchmarking experiments, specifically measurements of throughput as a function of applied load or concurrency. It is a Python library and set of command line utilities and that will help you:

  • Model and quantify throughput bottlenecks in your application
  • Capacity plan
  • Compare performance benchmarks for regressions

We rely on Neil Gunther's Universal Scalability Law as a model and lmfit to perform model fitting. sca_tools differs from existing implementations (see Related Work) in a few ways:

  • Emphasis on robust parameter estimation
  • Support for propagation of parameter uncertanties when computing derived quantities, such as latency, queue size, etc.
  • Support for experimental measurement uncertainty
  • Written using Scientific Python libraries

This is alpha software: use it at your own risk (e.g., don't use it to make business decisions). It's very much a work in progress, but currently includes:

  • Fitting routines to the USL and basic reporting around goodness-of-fit for USL's convention and coherence parameters.
  • Graph outputs for best fit model, best fit model confidence intervals, fit data, residuals, etc.
  • Command line tools to produce these models from CSV data, as well as manipulate and aggregate CSV data from computer experiments.

Usage

The fixtures/ directory contains the SPEC SDM91 load-througput benchmark ported from Stefan Möding's R implementation of USL.

> python sca_tools/sca_fit.py --model_type usl fixtures/specsdm91.csv

----- Summary -----

[[Model]]
    Model(_usl_func)
[[Fit Statistics]]
    # function evals   = 41
    # data points      = 7
    # variables        = 3
    chi-square         = 27453.720
    reduced chi-square = 6863.430
    Akaike info crit   = 63.920
    Bayesian info crit = 63.758
[[Variables]]
    lambda_:   89.9954927 +/- 14.21296 (15.79%) (init= 1000)
    sigma_:    0.02772863 +/- 0.009121 (32.90%) (init= 0.1)
    kappa:     0.00010437 +/- 1.99e-05 (19.04%) (init= 0.001)
[[Correlations]] (unreported correlations are <  0.100)
    C(lambda_, sigma_)           =  0.964
    C(sigma_, kappa)             = -0.467
    C(lambda_, kappa)            = -0.243

Graphically:

Throughput model

Related Work

Citations

  • Neil J. Gunther. Guerrilla Capacity Planning: A Tactical Approach to Planning for Highly Scalable Applications and Services. Springer, Heidelberg, Germany, 1st edition, 2007.
  • Baron Schwartz. Practical Scalability Analysis with the Universal Scalability Law. VividCortex, November 2015.

License

Copyright © 2017 Bhaskar Mookerji

Distributed under the Apache License 2.0