From 3f52d2593b316078a721707923923a82ebbbd64d Mon Sep 17 00:00:00 2001 From: Michael Vrable Date: Wed, 30 Jun 2010 12:24:50 -0700 Subject: [PATCH] More S3 benchmark work. --- cloudbench/readbench.c | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/cloudbench/readbench.c b/cloudbench/readbench.c index 8961eb8..7f1ff12 100644 --- a/cloudbench/readbench.c +++ b/cloudbench/readbench.c @@ -43,6 +43,7 @@ struct callback_state { struct thread_state threads[MAX_THREADS]; int experiment_threads, experiment_size, experiment_objects; +int range_size = 0; pthread_mutex_t barrier_mutex; pthread_cond_t barrier_cond; @@ -91,7 +92,8 @@ static void complete_callback(S3Status status, { } -static void do_get(const char *key, size_t bytes, struct thread_state *ts) +static void do_get(const char *key, size_t bytes, struct thread_state *ts, + size_t offset) { struct callback_state state; struct S3GetObjectHandler handler; @@ -102,7 +104,7 @@ static void do_get(const char *key, size_t bytes, struct thread_state *ts) handler.responseHandler.completeCallback = complete_callback; handler.getObjectDataCallback = data_callback; - S3_get_object(&bucket, key, NULL, 0, 0, NULL, &handler, &state); + S3_get_object(&bucket, key, NULL, offset, range_size, NULL, &handler, &state); } void *benchmark_thread(void *arg) @@ -120,9 +122,13 @@ void *benchmark_thread(void *arg) ts->timestamp = get_ns(); while (test_phase != TERMINATE) { int object = random() % experiment_objects; + int offset = 0; sprintf(namebuf, "file-%d-%d", experiment_size, object); + if (range_size) { + offset = (random() % (experiment_size / range_size)) * range_size; + } ts->first_byte_timestamp = 0; - do_get(namebuf, experiment_size, ts); + do_get(namebuf, experiment_size, ts, offset); long long timestamp = get_ns(); long long elapsed = timestamp - ts->timestamp; @@ -136,7 +142,7 @@ void *benchmark_thread(void *arg) ts->sum_x += e; ts->sum_x2 += e * e; ts->sum_f += f; - ts->bytes_sent += experiment_size; + ts->bytes_sent += range_size ? range_size : experiment_size; } i++; @@ -223,8 +229,8 @@ void launch_test(int thread_count) } double elapsed = (get_ns() - start_time) / 1e9; - printf("*** %d threads, %d byte objects\n", - experiment_threads, experiment_size); + printf("*** %d threads, %d byte objects, %d byte ranges\n", + experiment_threads, experiment_size, range_size); printf("Elapsed: %f s\n", elapsed); printf("Data points: %d\n", n); double mx = sum_x / n; @@ -267,6 +273,9 @@ int main(int argc, char *argv[]) experiment_threads = atoi(argv[1]); experiment_size = atoi(argv[2]); experiment_objects = atoi(argv[3]); + if (argc > 4) { + range_size = atoi(argv[4]); + } assert(experiment_objects > 0); launch_test(experiment_threads); -- 2.20.1