Git Product home page Git Product logo

ycsb's Introduction

YCSB

Build Status

Links

Getting Started

  1. Download the latest release of YCSB:

    curl -O --location https://github.com/brianfrankcooper/YCSB/releases/download/0.17.0/ycsb-0.17.0.tar.gz
    tar xfvz ycsb-0.17.0.tar.gz
    cd ycsb-0.17.0
  2. Set up a database to benchmark. There is a README file under each binding directory.

  3. Run YCSB command.

    On Linux:

    bin/ycsb.sh load basic -P workloads/workloada
    bin/ycsb.sh run basic -P workloads/workloada

    On Windows:

    bin/ycsb.bat load basic -P workloads\workloada
    bin/ycsb.bat run basic -P workloads\workloada

Running the ycsb command without any argument will print the usage.

See https://github.com/brianfrankcooper/YCSB/wiki/Running-a-Workload for a detailed documentation on how to run a workload.

See https://github.com/brianfrankcooper/YCSB/wiki/Core-Properties for the list of available workload properties.

Building from source

YCSB requires the use of Maven 3; if you use Maven 2, you may see errors such as these.

To build the full distribution, with all database bindings:

mvn clean package

To build a single database binding:

mvn -pl site.ycsb:mongodb-binding -am clean package

Running multiple instances and latency percentiles

In general, you shall be interested in 99% percentile (P99) of the latency distribution, and the rest of the tail - 99.9%, 99.99%, 99.999%. The difference between the amount of requests that will be observed by a user that fall into 95% (P95) percentile and 99% percentile may be sufficiently large.

For example, see "How Many Nines?" at https://bravenewgeek.com/everything-you-know-about-latency-is-wrong/. The formula to calculate probability of how many clients will observe a specific percentile is:

Probability_to_observe = 1 - Percentile ^ Requests

That is why almost 30% of the users will observe latency worse than P99 just by loading the default google.com web page:

1 - 0.99 ^ 30 = 0.27

Remember, that

  • latencies percentiles can't be averaged. Don't fall into this trap. Neither latency averages, nor P99 averages do not make any sense.

If you run multiple loaders dump result histograms with:

-p hdrhistogram.fileoutput=true
-p hdrhistogram.output.path=file.hdr

merge them manually and extract required percentiles out of the joined result.

Remember that running multiple workloads may distort original workloads distributions they were intended to produce.

Merging HDR histogram percentiles

HdrHistogram can serialize its data to HDR files. Use CLI tool to do different operations with your saved histograms https://github.com/nitsanw/HdrLogProcessing.

You shall be interested in 3 functions:

  • Union - to combine result histograms
  • Summarize - to extract latency percentiles
  • An ability to print the result into the CSV file and extract tags

To extract HDR content into CSV file format use from https://github.com/HdrHistogram/HdrHistogram/:

java -cp HdrHistogram-2.1.9.jar org.HdrHistogram.HistogramLogProcessor -i file.hdr -o output_${tag}.csv -csv -tag ${tag}

ycsb's People

Contributors

allanbank avatar bigbes avatar brianfrankcooper avatar busbey avatar cmatser avatar cmccoy avatar danielpoltx avatar daschl avatar gse89 avatar jaemyoun avatar jasontedor avatar jodoma avatar johanoskarsson avatar jyemin avatar kirill-vlasov avatar kruthar avatar lehmannro avatar manolama avatar mbrukman avatar nitsanw avatar risdenk avatar seybi87 avatar sitano avatar steffenfriedrich avatar stfeng2 avatar sudiptodas avatar toddlipcon avatar uncle-betty avatar westonplatter avatar yuyantingzero avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 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.