Skip to content

Ying-Yuan07/CNSBench

 
 

Repository files navigation

About

CNSBench is a tool that enables benchmarking storage in cloud native environments. It does so by orchestrating the execution of one or more I/O workloads along with control workloads operating on the same storage system as the I/O workloads. The I/O workloads are generated by instantiating standard Kubernetes resources such as pods or volumes. In other words, any application that can be run on Kubernetes could be used to generate an I/O workload.

CNSBench has been tested on Kubernetes v1.20.0.

Download and Install

Clone CNSBench with the Workload Library:

git clone [email protected]:CNSBench/CNSBench.git --recurse-submodules

To install either do

make deploy-from-manifests

or

kubectl apply -f deploy/cnsbench_operator.yaml
cd workload-library && sh install.sh && cd ..

This will install the custom resource definitions and begin the CNSBench controller and default output collector pods. CNSBench uses the cnsbench-system namespace for the controller and related resources and the cnsbench-library namespace for workload definitions.

Usage

If minikube is installed, running sh minikube-test.sh will start minikube, install CNSBench, setup a local storage provider, and run a sample benchmark.

Running these steps manually is also easy:

asciicast

See the quickstart guide or the other documentation for more details.

Paper

FAST 2021 presentation

Abstract

Modern hybrid cloud infrastructures require software to be easily portable between heterogeneous clusters. Application containerization is a proven technology to provide this portability for the functionalities of an application. However, to ensure performance portability, dependable verification of a cluster’s performance under realistic workloads is required. Such verification is usually achieved through benchmarking the target environment and its storage in particular, as I/O is often the slowest component in an application. Alas, existing storage benchmarks are not suitable to generate cloud native workloads as they do not generate any storage control operations (e.g., volume or snapshot creation), cannot easily orchestrate a high number of simultaneously running distinct workloads, and are limited in their ability to dynamically change workload characteristics during a run.

In this paper, we present the design and prototype for the first-ever Cloud Native Storage Benchmark - CNSBench. CNSBench treats control operations as first-class citizens and allows to easily combine traditional storage benchmark workloads with user-defined control operation workloads. As CNSBench is a cloud native application itself, it natively supports orchestration of different control and I/O workload combinations at scale. We built a prototype of CNSBench for Kubernetes, leveraging several existing containerized storage benchmarks for data and meta-data I/O generation. We demonstrate CNSBench’s usefulness with case studies of Ceph and OpenEBS, two popular storage providers for Kubernetes, uncovering and analyzing previously unknown performance characteristics.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Go 90.2%
  • Makefile 4.7%
  • Shell 3.3%
  • Dockerfile 1.8%