Commit 170a0288 authored by Bradley C. Kuszmaul's avatar Bradley C. Kuszmaul

up

git-svn-id: file:///svn/tokudb@514 c7de825b-a66e-492c-adef-691d508d4ae1
parent d3dfa68e
...@@ -17,7 +17,11 @@ enum { BOUND_INCREASE_PER_ITERATION = SERIAL_SPACING*ITEMS_TO_INSERT_PER_ITERATI ...@@ -17,7 +17,11 @@ enum { BOUND_INCREASE_PER_ITERATION = SERIAL_SPACING*ITEMS_TO_INSERT_PER_ITERATI
#define CKERR(r) if (r!=0) fprintf(stderr, "%s:%d error %d %s\n", __FILE__, __LINE__, r, db_strerror(r)); assert(r==0); #define CKERR(r) if (r!=0) fprintf(stderr, "%s:%d error %d %s\n", __FILE__, __LINE__, r, db_strerror(r)); assert(r==0);
/* default test parameters */
int keysize = sizeof (long long);
int valsize = sizeof (long long);
int pagesize = 0;
long long cachesize = 128*1024*1024;
#define STRINGIFY2(s) #s #define STRINGIFY2(s) #s
#define STRINGIFY(s) STRINGIFY2(s) #define STRINGIFY(s) STRINGIFY2(s)
...@@ -53,7 +57,7 @@ void setup (void) { ...@@ -53,7 +57,7 @@ void setup (void) {
} }
if (dbenv->set_cachesize) { if (dbenv->set_cachesize) {
r = dbenv->set_cachesize(dbenv, 0, 128*1024*1024, 1); r = dbenv->set_cachesize(dbenv, cachesize / (1024*1024*1024), cachesize % (1024*1024*1024), 1);
if (r != 0) if (r != 0)
printf("WARNING: set_cachesize %d\n", r); printf("WARNING: set_cachesize %d\n", r);
} }
...@@ -61,7 +65,6 @@ void setup (void) { ...@@ -61,7 +65,6 @@ void setup (void) {
{ {
int flags = DB_CREATE|DB_PRIVATE|DB_INIT_MPOOL | (do_transactions ? (DB_INIT_TXN | DB_INIT_LOG | DB_INIT_LOCK): 0); int flags = DB_CREATE|DB_PRIVATE|DB_INIT_MPOOL | (do_transactions ? (DB_INIT_TXN | DB_INIT_LOG | DB_INIT_LOCK): 0);
r = dbenv->open(dbenv, dbdir, flags, 0644); r = dbenv->open(dbenv, dbdir, flags, 0644);
printf("Flags=%x\n", flags);
assert(r == 0); assert(r == 0);
} }
...@@ -71,6 +74,10 @@ void setup (void) { ...@@ -71,6 +74,10 @@ void setup (void) {
if (do_transactions) { if (do_transactions) {
r=dbenv->txn_begin(dbenv, 0, &tid, 0); assert(r==0); r=dbenv->txn_begin(dbenv, 0, &tid, 0); assert(r==0);
} }
if (pagesize && db->set_pagesize) {
r = db->set_pagesize(db, pagesize);
assert(r == 0);
}
r = db->open(db, tid, dbfilename, NULL, DB_BTREE, DB_CREATE, 0644); r = db->open(db, tid, dbfilename, NULL, DB_BTREE, DB_CREATE, 0644);
assert(r == 0); assert(r == 0);
if (do_transactions) { if (do_transactions) {
...@@ -102,11 +109,13 @@ DBT *fill_dbt(DBT *dbt, void *data, int size) { ...@@ -102,11 +109,13 @@ DBT *fill_dbt(DBT *dbt, void *data, int size) {
} }
void insert (long long v) { void insert (long long v) {
unsigned char kc[8], vc[8]; unsigned char kc[keysize], vc[valsize];
DBT kt, vt; DBT kt, vt;
memset(kc, 0, sizeof kc);
long_long_to_array(kc, v); long_long_to_array(kc, v);
memset(vc, 0, sizeof vc);
long_long_to_array(vc, v); long_long_to_array(vc, v);
int r = db->put(db, tid, fill_dbt(&kt, kc, 8), fill_dbt(&vt, vc, 8), 0); int r = db->put(db, tid, fill_dbt(&kt, kc, keysize), fill_dbt(&vt, vc, valsize), 0);
CKERR(r); CKERR(r);
if (do_transactions) { if (do_transactions) {
if (n_insertions_since_txn_began>=ITEMS_PER_TRANSACTION) { if (n_insertions_since_txn_began>=ITEMS_PER_TRANSACTION) {
...@@ -162,7 +171,7 @@ double tdiff (struct timeval *a, struct timeval *b) { ...@@ -162,7 +171,7 @@ double tdiff (struct timeval *a, struct timeval *b) {
} }
void biginsert (long long n_elements, struct timeval *starttime) { void biginsert (long long n_elements, struct timeval *starttime) {
long i; long long i;
struct timeval t1,t2; struct timeval t1,t2;
int iteration; int iteration;
for (i=0, iteration=0; i<n_elements; i+=ITEMS_TO_INSERT_PER_ITERATION, iteration++) { for (i=0, iteration=0; i<n_elements; i+=ITEMS_TO_INSERT_PER_ITERATION, iteration++) {
...@@ -185,9 +194,11 @@ const long long default_n_items = 1LL<<22; ...@@ -185,9 +194,11 @@ const long long default_n_items = 1LL<<22;
void print_usage (const char *argv0) { void print_usage (const char *argv0) {
fprintf(stderr, "Usage:\n"); fprintf(stderr, "Usage:\n");
fprintf(stderr, " %s [-x] [ n_iterations ]\n", argv0); fprintf(stderr, " %s [-x] [--keysize KEYSIZE] [--valsize VALSIZE] [ n_iterations ]\n", argv0);
fprintf(stderr, " where\n"); fprintf(stderr, " where\n");
fprintf(stderr, " -x do transactions (one transaction per iteration) (default: no transactions at all)\n"); fprintf(stderr, " -x do transactions (one transaction per iteration) (default: no transactions at all)\n");
fprintf(stderr, " --keysize KEYSIZE sets the key size (default 8)\n");
fprintf(stderr, " --valsize VALSIZE sets the value size (default 8)\n");
fprintf(stderr, " n_iterations how many iterations (default %lld iterations of %d items per iteration)\n", default_n_items/ITEMS_TO_INSERT_PER_ITERATION, ITEMS_TO_INSERT_PER_ITERATION); fprintf(stderr, " n_iterations how many iterations (default %lld iterations of %d items per iteration)\n", default_n_items/ITEMS_TO_INSERT_PER_ITERATION, ITEMS_TO_INSERT_PER_ITERATION);
} }
...@@ -195,22 +206,56 @@ void print_usage (const char *argv0) { ...@@ -195,22 +206,56 @@ void print_usage (const char *argv0) {
int main (int argc, const char *argv[]) { int main (int argc, const char *argv[]) {
struct timeval t1,t2,t3; struct timeval t1,t2,t3;
long long total_n_items = default_n_items; long long total_n_items = default_n_items;
const char *argv0 = argv[0]; int i;
while (argc>1) { for (i=1; i<argc; i++) {
if (strcmp(argv[1], "-x")==0) do_transactions=1; const char *arg = argv[i];
else { if (arg[0] != '-')
/* if it looks like a number */ break;
char *end; if (strcmp(arg, "-x") == 0) {
errno=0; do_transactions = 1;
long n_iterations = strtol(argv[1], &end, 10); continue;
if (errno!=0 || *end!=0 || end==argv[1]) { }
print_usage(argv0); if (strcmp(arg, "--cachesize") == 0) {
exit(1); if (i+1 < argc) {
} i++;
total_n_items = ITEMS_TO_INSERT_PER_ITERATION * (long long)n_iterations; cachesize = strtoll(argv[i], 0, 10);
} }
argc--; continue;
argv++; }
if (strcmp(arg, "--keysize") == 0) {
if (i+1 < argc) {
i++;
keysize = atoi(argv[i]);
}
continue;
}
if (strcmp(arg, "--valsize") == 0) {
if (i+1 < argc) {
i++;
valsize = atoi(argv[i]);
}
continue;
}
if (strcmp(arg, "--pagesize") == 0) {
if (i+1 < argc) {
i++;
pagesize = atoi(argv[i]);
}
continue;
}
print_usage(argv[0]);
return 1;
}
if (i<argc) {
/* if it looks like a number */
char *end;
errno=0;
long n_iterations = strtol(argv[i], &end, 10);
if (errno!=0 || *end!=0 || end==argv[i]) {
print_usage(argv[0]);
return 1;
}
total_n_items = ITEMS_TO_INSERT_PER_ITERATION * (long long)n_iterations;
} }
printf("Serial and random insertions of %d per batch%s\n", ITEMS_TO_INSERT_PER_ITERATION, do_transactions ? " (with transactions)" : ""); printf("Serial and random insertions of %d per batch%s\n", ITEMS_TO_INSERT_PER_ITERATION, do_transactions ? " (with transactions)" : "");
setup(); setup();
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment