Giter Club home page Giter Club logo

vdpod's Introduction

Vdpod

The vdpod is a container-based IO workload generator that is used as a performance testing tool that can be deployed on the Openshift/Kubernetes Platforms and is currently used within Red Hat benchmark-runner which also supports VMs & Kata containers, this is a simplified version that can be run as a standalone pod without any dependencies or special requirements.

Usage:

The following variables will contain the tests list information separated by a comma, the tests entered here will run consecutively and return a CSV results file:

BLOCK_SIZES - can be either an application pattern (see applications patterns paragraph),block size , or a cache test that can be defined by adding " _cache" after the block size e.g "64_cache".
IO_OPERATION - can be either read, write or an application pattern if one was used in the BLOCK_SIZES variables.
IO_THREADS - the number of IO threads to run for every workload , more threads = more IOPS , but it will also yield higher latency.
FILES_IO - can be either random, sequential or an application pattern if one was used in the BLOCK_SIZES variables.
IO_RATE - can be any integer value for limiting the amount of IOPS , or "max" for no limit.
MIX_PRECENTAGE - mix of read/write precentage, meaning if IO_OPERATION = write , and MIX_PRECENTAGE=30 , that will results in a workload that does 30% writes and 60% reads of the the selected BLOCK_SIZES,

Tests settings:

    - name: BLOCK_SIZES
      value: "oltp1,64,8,4_cache"
    - name: IO_OPERATION
      value: "oltp1,write,read"
    - name: IO_THREADS
      value: "10,5,12,32"
    - name: FILES_IO
      value: "oltp1,random,sequential,random"
    - name: IO_RATE
      value: "max,2000,max"
    - name: MIX_PRECENTAGE
      value: ",,50,"

the above example will execute the following 4 tests:

  1. OLTP1 workload with 10 concurrent threads.
  2. 64KB block size - doing 100% random writes, running with 5 concurrent threads, and limited to 2000 IOPS.
  3. 8KB block size - doing 50% sequential reads and 50% sequential writes, and running with 12 concurrent IO threads.
  4. 4KB block size - doing 100% random cache reads and running with 32 concurrent IO threads

Global settings:

DURATION - run time duration per test in seconds.
PAUSE - pause duration in seconds after every test.
WARMUP - warmup duration is an additive to the DURATION, and will be added to all tests, warmup time statistics will be excluded from the CSV results file.
FILES_SELECTION - #This parameter allows you to select directories and files for processing either sequentially or randomly - value can be either random or sequential
COMPRESSION_RATIO - this paramater will determine how compressible the generted IO will be ratio is 1:X e.g 2 = 50% compressible RUN_FILLUP - will fill the workset with random data before starting the tests.

Data set settings:

DIRECTORIES - how many directories to create.
FILES_PER_DIRECTORY - how many files create in each directory.
SIZE_PER_FILE - size in MB for each file created.
for example - when setting DIRECTORIES=10, FILES_PER_DIRECTORY=5, and SIZE_PER_FILE=20, the total work set size will be 30TB.

Applications patterns:

OLTP1 - mail applications, online transaction processing.
OLTP2 - small Oracle applications, small weight transactions.
OLTPHW -large Oracle applications, heavy weight transactions.
ODSS2 - data warehouse applications, backup applications.
ODSS128 - streaming applications, backup applications.

more info about application patterns can be found here.

How to run:.

if you have quay.io access all you need is the vdpod.yaml file, of course, you will need to set your wanted tests and storage class:.

spec:
  accessModes:
    - ReadWriteOnce
  storageClassName: ocs-storagecluster-ceph-rbd
  resources:
    requests:
      storage: 64Gi

note that in the above example I used the ceph storage class..
you may also run the pod locally with podman, here is an example of how to run it locally with podman with a few defined tests:.

podman run -v /workload:/workload -e BLOCK_SIZES=oltp1,oltp2,oltphw,odss2,odss128,4_cache,64_cache,4,64,4_cache,64_cache,4,64,64 -e IO_OPERATION=oltp1,oltp2,oltphw,odss2,odss128,read,read,read,read,write,write,write,write,read,write -e IO_THREADS=5,5,5,5,5,4,4,2,2,4,4,2,2,5,5 -e FILES_IO=oltp1,oltp2,oltphw,odss2,odss128,random,random,random,random,random,random,random,random,random,random -e IO_RATE=max,max,max,max,max,max,max,max,max,max,max,max,max,max,max -e MIX_PRECENTAGE= -e DURATION=20 -e PAUSE=0 -e WARMUP=0 -e FILES_SELECTION=random -e COMPRESSION_RATIO=2 -e RUN_FILLUP=no -e SIZE_PER_FILE=10 -e DIRECTORIES=10 -e FILES_PER_DIRECTORY=3 -v /root/vdpod:/vdpod/config -it quay.io/bbenshab/vdpod:latest

Results:

The CSV results table will show on the pods logs once the all tests were completed - e.g oc logs pod_name

vdpod's People

Contributors

bbenshab avatar

Watchers

 avatar  avatar

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.