Skip to main content

Developed in PACS Lab as a performance simulator for serverless computing platforms.

Project description

DOI Binder PyPI PyPI - Status Travis (.com) Documentation Status Libraries.io dependency status for latest release GitHub

This is a project done in PACS Lab aiming to develop a performance simulator for serverless computing platforms. Using this simulator, we can calculate Quality of Service (QoS) metrics like average response time, the average probability of cold start, average running servers (directly reflecting average cost), a histogram of different events, distribution of the number of servers throughout time, and many other characteristics.

The developed performance model can be used to debug/improve analytical performance models, try new and improved management schema, or dig up a whole lot of properties of a common modern scale-per-request serverless platform.

Artifacts

Requirements

  • Python 3.6 or above

  • PIP

Installation

Install using pip:

pip install pacssim

Upgrading using pip:

pip install pacssim --upgrade

For installation in development mode:

git clone https://github.com/pacslab/pacssim
cd pacssim
pip install -e .

And in case you want to be able to execute the examples:

pip install -r examples/requirements.txt

Usage

A simple usage of the serverless simulator is shown in the following:

from pacssim.ServerlessSimulator import ServerlessSimulator as Sim

sim = Sim(arrival_rate=0.9, warm_service_rate=1/1.991, cold_service_rate=1/2.244,
            expiration_threshold=600, max_time=1e6)
sim.generate_trace(debug_print=False, progress=True)
sim.print_trace_results()

Which prints an output similar to the following:

100%|██████████| 1000000/1000000 [00:42<00:00, 23410.45it/s]
Cold Starts / total requests:    1213 / 898469
Cold Start Probability:          0.0014
Rejection / total requests:      0 / 898469
Rejection Probability:           0.0000
Average Instance Life Span:      6335.1337
Average Server Count:            7.6612
Average Running Count:           1.7879
Average Idle Count:              5.8733

Using this information, you can predict the behaviour of your system in production.

Development

In case you are interested in improving this work, you are always welcome to open up a pull request. In case you need more details or explanation, contact me.

To get up and running with the environment, run the following after installing Anaconda:

conda env create -f environment.yml
conda activate simenv
pip install -r requirements.txt
pip install -e .

After updating the README.md, use the following to update the README.rst accordingly:

bash .travis/readme_prep.sh

Examples

Some of the possible use cases of the serverless performance simulator are shown in the examples folder in our Github repository.

License

Unless otherwise specified:

MIT (c) 2020 Nima Mahmoudi & Hamzeh Khazaei

Citation

You can find the paper with details of the simultor in PACS lab website. You can use the following bibtex entry for citing our work:

@software{mahmoudi_nima_2020_3906617,
  author       = {Mahmoudi, Nima and
                  Khazaei, Hamzeh},
  title        = {{PACSSIM: A Performance Simulator for Serverless
                   Computing Platforms}},
  month        = jun,
  year         = 2020,
  publisher    = {Zenodo},
  version      = {0.1.3},
  doi          = {10.5281/zenodo.3906617},
  url          = {https://doi.org/10.5281/zenodo.3906617}
}

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pacssim-0.1.3b0.tar.gz (15.2 kB view details)

Uploaded Source

Built Distribution

pacssim-0.1.3b0-py3-none-any.whl (16.2 kB view details)

Uploaded Python 3

File details

Details for the file pacssim-0.1.3b0.tar.gz.

File metadata

  • Download URL: pacssim-0.1.3b0.tar.gz
  • Upload date:
  • Size: 15.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/47.3.1 requests-toolbelt/0.9.1 tqdm/4.46.0 CPython/3.6.7

File hashes

Hashes for pacssim-0.1.3b0.tar.gz
Algorithm Hash digest
SHA256 3fb6fbaa9e5d2aeef44e4fa9aced86dc16133dfed72ab8728d1d4bf8bc5225cb
MD5 52bbaa0c2c0fca215ea409dbbc8e6b76
BLAKE2b-256 fee4e1b06ecb6c10952ff32239d6afd282fa8fac28c1f9a05e78b73f44f76ab2

See more details on using hashes here.

File details

Details for the file pacssim-0.1.3b0-py3-none-any.whl.

File metadata

  • Download URL: pacssim-0.1.3b0-py3-none-any.whl
  • Upload date:
  • Size: 16.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/47.3.1 requests-toolbelt/0.9.1 tqdm/4.46.0 CPython/3.6.7

File hashes

Hashes for pacssim-0.1.3b0-py3-none-any.whl
Algorithm Hash digest
SHA256 39edf91acdc54399e56197c72402485a4b149c7cd6bbbaf87d597341d9bc5b20
MD5 168cca13f0036c0b81b71a2edea6b6cb
BLAKE2b-256 2601f439ac1467294615e66549d26393d5609c78e2aae152c369929376ea56c8

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page