Driver and config for basho_bench testing.
This commit is contained in:
parent
54c5158490
commit
4076a1923c
2 changed files with 188 additions and 0 deletions
91
tools/basho_bench_driver_wterl.erl
Normal file
91
tools/basho_bench_driver_wterl.erl
Normal file
|
@ -0,0 +1,91 @@
|
|||
-module(basho_bench_driver_wterl).
|
||||
|
||||
-record(state, { connection, uri }).
|
||||
|
||||
-export([new/1,
|
||||
run/4]).
|
||||
|
||||
-include_lib("basho_bench/include/basho_bench.hrl").
|
||||
|
||||
|
||||
%% ====================================================================
|
||||
%% API
|
||||
%% ====================================================================
|
||||
|
||||
new(1) ->
|
||||
%% Make sure wterl is available
|
||||
case code:which(wterl) of
|
||||
non_existing ->
|
||||
?FAIL_MSG("~s requires wterl to be available on code path.\n",
|
||||
[?MODULE]);
|
||||
_ ->
|
||||
ok
|
||||
end,
|
||||
{ok, _} = wterl_sup:start_link(),
|
||||
setup(1);
|
||||
new(Id) ->
|
||||
setup(Id).
|
||||
|
||||
setup(_Id) ->
|
||||
%% Get the target directory
|
||||
Dir = basho_bench_config:get(wterl_dir, "/tmp"),
|
||||
Config = basho_bench_config:get(wterl, []),
|
||||
Uri = config_value(table_uri, Config, "lsm:test"),
|
||||
ConnectionOpts = config_value(connection, Config, [{create, true}]),
|
||||
SessionOpts = config_value(session, Config, []),
|
||||
TableOpts = config_value(table, Config, []),
|
||||
|
||||
%% Start WiredTiger
|
||||
Connection =
|
||||
case wterl_conn:is_open() of
|
||||
false ->
|
||||
case wterl_conn:open(Dir, ConnectionOpts, SessionOpts) of
|
||||
{ok, Conn} ->
|
||||
Conn;
|
||||
{error, Reason0} ->
|
||||
?FAIL_MSG("Failed to establish a WiredTiger connection, wterl backend unable to start: ~p\n", [Reason0])
|
||||
end;
|
||||
true ->
|
||||
{ok, Conn} = wterl_conn:get(),
|
||||
Conn
|
||||
end,
|
||||
case wterl:create(Connection, Uri, TableOpts) of
|
||||
ok ->
|
||||
{ok, #state{connection=Connection, uri=Uri}};
|
||||
{error, Reason} ->
|
||||
{error, Reason}
|
||||
end.
|
||||
|
||||
run(get, KeyGen, _ValueGen, #state{connection=Connection, uri=Uri}=State) ->
|
||||
case wterl:get(Connection, Uri, KeyGen()) of
|
||||
{ok, _Value} ->
|
||||
{ok, State};
|
||||
not_found ->
|
||||
{ok, State};
|
||||
{error, Reason} ->
|
||||
{error, Reason}
|
||||
end;
|
||||
run(put, KeyGen, ValueGen, #state{connection=Connection, uri=Uri}=State) ->
|
||||
case wterl:put(Connection, Uri, KeyGen(), ValueGen()) of
|
||||
ok ->
|
||||
{ok, State};
|
||||
{error, Reason} ->
|
||||
{error, Reason}
|
||||
end;
|
||||
run(delete, KeyGen, _ValueGen, #state{connection=Connection, uri=Uri}=State) ->
|
||||
case wterl:delete(Connection, Uri, KeyGen()) of
|
||||
ok ->
|
||||
{ok, State};
|
||||
not_found ->
|
||||
{ok, State};
|
||||
{error, Reason} ->
|
||||
{error, Reason}
|
||||
end.
|
||||
|
||||
config_value(Key, Config, Default) ->
|
||||
case proplists:get_value(Key, Config) of
|
||||
undefined ->
|
||||
Default;
|
||||
Value ->
|
||||
Value
|
||||
end.
|
97
tools/wterl-b_b.config
Normal file
97
tools/wterl-b_b.config
Normal file
|
@ -0,0 +1,97 @@
|
|||
%%-*- mode: erlang -*-
|
||||
%% ex: ft=erlang ts=4 sw=4 et
|
||||
|
||||
%% How to:
|
||||
%% * put the wterl-b_b.config file into basho_bench/examples
|
||||
%% * put the basho_bench_driver_wterl.erl into basho_bench/src
|
||||
%% * make clean in basho_bench, then make
|
||||
%% * edit examples/wterl-b_b.config
|
||||
%% - change {code_paths, ["../wterl"]}. to be a relative path to your
|
||||
%% wterl directory
|
||||
%% - change {wterl_dir, "/home/gburd/ws/basho_bench/data"}. to a fully
|
||||
%% qualified location for your test data files (mkdir that directory
|
||||
%% yourself, if it doesn't exist the test will fail 'enoent')
|
||||
%% * to run, replace this path with the proper path on your system:
|
||||
%% LD_LIBRARY_PATH=/home/you/wterl/priv ./basho_bench examples/wterl-b_b.config
|
||||
%% * the test should run for 10 minutes (as it is configured right now)
|
||||
%% with 4 concurrent workers accessing the same table
|
||||
%%
|
||||
%% Note:
|
||||
%% There are two config sections in wt.config {wterl, [ ... ]}. and
|
||||
%% {wterl_, [ ... ]}. The one being used is named "wterl" the other
|
||||
%% config is ignored. I setup an LSM and BTREE config and to choose
|
||||
%% which is run you just rename those two sections (turn one off by
|
||||
%% adding a "_" to the name and take the "_" out of the other's name).
|
||||
|
||||
{mode, max}.
|
||||
{duration, 10}.
|
||||
{concurrent, 4}.
|
||||
{driver, basho_bench_driver_wterl}.
|
||||
{key_generator, {int_to_bin_littleendian,{uniform_int, 5000000}}}.
|
||||
{value_generator, {fixed_bin, 10000}}.
|
||||
{operations, [{get, 4}, {put, 4}, {delete, 2}]}.
|
||||
{code_paths, ["../wterl"]}.
|
||||
{wterl_dir, "/home/gburd/ws/basho_bench/data"}.
|
||||
|
||||
%% lsm
|
||||
{wterl, [
|
||||
{connection, [
|
||||
{create, true},
|
||||
{sync, false},
|
||||
{logging, true},
|
||||
{transactional, true},
|
||||
{session_max, 1024},
|
||||
{cache_size, 4294967296},
|
||||
{verbose, []},
|
||||
% "salvage", "verify" are okay, however...
|
||||
% for some unknown reason, if you add these additional
|
||||
% verbose flags Erlang SEGV's "size_object: bad tag for 0x80"
|
||||
% no idea why... yet... you've been warned.
|
||||
%"block", "shared_cache", "reconcile", "evict", "lsm",
|
||||
%"fileops", "read", "write", "readserver", "evictserver",
|
||||
%"hazard", "mutex", "ckpt"
|
||||
{statistics_log, [{wait, 30}]}
|
||||
]},
|
||||
{session, [ {isolation, "snapshot"} ]},
|
||||
{table_uri, "lsm:test"},
|
||||
{table, [
|
||||
{internal_page_max, "128K"},
|
||||
{leaf_page_max, "128K"},
|
||||
{lsm_chunk_size, "25MB"},
|
||||
{prefix_compression, false},
|
||||
{lsm_bloom_newest, true},
|
||||
{lsm_bloom_oldest, true} ,
|
||||
{lsm_bloom_bit_count, 128},
|
||||
{lsm_bloom_hash_count, 64},
|
||||
{lsm_bloom_config, [{leaf_page_max, "8MB"}]},
|
||||
{block_compressor, "snappy"} % bzip2
|
||||
]}
|
||||
]}.
|
||||
|
||||
%% btree
|
||||
{wterl_, [
|
||||
{connection, [
|
||||
{create, true},
|
||||
{sync, false},
|
||||
{logging, true},
|
||||
{transactional, true},
|
||||
{session_max, 1024},
|
||||
{cache_size, 4294967296},
|
||||
{verbose, []},
|
||||
% "salvage", "verify" are okay, however...
|
||||
% for some unknown reason, if you add these additional
|
||||
% verbose flags Erlang SEGV's "size_object: bad tag for 0x80"
|
||||
% no idea why... yet... you've been warned.
|
||||
%"block", "shared_cache", "reconcile", "evict", "lsm",
|
||||
%"fileops", "read", "write", "readserver", "evictserver",
|
||||
%"hazard", "mutex", "ckpt"
|
||||
{statistics_log, [{wait, 30}]},
|
||||
{checkpoint, [{await, 10}]}
|
||||
]},
|
||||
{session, [ {isolation, "snapshot"} ]},
|
||||
{table_uri, "table:test"},
|
||||
{table, [
|
||||
{prefix_compression, false},
|
||||
{block_compressor, "snappy"} % bzip2
|
||||
]}
|
||||
]}.
|
Loading…
Reference in a new issue