X-Git-Url: https://gerrit.opnfv.org/gerrit/gitweb?a=blobdiff_plain;f=src%2Fceph%2Fsrc%2Ftest%2Fbench%2Fsmall_io_bench_rbd.cc;fp=src%2Fceph%2Fsrc%2Ftest%2Fbench%2Fsmall_io_bench_rbd.cc;h=0000000000000000000000000000000000000000;hb=7da45d65be36d36b880cc55c5036e96c24b53f00;hp=ba7071ed3833a040ceb4a9be63c44b63ee848473;hpb=691462d09d0987b47e112d6ee8740375df3c51b2;p=stor4nfv.git diff --git a/src/ceph/src/test/bench/small_io_bench_rbd.cc b/src/ceph/src/test/bench/small_io_bench_rbd.cc deleted file mode 100644 index ba7071e..0000000 --- a/src/ceph/src/test/bench/small_io_bench_rbd.cc +++ /dev/null @@ -1,200 +0,0 @@ -// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*- - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "common/Formatter.h" - -#include "bencher.h" -#include "rbd_backend.h" -#include "detailed_stat_collector.h" -#include "distribution.h" - -namespace po = boost::program_options; -using namespace std; - -int main(int argc, char **argv) -{ - po::options_description desc("Allowed options"); - desc.add_options() - ("help", "produce help message") - ("num-concurrent-ops", po::value()->default_value(10), - "set number of concurrent ops") - ("num-images", po::value()->default_value(2), - "set number of rbd images to use") - ("image-size", po::value()->default_value(4096), - "set image size in megabytes") - ("order", po::value()->default_value(22), - "set log_2(object size)") - ("io-size", po::value()->default_value(4<<10), - "set io size") - ("write-ratio", po::value()->default_value(0.25), - "set ratio of read to write") - ("duration", po::value()->default_value(0), - "set max duration, 0 for unlimited") - ("max-ops", po::value()->default_value(0), - "set max ops, 0 for unlimited") - ("seed", po::value(), - "seed") - ("ceph-client-id", po::value()->default_value("admin"), - "set ceph client id") - ("pool-name", po::value()->default_value("data"), - "set pool") - ("op-dump-file", po::value()->default_value(""), - "set file for dumping op details, omit for stderr") - ("offset-align", po::value()->default_value(4096), - "align offset by") - ("sequential", po::value()->default_value(false), - "use sequential access pattern") - ("disable-detailed-ops", po::value()->default_value(false), - "don't dump per op stats") - ; - - po::variables_map vm; - po::store(po::parse_command_line(argc, argv, desc), vm); - po::notify(vm); - - if (vm.count("help")) { - cout << desc << std::endl; - return 1; - } - - string prefix; - char hostname_cstr[100]; - gethostname(hostname_cstr, 100); - stringstream hostpid; - hostpid << hostname_cstr << getpid() << "-"; - prefix = hostpid.str(); - - set image_names; - for (unsigned i = 0; i < vm["num-images"].as(); - ++i) { - stringstream name; - name << prefix << "-image_" << i; - image_names.insert(name.str()); - } - - rngen_t rng; - if (vm.count("seed")) - rng = rngen_t(vm["seed"].as()); - - set > ops; - ops.insert(make_pair(vm["write-ratio"].as(), Bencher::WRITE)); - ops.insert(make_pair(1-vm["write-ratio"].as(), Bencher::READ)); - - librados::Rados rados; - librados::IoCtx ioctx; - int r = rados.init(vm["ceph-client-id"].as().c_str()); - if (r < 0) { - cerr << "error in init r=" << r << std::endl; - return -r; - } - r = rados.conf_read_file(NULL); - if (r < 0) { - cerr << "error in conf_read_file r=" << r << std::endl; - return -r; - } - r = rados.conf_parse_env(NULL); - if (r < 0) { - cerr << "error in conf_parse_env r=" << r << std::endl; - return -r; - } - r = rados.connect(); - if (r < 0) { - cerr << "error in connect r=" << r << std::endl; - return -r; - } - r = rados.ioctx_create(vm["pool-name"].as().c_str(), ioctx); - if (r < 0) { - cerr << "error in ioctx_create r=" << r << std::endl; - return -r; - } - - ostream *detailed_ops = 0; - ofstream myfile; - if (vm["disable-detailed-ops"].as()) { - detailed_ops = 0; - } else if (vm["op-dump-file"].as().size()) { - myfile.open(vm["op-dump-file"].as().c_str()); - detailed_ops = &myfile; - } else { - detailed_ops = &cerr; - } - - librbd::RBD rbd; - { - map > images; - int order = vm["order"].as(); - uint64_t image_size = ((uint64_t)vm["image-size"].as()) << 20; - for (set::const_iterator i = image_names.begin(); - i != image_names.end(); ++i) { - r = rbd.create(ioctx, i->c_str(), image_size, &order); - if (r < 0) { - cerr << "error creating image " << *i << " r=" << r << std::endl; - return -r; - } - ceph::shared_ptr image(new librbd::Image()); - r = rbd.open(ioctx, *image, i->c_str()); - if (r < 0) { - cerr << "error opening image " << *i << " r=" << r << std::endl; - return -r; - } - images[*i] = image; - } - - Distribution< - boost::tuple > *gen = 0; - if (vm["sequential"].as()) { - std::cout << "Using Sequential generator" << std::endl; - gen = new SequentialLoad( - image_names, - image_size, - vm["io-size"].as(), - new WeightedDist(rng, ops) - ); - } else { - std::cout << "Using random generator" << std::endl; - gen = new FourTupleDist( - new RandomDist(rng, image_names), - new Align( - new UniformRandom( - rng, - 0, - image_size - vm["io-size"].as()), - vm["offset-align"].as() - ), - new Uniform(vm["io-size"].as()), - new WeightedDist(rng, ops) - ); - } - - Bencher bencher( - gen, - new DetailedStatCollector(1, new JSONFormatter, detailed_ops, &cout), - new RBDBackend(&images), - vm["num-concurrent-ops"].as(), - vm["duration"].as(), - vm["max-ops"].as()); - - bencher.run_bench(); - } - - for (set::const_iterator i = image_names.begin(); - i != image_names.end(); ++i) { - rbd.remove(ioctx, i->c_str()); - } - rados.shutdown(); - if (vm["op-dump-file"].as().size()) { - myfile.close(); - } - return 0; -}