Coder Social home page Coder Social logo

vhive-serverless / vswarm Goto Github PK

View Code? Open in Web Editor NEW
39.0 6.0 19.0 462.02 MB

A suite of representative serverless cloud-agnostic (i.e., dockerized) benchmarks

License: MIT License

JavaScript 3.37% Dockerfile 5.97% Python 43.99% Shell 3.56% Makefile 9.78% Go 29.29% C++ 0.36% Java 1.82% C# 1.67% HTML 0.19%
serverless benchmarking vhive vswarm knative knative-serving knative-eventing faas function-as-a-service

vswarm's Introduction

License: MIT

vSwarm - Serverless Benchmarking Suite

Welcome! vSwarm is a collection of ready-to-run serverless benchmarks, each typically consisting of a number of interconnected serverless functions, and with a general focus on realistic data-intensive workloads.

This suite is part of the vHive Ecosystem. Its a turnkey and fully tested solution meant to used in conjunction with vHive, and is compatible with all technologies that it supports, namely, containers, Firecracker and gVisor microVMs. The majority of benchmarks support distributed tracing with Zipkin which traces both the infra components and the user functions.

In addition to the multi-function benchmarks, the vSwarm suite contains a set of standalone functions, which support both x86 and arm64 architectures. Most of the standalone functions are compatible with vSwarm-u, which allows to run them in the gem5 cycle-accurate full-system CPU simulator and study microarchitectural implications of serverless computing. the state-of-the-art research platform for system-and microarchitecture. The standalone functions can therefore be used as microbenchmarks to first pin-point microarchitectural bottlenecks in execution of serverless workloads using Top-Down analysis (tool) on real hardware and then further explore and optimize these bottlenecks using the gem5 cycle-accurate simulator.

Directory Structure

  • benchmarks contains all of the available benchmark source code and manifests.
  • utils contains utilities for use within serverless functions, e.g. the tracing module.
  • tools is for command-line tools and services useful outside of serverless functions, such as deployment or invocation.
  • runner is for setting up self-hosted GitHub Actions runners.
  • docs contains additional documentation on a number of relevant topics.

Summary of Benchmarks

  • 2 microbenchmarks for benchmarking chained functions performance, data transfer performance in various patterns (pipeline, scatter, gather), and using different communication medium (AWS S3 and inline transfers)
  • 8 real-world benchmarks
  • 25 standalone functions

Refer to this document for more detail on the differences and supported features of each benchmark.

Running Benchmarks

Details on each specific benchmark can be found in their relative subfolders. Every benchmark can be run on a knative cluster, and most can also be run locally with docker-compose. Please see the running benchmarks document for detailed instructions on how to run a benchmark locally or on a cluster.

We have a detailed outline on the benchmarking methodology used, which you can find here.

Contributing a Benchmark

We openly welcome any contributions, so please get in touch if you're interested!

Bringing up a benchmark typically consists of dockerizing the benchmark functions to deploy and test them with docker-compose, then integrating the functions with knative, and including the benchmark in the CI/CD pipeline. Please refer to our documentation on bringing up new benchmarks for more guidance.

We also have some basic requirements for contributions the the repository, which are described in detail in our Contributing to vHive document.

License and copyright

vSwarm is free. We publish the code under the terms of the MIT License that allows distribution, modification, and commercial use. This software, however, comes without any warranty or liability.

The software is maintained by the vHive Ecosystem, EASE lab the University of Edinburgh, Stanford Systems and Networking Research.

Maintainers

  • Invoker, timeseriesdb, runners - Dmitrii Ustiugov: GitHub, twitter, web page
  • Corral Benchmark - Dmitrii Ustiugov: GitHub, twitter, web page
  • Map-Reduce, Stacking-training and Tuning-halving - Alan Nair GitHub
  • Chained Functions and Video analytics - Shyam Jesalpura GitHub
  • GG benchmarks - Shyam Jesalpura GitHub
  • Standalone functions - David Schall GitHub,web page
  • Multi cloud containers (lambda) - Alan Nair GitHub

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.