• Stars
    star
    204
  • Rank 185,865 (Top 4 %)
  • Language
    C++
  • License
    Other
  • Created almost 4 years ago
  • Updated 24 days ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A benchmark suite for serverless computing

ServerlessBench logo

ServerlessBench

A benchmark suite with serverless workloads.

Our work has been accepted by SoCC' 20. The paper is available at our WebSite: serverlessbench.systems

Info

Test Cases

Testcase1: varied resource needs

This test case features a CPU-intensive Alu application with two execution phases: in the first phase, it connects to S3 and requests for a number N (Load configuration phase); in the second phase, 100 threads are spawned to conduct arithmetic calculations and loop for N times (Compute phase).

The workload is basically built by aws sam-cli.

We provide two versions of the application to compare their needs on resources:

  • a together version (together.py), in which the application runs as a single serverless function;
  • a splitted version, in which the application is splitted into two serverless functions (keyDownloader.py and alu.py) in a function chain. Each of the function handling one of the execution phase, respectively.

keyDownloader downloads the file named "loopTime.txt", which stores a number as the loop time that alu function does the calculation. You need to modify the bucketName to the name of the bucket where you stores "loopTime.txt". defaultKey is the default name of the file "loopTime.txt"

Testcase2: Parallel composition

This test case features a CPU-intensive Alu application with parallelizable core handling logic. Three versions are presented to analyze parallelization in serverless computing:

  • no-parallel version (sequential.py), with no parallelization;
  • instance-parallel version (parallel.py, doAlu.py), with multiple function instances executing concurrently; You need to modify the AluFunctionArn to the arn of the alu function (doAlu.py)
  • in-function-parallel version (infunction.py), parallelization with multithreading in a single function.

The workload is basically built by AWS sam-cli

Testcase3: Long function chain

This test case includes the Array Sum application which is a serverless application with a configurable number of chained functions.

Two versions of the application are provided, implemented with the sequence function chain method (in Sequence-chained folder) and the nested function chain method (in Sequence-nested folder), respectively.

Testcase4: Application breakdown

This test case includes four real-world serverless applications: Image processing, Alexa skill, Online-compiling, and Data analysis.

Details of these applications are presented int the README of the test case.

Testcase5: Data transfer costs

This test case presents a Node.js serverless application which transfers images with different sizes (the payload size) between two functions.

We provide the application to be evaluated on three serverless platforms: OpenWhisk, Fn, AWS Lambda.

The chain on the three platforms are implemented with OpenWhisk’s Action Sequence, Fn flow, and AWS Step Functions, respectively.

As per the payload size restriction (32KB when we refer in May 2020) on AWS Lambda, for payload data larger than 32KB in AWS Lambda, the payload is uploaded to S3 in the first function before it finishes, and the second function download the data before it starts the handling logic.

Testcase6: Startup breakdown

This test case includes serverless functions with different language runtimes.

Testcase7: Sandbox comparision

A simple Hello function and a more complex serverless function are provided in C, Java, Python, Ruby, and Node.js.

These applications can be used to evaluate the startup performance with different language runtimes in different sandboxes.

Testcase8: Function size

The application consists of Python functions with varying package sizes, constructed by packing the handler codes with different numbers of dependency packages.

Specifically, four popular PyPI packages (mypy, numpy, django, and sphinx) of sizes between 10–23MB are added into the function package accumulatively, producing function packages of sizes: 22.7MB (with mypy), 44.1MB (with mypy and numpy), 54.4MB (with mypy, numpy, and django), and 72.6MB (with all four packages).

Testcase9: Concurrent startup

Simple Hello functions in C and Java are provided to evaluate the startup latencies when invoked concurrently.

Testcase10: Stateless costs

An ImageResize function is provided to analyze the impact of losing implicit states (e.g. JIT profiles) in serverless computing's "stateless" nature.

When requests are issued subsequently, the sandbox and JVM environment is shared across requests; when requests are issued concurrently, the requests are handled in auto-scaling manner and the implicit states are lost across requests.

Testcase11: Real world emulation

This test case consists of applications that emulate the real world applications. The emulation is based on traces from MS Azure. Details can be found in the subdirectory (see README in subdirectory).

Contact

Tianyi Yu, Qingyuan Liu, Dong Du, Yubin Xia, Haibo Chen.

Cite

To cite serverlessbench, please consider using the following bibtex:

@inproceedings{socc20-serverlessbench,
  author = {Yu, Tianyi and Liu, Qingyuan and Du, Dong and Xia, Yubin and Zang, Binyu and Lu, Ziqian and Yang, Pingchao and Qin, Chenggang and Chen, Haibo},
  title = {Characterizing Serverless Platforms with ServerlessBench},
  year = {2020},
  publisher = {Association for Computing Machinery},
  url = {https://doi.org/10.1145/3419111.3421280},
  doi = {10.1145/3419111.3421280},
  booktitle = {Proceedings of the ACM Symposium on Cloud Computing},
  series = {SoCC '20}
}

More Repositories

1

PowerInfer

High-speed Large Language Model Serving on PCs with Consumer-grade GPUs
C++
6,888
star
2

wukong

A graph-based distributed in-memory store that leverages efficient graph exploration to provide highly concurrent and low-latency queries over big linked data
C++
184
star
3

OS-Course-Lab

本仓库包含上海交通大学IPADS实验室设计的操作系统课程系列实验。每个实验放在独立分支。
142
star
4

xstore

Fast RDMA-based Ordered Key-Value Store using Remote Learned Cache
C++
107
star
5

Bamboo

Bamboo-7B Large Language Model
81
star
6

reef

REEF is a GPU-accelerated DNN inference serving system that enables instant kernel preemption and biased concurrent execution in GPU scheduling.
Cuda
78
star
7

drtmh

C++
64
star
8

DeSearch

a decentralized search engine with a decentralized verifiable dataflow
C
54
star
9

drtm

Fast In-memory Transaction Processing using RDMA and HTM
C++
50
star
10

HEDB

Towards A Secure Yet Maintainable Encrypted Database
C++
49
star
11

vegito

C++
48
star
12

krcore-artifacts

Ths is a fast RDMA abstraction layer that works both in the kernel and user-space.
Rust
44
star
13

disb

DISB is a new DNN inference serving benchmark with diverse workloads and models, as well as real-world traces.
C++
41
star
14

reef-artifacts

A GPU-accelerated DNN inference serving system that supports instant kernel preemption and biased concurrent execution in GPU scheduling.
C
38
star
15

gnnlab

A Factored System for Sample-based GNN Training over GPUs
Python
37
star
16

cocytus

Cocytus is an efficient and available in-memory K/V-store through hybrid erasure coding and replication
C
29
star
17

librdpma

C++
24
star
18

fgnn-artifacts

FGNN's artifact evaluation (EuroSys 2022)
Python
18
star
19

ugache

C++
16
star
20

dst

A decentralized scalar timestamp scheme
C++
13
star
21

wukong-cube

A distributed in-memory store for temporal knowledge graphs
C++
9
star
22

ugache-artifacts

The artifact evaluation of SOSP 2023 for UGache
C++
8
star
23

COREMU

COREMU is a scalable and portable parallel full system emulator built on Qemu. Currently, COREMU supports X86_64 and ARM (MPcore).
C
7
star
24

hackwrench

C++
6
star
25

eunomia

C++
5
star
26

wukong-g

Fast and Concurrent RDF Queries using RDMA-assisted GPU Graph Exploration
C++
4
star
27

SQLSolver

An automated prover that verifies the equivalence of SQL queries
Java
4
star
28

Kernel-TwinFunction

1
star