{ "info": { "author": "Bhaskar Mookerji", "author_email": "mookerji@gmail.com", "bugtrack_url": null, "classifiers": [ "Intended Audience :: Developers", "Operating System :: MacOS :: MacOS X", "Operating System :: POSIX :: Linux", "Programming Language :: Python", "Programming Language :: Python :: 2.7" ], "description": "## Scalability Analysis Tools\n\n[![Build Status](https://travis-ci.org/mookerji/sca_tools.svg?branch=master)](https://travis-ci.org/mookerji/sca_tools)\n[![codecov](https://codecov.io/gh/mookerji/sca_tools/branch/master/graph/badge.svg)](https://codecov.io/gh/mookerji/sca_tools)\n[![PyPI version](https://badge.fury.io/py/sca-tools.svg)](https://badge.fury.io/py/sca-tools)\n\n`sca_tools` analyzes software scalability benchmarking experiments,\nspecifically measurements of throughput as a function of applied load\nor concurrency. It is a Python library and set of command line\nutilities and that will help you:\n- Model and quantify throughput bottlenecks in your application\n- Capacity plan\n- Compare performance benchmarks for regressions\n\nWe rely on Neil Gunther's\n[Universal Scalability Law](http://www.perfdynamics.com/Manifesto/USLscalability.html)\nas a model and [lmfit](https://github.com/lmfit/lmfit-py) to perform\nmodel fitting. `sca_tools` differs from existing implementations (see\n[Related Work](#related-work)) in a few ways:\n- Emphasis on robust parameter estimation\n- Support for propagation of parameter uncertanties when computing\n derived quantities, such as latency, queue size, etc.\n- Support for experimental measurement uncertainty\n- Written using Scientific Python libraries\n\nThis is alpha software: use it at your **own risk** (e.g., don't use\nit to make business decisions). It's very much a **work in progress**,\nbut currently includes:\n- Fitting routines to the USL and basic reporting around\n goodness-of-fit for USL's convention and coherence parameters.\n- Graph outputs for best fit model, best fit model confidence\n intervals, fit data, residuals, etc.\n- Command line tools to produce these models from CSV data, as well\n as manipulate and aggregate CSV data from computer experiments.\n\n## Usage\n\nThe `fixtures/` directory contains the SPEC SDM91 load-througput\nbenchmark ported from Stefan M\u00f6ding's\n[R implementation](https://github.com/smoeding/usl) of USL.\n\n```shell\n> python sca_tools/sca_fit.py --model_type usl fixtures/specsdm91.csv\n\n----- Summary -----\n\n[[Model]]\n Model(_usl_func)\n[[Fit Statistics]]\n # function evals = 41\n # data points = 7\n # variables = 3\n chi-square = 27453.720\n reduced chi-square = 6863.430\n Akaike info crit = 63.920\n Bayesian info crit = 63.758\n[[Variables]]\n lambda_: 89.9954927 +/- 14.21296 (15.79%) (init= 1000)\n sigma_: 0.02772863 +/- 0.009121 (32.90%) (init= 0.1)\n kappa: 0.00010437 +/- 1.99e-05 (19.04%) (init= 0.001)\n[[Correlations]] (unreported correlations are < 0.100)\n C(lambda_, sigma_) = 0.964\n C(sigma_, kappa) = -0.467\n C(lambda_, kappa) = -0.243\n```\n\nGraphically:\n\n![Throughput model](docs/specsdm91-throughput_model.png)\n\n## Related Work\n\n- https://github.com/smoeding/usl\n- https://github.com/codahale/usl4j\n\n## Citations\n\n- Neil J. Gunther. *Guerrilla Capacity Planning: A Tactical Approach\n to Planning for Highly Scalable Applications and\n Services*. Springer, Heidelberg, Germany, 1st edition, 2007.\n- Baron Schwartz. *Practical Scalability Analysis with the Universal\n Scalability Law*. VividCortex, November 2015.\n\n## License\n\nCopyright \u00a9 2017 Bhaskar Mookerji\n\nDistributed under the Apache License 2.0\n\n", "description_content_type": null, "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/mookerji/sca_tools", "keywords": "", "license": "", "maintainer": "", "maintainer_email": "", "name": "sca-tools", "package_url": "https://pypi.org/project/sca-tools/", "platform": "Linux", "project_url": "https://pypi.org/project/sca-tools/", "project_urls": { "Homepage": "https://github.com/mookerji/sca_tools" }, "release_url": "https://pypi.org/project/sca-tools/0.1.2/", "requires_dist": [ "pytest (>=2.8.0)", "numpy", "pandas (<=0.20.3,>=0.20.1)", "scipy", "tables", "matplotlib", "click", "uncertainties", "lmfit", "pytest-cov", "pytest-xdist", "pytest-datafiles" ], "requires_python": "", "summary": "Scalability Analysis Tools", "version": "0.1.2" }, "last_serial": 3408201, "releases": { "0.1.1": [ { "comment_text": "", "digests": { "md5": "36b9dbde2447d18fb9472d23e513c4f6", "sha256": "c0651cda2eff8c90782e8a98b594e945762a6ce515a2e40708ea5e6a150e1447" }, "downloads": -1, "filename": "sca_tools-0.1.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "36b9dbde2447d18fb9472d23e513c4f6", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 9113, "upload_time": "2017-11-29T18:15:36", "url": "https://files.pythonhosted.org/packages/84/ca/cf59778ce4d415137426faaa0a13ebc3fa9878620eaf333a9c00ce005911/sca_tools-0.1.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5e7a957c624755de031192fddf0e7653", "sha256": "24f1f3ec58c19f4ff0cbcb0be4987e09ab91271ac1e1f3cded8dadd2d327e227" }, "downloads": -1, "filename": "sca_tools-0.1.1.tar.gz", "has_sig": false, "md5_digest": "5e7a957c624755de031192fddf0e7653", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 27109, "upload_time": "2017-11-29T18:15:37", "url": "https://files.pythonhosted.org/packages/1a/6e/c9ab574a5520d1c9d92be1202f8b92319a3b6a2e55617c4a5febccdbc803/sca_tools-0.1.1.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "0ed1c7a4c2854418662afa3661b9c1a6", "sha256": "a548d1b33af05aa5dcd9b98b7f68bac2d0abfbbae80a5c31d46261f2ce5122d6" }, "downloads": -1, "filename": "sca_tools-0.1.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "0ed1c7a4c2854418662afa3661b9c1a6", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 23926, "upload_time": "2017-12-11T18:53:10", "url": "https://files.pythonhosted.org/packages/d7/e2/31073bd5b4fde28cb39f6832ea8e4036e2696648ddf7b2239734e0df36e1/sca_tools-0.1.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "61c5b5d862939e674a2c4227d2323baa", "sha256": "21e839423a38a6c853f2f1c920e735cbbd429b304d50b3e9fcc88c571c147e3c" }, "downloads": -1, "filename": "sca_tools-0.1.2.tar.gz", "has_sig": false, "md5_digest": "61c5b5d862939e674a2c4227d2323baa", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 37177, "upload_time": "2017-12-11T18:53:12", "url": "https://files.pythonhosted.org/packages/dd/8f/cf9a385add93154d911020ee09db8ae320d92cdcf0935ba1d2e081f1232c/sca_tools-0.1.2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "0ed1c7a4c2854418662afa3661b9c1a6", "sha256": "a548d1b33af05aa5dcd9b98b7f68bac2d0abfbbae80a5c31d46261f2ce5122d6" }, "downloads": -1, "filename": "sca_tools-0.1.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "0ed1c7a4c2854418662afa3661b9c1a6", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 23926, "upload_time": "2017-12-11T18:53:10", "url": "https://files.pythonhosted.org/packages/d7/e2/31073bd5b4fde28cb39f6832ea8e4036e2696648ddf7b2239734e0df36e1/sca_tools-0.1.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "61c5b5d862939e674a2c4227d2323baa", "sha256": "21e839423a38a6c853f2f1c920e735cbbd429b304d50b3e9fcc88c571c147e3c" }, "downloads": -1, "filename": "sca_tools-0.1.2.tar.gz", "has_sig": false, "md5_digest": "61c5b5d862939e674a2c4227d2323baa", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 37177, "upload_time": "2017-12-11T18:53:12", "url": "https://files.pythonhosted.org/packages/dd/8f/cf9a385add93154d911020ee09db8ae320d92cdcf0935ba1d2e081f1232c/sca_tools-0.1.2.tar.gz" } ] }