Separeate main from bench functionality to allow cusomizations
Summary: Isolate db_bench functionality from main so custom benchmark code can be written and managed Test Plan: Tested commands ./build_tools/regression_build_test.sh ./db_bench --db=/tmp/rocksdbtest-12321/dbbench --stats_interval_seconds=1 --num=1000 ./db_bench --db=/tmp/rocksdbtest-12321/dbbench --stats_interval_seconds=1 --num=1000 --reads=500 --writes=500 ./db_bench --db=/tmp/rocksdbtest-12321/dbbench --stats_interval_seconds=1 --num=1000 --merge_keys=100 --numdistinct=100 --num_column_families=3 --num_hot_column_families=1 ./db_bench --stats_interval_seconds=1 --num=1000 --bloom_locality=1 --seed=5 --threads=5 ./db_bench --duration=60 --value_size=50 --seek_nexts=10 --reverse_iterator=true --usee_uint64_comparator=true --batch-size=5 ./db_bench --duration=60 --value_size=50 --seek_nexts=10 --reverse_iterator=true --use_uint64_comparator=true --batch_size=5 ./db_bench --duration=60 --value_size=50 --seek_nexts=10 --reverse_iterator=true --usee_uint64_comparator=true --batch-size=5 Test Results - https://phabricator.fb.com/P56130387 Additional tests for: ./db_bench --duration=60 --value_size=50 --seek_nexts=10 --reverse_iterator=true --use_uint64_comparator=true --batch_size=5 --key_size=8 --merge_operator=put ./db_bench --stats_interval_seconds=1 --num=1000 --bloom_locality=1 --seed=5 --threads=5 --merge_operator=uint64add Results: https://phabricator.fb.com/P56130607 Reviewers: yhchiang, sdong Reviewed By: sdong Subscribers: dhruba Differential Revision: https://reviews.facebook.net/D53991
This commit is contained in:
parent
1c868d6848
commit
7bd284c374
4
Makefile
4
Makefile
@ -242,6 +242,8 @@ VALGRIND_VER := $(join $(VALGRIND_VER),valgrind)
|
|||||||
|
|
||||||
VALGRIND_OPTS = --error-exitcode=$(VALGRIND_ERROR) --leak-check=full
|
VALGRIND_OPTS = --error-exitcode=$(VALGRIND_ERROR) --leak-check=full
|
||||||
|
|
||||||
|
BENCHTOOLOBJECTS = $(BENCH_SOURCES:.cc=.o) $(LIBOBJECTS) $(TESTUTIL)
|
||||||
|
|
||||||
TESTS = \
|
TESTS = \
|
||||||
db_test \
|
db_test \
|
||||||
db_iter_test \
|
db_iter_test \
|
||||||
@ -713,7 +715,7 @@ $(LIBRARY): $(LIBOBJECTS)
|
|||||||
$(AM_V_AR)rm -f $@
|
$(AM_V_AR)rm -f $@
|
||||||
$(AM_V_at)$(AR) $(ARFLAGS) $@ $(LIBOBJECTS)
|
$(AM_V_at)$(AR) $(ARFLAGS) $@ $(LIBOBJECTS)
|
||||||
|
|
||||||
db_bench: db/db_bench.o $(LIBOBJECTS) $(TESTUTIL)
|
db_bench: tools/db_bench.o $(BENCHTOOLOBJECTS)
|
||||||
$(AM_LINK)
|
$(AM_LINK)
|
||||||
|
|
||||||
cache_bench: util/cache_bench.o $(LIBOBJECTS) $(TESTUTIL)
|
cache_bench: util/cache_bench.o $(LIBOBJECTS) $(TESTUTIL)
|
||||||
|
9
include/rocksdb/db_bench_tool.h
Normal file
9
include/rocksdb/db_bench_tool.h
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
// Copyright (c) 2013-present, Facebook, Inc. All rights reserved.
|
||||||
|
// This source code is licensed under the BSD-style license found in the
|
||||||
|
// LICENSE file in the root directory of this source tree. An additional grant
|
||||||
|
// of patent rights can be found in the PATENTS file in the same directory.
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
namespace rocksdb {
|
||||||
|
int db_bench_tool(int argc, char** argv);
|
||||||
|
} // namespace rocksdb
|
5
src.mk
5
src.mk
@ -179,6 +179,9 @@ MOCK_SOURCES = \
|
|||||||
table/mock_table.cc \
|
table/mock_table.cc \
|
||||||
util/mock_env.cc
|
util/mock_env.cc
|
||||||
|
|
||||||
|
BENCH_SOURCES = \
|
||||||
|
tools/db_bench_tool.cc
|
||||||
|
|
||||||
TEST_BENCH_SOURCES = \
|
TEST_BENCH_SOURCES = \
|
||||||
third-party/gtest-1.7.0/fused-src/gtest/gtest-all.cc \
|
third-party/gtest-1.7.0/fused-src/gtest/gtest-all.cc \
|
||||||
db/auto_roll_logger_test.cc \
|
db/auto_roll_logger_test.cc \
|
||||||
@ -189,7 +192,7 @@ TEST_BENCH_SOURCES = \
|
|||||||
db/comparator_db_test.cc \
|
db/comparator_db_test.cc \
|
||||||
db/corruption_test.cc \
|
db/corruption_test.cc \
|
||||||
db/cuckoo_table_db_test.cc \
|
db/cuckoo_table_db_test.cc \
|
||||||
db/db_bench.cc \
|
tools/db_bench_tool.cc \
|
||||||
db/dbformat_test.cc \
|
db/dbformat_test.cc \
|
||||||
db/db_iter_test.cc \
|
db/db_iter_test.cc \
|
||||||
db/db_test.cc \
|
db/db_test.cc \
|
||||||
|
23
tools/db_bench.cc
Normal file
23
tools/db_bench.cc
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
// Copyright (c) 2013-present, Facebook, Inc. All rights reserved.
|
||||||
|
// This source code is licensed under the BSD-style license found in the
|
||||||
|
// LICENSE file in the root directory of this source tree. An additional grant
|
||||||
|
// of patent rights can be found in the PATENTS file in the same directory.
|
||||||
|
//
|
||||||
|
// Copyright (c) 2011 The LevelDB Authors. All rights reserved.
|
||||||
|
// Use of this source code is governed by a BSD-style license that can be
|
||||||
|
// found in the LICENSE file. See the AUTHORS file for names of contributors.
|
||||||
|
|
||||||
|
#ifndef __STDC_FORMAT_MACROS
|
||||||
|
#define __STDC_FORMAT_MACROS
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef GFLAGS
|
||||||
|
#include <cstdio>
|
||||||
|
int main() {
|
||||||
|
fprintf(stderr, "Please install gflags to run rocksdb tools\n");
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
#include <rocksdb/db_bench_tool.h>
|
||||||
|
int main(int argc, char** argv) { rocksdb::db_bench_tool(argc, argv); }
|
||||||
|
#endif // GFLAGS
|
@ -11,14 +11,6 @@
|
|||||||
#define __STDC_FORMAT_MACROS
|
#define __STDC_FORMAT_MACROS
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef GFLAGS
|
|
||||||
#include <cstdio>
|
|
||||||
int main() {
|
|
||||||
fprintf(stderr, "Please install gflags to run rocksdb tools\n");
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
#else
|
|
||||||
|
|
||||||
#ifdef NUMA
|
#ifdef NUMA
|
||||||
#include <numa.h>
|
#include <numa.h>
|
||||||
#include <numaif.h>
|
#include <numaif.h>
|
||||||
@ -76,6 +68,7 @@ int main() {
|
|||||||
#include <io.h> // open/close
|
#include <io.h> // open/close
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
namespace {
|
||||||
using GFLAGS::ParseCommandLineFlags;
|
using GFLAGS::ParseCommandLineFlags;
|
||||||
using GFLAGS::RegisterFlagValidator;
|
using GFLAGS::RegisterFlagValidator;
|
||||||
using GFLAGS::SetUsageMessage;
|
using GFLAGS::SetUsageMessage;
|
||||||
@ -521,7 +514,6 @@ DEFINE_uint64(transaction_lock_timeout, 100,
|
|||||||
DEFINE_bool(compaction_measure_io_stats, false,
|
DEFINE_bool(compaction_measure_io_stats, false,
|
||||||
"Measure times spents on I/Os while in compactions. ");
|
"Measure times spents on I/Os while in compactions. ");
|
||||||
|
|
||||||
namespace {
|
|
||||||
enum rocksdb::CompressionType StringToCompressionType(const char* ctype) {
|
enum rocksdb::CompressionType StringToCompressionType(const char* ctype) {
|
||||||
assert(ctype);
|
assert(ctype);
|
||||||
|
|
||||||
@ -541,7 +533,7 @@ enum rocksdb::CompressionType StringToCompressionType(const char* ctype) {
|
|||||||
return rocksdb::kZSTDNotFinalCompression;
|
return rocksdb::kZSTDNotFinalCompression;
|
||||||
|
|
||||||
fprintf(stdout, "Cannot parse compression type '%s'\n", ctype);
|
fprintf(stdout, "Cannot parse compression type '%s'\n", ctype);
|
||||||
return rocksdb::kSnappyCompression; //default value
|
return rocksdb::kSnappyCompression; // default value
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string ColumnFamilyName(size_t i) {
|
std::string ColumnFamilyName(size_t i) {
|
||||||
@ -553,7 +545,6 @@ std::string ColumnFamilyName(size_t i) {
|
|||||||
return std::string(name);
|
return std::string(name);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} // namespace
|
|
||||||
|
|
||||||
DEFINE_string(compression_type, "snappy",
|
DEFINE_string(compression_type, "snappy",
|
||||||
"Algorithm to use to compress the database");
|
"Algorithm to use to compress the database");
|
||||||
@ -764,7 +755,6 @@ enum RepFactory {
|
|||||||
kCuckoo
|
kCuckoo
|
||||||
};
|
};
|
||||||
|
|
||||||
namespace {
|
|
||||||
enum RepFactory StringToRepFactory(const char* ctype) {
|
enum RepFactory StringToRepFactory(const char* ctype) {
|
||||||
assert(ctype);
|
assert(ctype);
|
||||||
|
|
||||||
@ -782,7 +772,6 @@ enum RepFactory StringToRepFactory(const char* ctype) {
|
|||||||
fprintf(stdout, "Cannot parse memreptable %s\n", ctype);
|
fprintf(stdout, "Cannot parse memreptable %s\n", ctype);
|
||||||
return kSkipList;
|
return kSkipList;
|
||||||
}
|
}
|
||||||
} // namespace
|
|
||||||
|
|
||||||
static enum RepFactory FLAGS_rep_factory;
|
static enum RepFactory FLAGS_rep_factory;
|
||||||
DEFINE_string(memtablerep, "skip_list", "");
|
DEFINE_string(memtablerep, "skip_list", "");
|
||||||
@ -834,6 +823,7 @@ static const bool FLAGS_deletepercent_dummy __attribute__((unused)) =
|
|||||||
static const bool FLAGS_table_cache_numshardbits_dummy __attribute__((unused)) =
|
static const bool FLAGS_table_cache_numshardbits_dummy __attribute__((unused)) =
|
||||||
RegisterFlagValidator(&FLAGS_table_cache_numshardbits,
|
RegisterFlagValidator(&FLAGS_table_cache_numshardbits,
|
||||||
&ValidateTableCacheNumshardbits);
|
&ValidateTableCacheNumshardbits);
|
||||||
|
} // namespace
|
||||||
|
|
||||||
namespace rocksdb {
|
namespace rocksdb {
|
||||||
|
|
||||||
@ -4072,9 +4062,7 @@ class Benchmark {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace rocksdb
|
int db_bench_tool(int argc, char** argv) {
|
||||||
|
|
||||||
int main(int argc, char** argv) {
|
|
||||||
rocksdb::port::InstallStackTraceHandler();
|
rocksdb::port::InstallStackTraceHandler();
|
||||||
SetUsageMessage(std::string("\nUSAGE:\n") + std::string(argv[0]) +
|
SetUsageMessage(std::string("\nUSAGE:\n") + std::string(argv[0]) +
|
||||||
" [OPTIONS]...");
|
" [OPTIONS]...");
|
||||||
@ -4143,5 +4131,4 @@ int main(int argc, char** argv) {
|
|||||||
benchmark.Run();
|
benchmark.Run();
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
} // namespace rocksdb
|
||||||
#endif // GFLAGS
|
|
Loading…
Reference in New Issue
Block a user