Giter Club home page Giter Club logo

ycsb-cpp's Introduction

YCSB-cpp

Yahoo! Cloud Serving Benchmark(YCSB) written in C++. This is a fork of YCSB-C with some additions

  • Tail latency report using HdrHistogram_c
  • Modified the workload more similar to the original YCSB
  • Supported databases: LevelDB, RocksDB, LMDB, WiredTiger, SQLite

Build YCSB-cpp

Build with Makefile on POSIX

Initialize submodule and use make to build.

git clone https://github.com/ls4154/YCSB-cpp.git
cd YCSB-cpp
git submodule update --init
make

Databases to bind must be specified as build options. You may also need to add additional link flags (e.g., -lsnappy).

To bind LevelDB:

make BIND_LEVELDB=1

To build with additional libraries and include directories:

make BIND_LEVELDB=1 EXTRA_CXXFLAGS=-I/example/leveldb/include \
                    EXTRA_LDFLAGS="-L/example/leveldb/build -lsnappy"

Or modify config section in Makefile.

RocksDB build example:

EXTRA_CXXFLAGS ?= -I/example/rocksdb/include
EXTRA_LDFLAGS ?= -L/example/rocksdb -ldl -lz -lsnappy -lzstd -lbz2 -llz4

BIND_ROCKSDB ?= 1

Build with CMake on POSIX

git submodule update --init
mkdir build
cd build
cmake -DBIND_ROCKSDB=1 -DBIND_WIREDTIGER=1 -DBIND_LMDB=1 -DBIND_LEVELDB=1 -DWITH_SNAPPY=1 -DWITH_LZ4=1 -DWITH_ZSTD=1 ..
make

Build with CMake+vcpkg on Windows

see BUILD_ON_WINDOWS

Running

Load data with leveldb:

./ycsb -load -db leveldb -P workloads/workloada -P leveldb/leveldb.properties -s

Run workload A with leveldb:

./ycsb -run -db leveldb -P workloads/workloada -P leveldb/leveldb.properties -s

Load and run workload B with rocksdb:

./ycsb -load -run -db rocksdb -P workloads/workloadb -P rocksdb/rocksdb.properties -s

Pass additional properties:

./ycsb -load -db leveldb -P workloads/workloadb -P rocksdb/rocksdb.properties \
    -p threadcount=4 -p recordcount=10000000 -p leveldb.cache_size=134217728 -s

ycsb-cpp's People

Contributors

autopear avatar basicthinker avatar chriskjellqvist avatar kabu1204 avatar littlepig2013 avatar ls4154 avatar min-guk avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

ycsb-cpp's Issues

How to modify zipfian_const of the zipfian distribution?

Hello,
Can I modify the zipfian_const of zipfian without any side effect?
In addition, to modify zipfian_const, I change “key_chooser = new ScrambledZipfianGenerator(record_count_ + new_keys);” to “key_chooser = new ScrambledZipfianGenerator(0, record_count + new_keys - 1, zipfian_const);_” in void CoreWorkload::Init(const utils::Properties &p) { ... }
Is there any other way, such as modifying this parameter directly in the configuration file?
Thank you!

How to set zero lookup rate?

The meaning of "zero look rate" is the proportion of keys in queries that are not present in the database during the query process, Some paper, such as Elasticbf need this.

[Feature Request] Tail latency statistics

It seems that ls4154/YCSB-cpp does not support tail latency statistics?

Maybe it is a good idea to support P90/P95/P99 tail latency reporting since such metrics are widely used in KV store evaluation :)

HdrHistogram

Can someone provide some details of how to use Hdr-Histogram here, please?

How to get a fixed size key benchmark?

Hello,

Sorry if I am missing something here,

I wanted to run a benchmark on LevelDB with fixed size keys. I noticed the keys being outputted by BuildKeyName are of varying lengths from 22-24. I then tried the zero padding, but I found setting zero padding to, say, 20, which would make all the keys 24 bytes, results in kNotFound errors for all the padded keys, on workload A (I am using suggested workload A LevelDB command, on the README).

I was confused as to why this was happening, since presumably if I pad keys consistently in BuildKeyName, everything should still work as normal?

I would really appreciate any clarification!

Thank you!

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.