Skip to content

pmwkaa/ioarena

Folders and files

NameName
Last commit message
Last commit date

Latest commit

1e7c6c2 · Jun 6, 2022
Feb 7, 2021
Dec 3, 2021
Jun 5, 2022
Oct 29, 2017
Jan 18, 2016
Jun 6, 2020
Jun 18, 2018
Feb 17, 2020
Feb 7, 2021
Nov 5, 2015
Jun 4, 2021
Jul 2, 2019

Repository files navigation

ioarena - embedded storage benchmarking

ioarena is an utility designed for evaluating performance of embedded databases.

The goal of this project is to provide a standart and simple in use instrument for benchmarking, so any database developer or user can reference to or repeat obtained results.

Benchmarking methods: set, get, delete, iterate, batch, crud

Sync modes: sync, lazy, no-sync

WAL modes: indef (per engine default), wal-on, wal-off

Supported databases: rocksdb, leveldb, forestdb, upscaledb, lmdb, mdbx, wiredtiger, sophia, sqlite3, iowow, unqlite

New drivers or any kind of enhancements are very welcome!

Usage

IOARENA (embedded storage benchmarking)

usage: ioarena [hDBCpnkvmlrwic]
  -D <database_driver>
     choices: sophia, leveldb, rocksdb, wiredtiger, forestdb, lmdb, mdbx, sqlite3, iowow, dummy, unqlite
  -B <benchmarks>
     choices: set, get, delete, iterate, batch, crud
  -o <driver option>                 (default: none)
  -m <sync_mode>                     (default: lazy)
     choices: sync, lazy, nosync
  -l <wal_mode>                      (default: indef)
     choices: indef, walon, waloff
  -C <name-prefix> generate csv      (default: (null))
  -p <path> for temporaries          (default: ./_ioarena)
  -n <number_of_operations>          (default: 1000000)
  -k <key_size>                      (default: 16)
  -v <value_size>                    (default: 32)
  -c continuous completing mode      (default: no)
  -r <number_of_read_threads>        (default: 0)
     `zero` to use single main/common thread
  -w <number_of_crud/write_threads>  (default: 0)
     `zero` to use single main/common thread
  -i ignore key-not-found error      (default: no)
  -h                                 help

example:
   ioarena -m sync -D sophia -B crud -n 100000000

Build

git clone --recursive https://github.com/pmwkaa/ioarena

cmake is required for building.

To enable a specific database driver, pass -DENABLE_NAME=ON to cmake. If a specified database is not installed in system, it will be build from db/name directory.

mkdir build
cd build
cmake .. -DENABLE_ROCKSDB=ON
make
src/ioarena -h

Authors

Name Contribution
Dmitry Simonenko @pmwkaa Original author.
Leonid Yuriev @erthink Multithreading and isolation from the testcases the interface of a DB drivers cardinally redesigned, it is clear and intelligible now.
Egor Zyryanov @er0p Added support for SQLite, EJDB, Vedis.
Adamansky Anton @adamansky Added support for IOWOW.
Alberto Mardegan @mardy Added support for Upscaledb.

About

Embedded storage benchmarking tool

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published