From c0e2e984bb14261793fbef5f443d31f33b658602 Mon Sep 17 00:00:00 2001 From: Michael Vrable Date: Tue, 6 Apr 2010 16:41:22 -0700 Subject: [PATCH] Add some measurements of speed reading data from S3. --- .gitignore | 2 + s3bench/CMakeLists.txt | 3 +- s3bench/readlatency.c | 230 ++++++++++ s3bench/results/readlatency/readlatency-1.cdf | 200 +++++++++ .../results/readlatency/readlatency-1M.cdf | 100 +++++ .../results/readlatency/readlatency-32.cdf | 100 +++++ s3bench/results/readlatency/readlatency.cdf | 100 +++++ s3bench/results/readlatency/readlatency.data | 400 ++++++++++++++++++ .../results/readlatency/readlatency.gnuplot | 151 +++++++ s3bench/results/readlatency/readlatency.pdf | Bin 0 -> 5219 bytes 10 files changed, 1285 insertions(+), 1 deletion(-) create mode 100644 s3bench/readlatency.c create mode 100644 s3bench/results/readlatency/readlatency-1.cdf create mode 100644 s3bench/results/readlatency/readlatency-1M.cdf create mode 100644 s3bench/results/readlatency/readlatency-32.cdf create mode 100644 s3bench/results/readlatency/readlatency.cdf create mode 100644 s3bench/results/readlatency/readlatency.data create mode 100644 s3bench/results/readlatency/readlatency.gnuplot create mode 100644 s3bench/results/readlatency/readlatency.pdf diff --git a/.gitignore b/.gitignore index 9542663..b73b5a5 100644 --- a/.gitignore +++ b/.gitignore @@ -14,3 +14,5 @@ microbench/readbench microbench/statbench nfs3/nfsproxy nfs3/synclient +s3bench/s3readbench +s3bench/s3readlatency diff --git a/s3bench/CMakeLists.txt b/s3bench/CMakeLists.txt index 29aabe1..9cb9813 100644 --- a/s3bench/CMakeLists.txt +++ b/s3bench/CMakeLists.txt @@ -2,9 +2,10 @@ include_directories("${LIBS3_BUILD_DIR}/include") link_directories("${LIBS3_BUILD_DIR}/lib") add_executable(s3readbench readbench.c) +add_executable(s3readlatency readlatency.c) set(CMAKE_C_FLAGS "-Wall -std=gnu99 ${CMAKE_C_FLAGS}") set(INSTALL_RPATH_USE_LINK_PATH 1) target_link_libraries(s3readbench pthread s3) - +target_link_libraries(s3readlatency pthread s3) diff --git a/s3bench/readlatency.c b/s3bench/readlatency.c new file mode 100644 index 0000000..6276d69 --- /dev/null +++ b/s3bench/readlatency.c @@ -0,0 +1,230 @@ +/* Simple benchmark for Amazon S3: measures download speeds for + * differently-sized objects and with a variable number of parallel + * connections. */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "libs3.h" + +FILE *statsfile; + +S3BucketContext bucket; + +struct thread_state { + pthread_t thread; + int thread_num; + long long timestamp; + + // Time when first bytes of the response were received + long long first_byte_timestamp; + + // Statistics for computing mean and standard deviation + int n; + size_t bytes_sent; + double sum_x, sum_x2; + + double sum_f; +}; + +struct callback_state { + struct thread_state *ts; + size_t bytes_remaining; +}; + +#define MAX_THREADS 128 +struct thread_state threads[MAX_THREADS]; + +int experiment_threads, experiment_size, experiment_objects; + +pthread_mutex_t barrier_mutex; +pthread_cond_t barrier_cond; +int barrier_val; + +pthread_mutex_t wait_mutex; +pthread_cond_t wait_cond; +int wait_val = 0; + +enum phase { LAUNCH, MEASURE, TERMINATE }; +volatile enum phase test_phase; + +void barrier_signal() +{ + pthread_mutex_lock(&barrier_mutex); + barrier_val--; + printf("Barrier: %d left\n", barrier_val); + if (barrier_val == 0) + pthread_cond_signal(&barrier_cond); + pthread_mutex_unlock(&barrier_mutex); +} + +long long get_ns() +{ + struct timespec ts; + clock_gettime(CLOCK_MONOTONIC, &ts); + + return ts.tv_sec * 1000000000LL + ts.tv_nsec; +} + +static S3Status data_callback(int bufferSize, const char *buffer, + void *callbackData) +{ + struct callback_state *state = (struct callback_state *)callbackData; + state->bytes_remaining -= bufferSize; + if (state->ts->first_byte_timestamp == 0) + state->ts->first_byte_timestamp = get_ns(); + return S3StatusOK; +} + +static S3Status properties_callback(const S3ResponseProperties *properties, + void *callbackData) +{ + return S3StatusOK; +} + +static void complete_callback(S3Status status, + const S3ErrorDetails *errorDetails, + void *callbackData) +{ +} + +static void do_get(const char *key, size_t bytes, struct thread_state *ts) +{ + struct callback_state state; + struct S3GetObjectHandler handler; + + state.bytes_remaining = bytes; + state.ts = ts; + handler.responseHandler.propertiesCallback = properties_callback; + handler.responseHandler.completeCallback = complete_callback; + handler.getObjectDataCallback = data_callback; + + S3_get_object(&bucket, key, NULL, 0, 0, NULL, &handler, &state); +} + +void *benchmark_thread(void *arg) +{ + struct thread_state *ts = (struct thread_state *)arg; + char namebuf[64]; + + printf("Warming up...\n"); + do_get("file-1048576-0", 0, ts); + printf("Ready.\n"); + barrier_signal(); + + pthread_mutex_lock(&wait_mutex); + while (wait_val == 0) + pthread_cond_wait(&wait_cond, &wait_mutex); + pthread_mutex_unlock(&wait_mutex); + + ts->timestamp = get_ns(); + sprintf(namebuf, "file-%d-%d", experiment_size, ts->thread_num); + ts->first_byte_timestamp = 0; + do_get(namebuf, experiment_size, ts); + long long timestamp = get_ns(); + long long elapsed = timestamp - ts->timestamp; + + barrier_signal(); + + printf("Thread %d: %f elapsed\n", ts->thread_num, elapsed / 1e9); + + return NULL; +} + +void launch_thread(int n) +{ + threads[n].thread_num = n; + if (pthread_create(&threads[n].thread, NULL, benchmark_thread, &threads[n]) != 0) { + fprintf(stderr, "Error launching thread!\n"); + exit(1); + } +} + +void wait_thread(int n) +{ + void *result; + pthread_join(threads[n].thread, &result); +} + +void launch_test(int thread_count) +{ + int i; + + barrier_val = thread_count; + assert(thread_count <= MAX_THREADS); + + for (i = 0; i < thread_count; i++) + launch_thread(i); + + /* Wait until all threads are ready. */ + pthread_mutex_lock(&barrier_mutex); + while (barrier_val > 0) { + pthread_cond_wait(&barrier_cond, &barrier_mutex); + } + pthread_mutex_unlock(&barrier_mutex); + + sleep(2); + barrier_val = thread_count; + pthread_mutex_lock(&wait_mutex); + printf("Launching test\n"); + long long start_time = get_ns(); + wait_val = 1; + pthread_cond_broadcast(&wait_cond); + pthread_mutex_unlock(&wait_mutex); + + /* Wait until all threads are ready. */ + pthread_mutex_lock(&barrier_mutex); + while (barrier_val > 0) { + pthread_cond_wait(&barrier_cond, &barrier_mutex); + } + pthread_mutex_unlock(&barrier_mutex); + + long long end_time = get_ns(); + + printf("Elapsed time: %f\n", (end_time - start_time) / 1e9); + fprintf(statsfile, "%d\t%d\t%f\n", experiment_threads, experiment_size, + (end_time - start_time) / 1e9); +} + +int main(int argc, char *argv[]) +{ + statsfile = fopen("readlatency.data", "a"); + if (statsfile == NULL) { + perror("open stats file"); + return 1; + } + + S3_initialize(NULL, S3_INIT_ALL); + + bucket.bucketName = "mvrable-benchmark"; + bucket.protocol = S3ProtocolHTTP; + bucket.uriStyle = S3UriStylePath; + bucket.accessKeyId = getenv("AWS_ACCESS_KEY_ID"); + bucket.secretAccessKey = getenv("AWS_SECRET_ACCESS_KEY"); + + pthread_mutex_init(&barrier_mutex, NULL); + pthread_cond_init(&barrier_cond, NULL); + pthread_mutex_init(&wait_mutex, NULL); + pthread_cond_init(&wait_cond, NULL); + + if (argc < 3) { + fprintf(stderr, "Usage: %s \n", argv[0]); + return 1; + } + + experiment_threads = atoi(argv[1]); + experiment_size = atoi(argv[2]); + launch_test(experiment_threads); + + printf("Done.\n"); + fclose(statsfile); + + return 0; +} diff --git a/s3bench/results/readlatency/readlatency-1.cdf b/s3bench/results/readlatency/readlatency-1.cdf new file mode 100644 index 0000000..23d2d41 --- /dev/null +++ b/s3bench/results/readlatency/readlatency-1.cdf @@ -0,0 +1,200 @@ +0.045283 1 +0.062699 2 +0.074330 3 +0.074762 4 +0.074790 5 +0.076810 6 +0.077426 7 +0.077833 8 +0.077834 9 +0.078145 10 +0.078465 11 +0.078475 12 +0.078493 13 +0.079181 14 +0.079488 15 +0.079590 16 +0.079608 17 +0.079904 18 +0.079963 19 +0.080063 20 +0.080073 21 +0.080234 22 +0.080339 23 +0.080387 24 +0.080388 25 +0.081385 26 +0.081931 27 +0.082096 28 +0.082419 29 +0.082506 30 +0.082877 31 +0.083014 32 +0.083220 33 +0.083221 34 +0.083985 35 +0.084021 36 +0.084135 37 +0.084307 38 +0.084455 39 +0.084880 40 +0.085274 41 +0.085587 42 +0.085677 43 +0.085994 44 +0.086271 45 +0.086568 46 +0.086795 47 +0.087064 48 +0.087282 49 +0.087447 50 +0.087473 51 +0.087544 52 +0.087647 53 +0.087901 54 +0.087956 55 +0.088986 56 +0.089025 57 +0.089126 58 +0.089219 59 +0.089728 60 +0.089990 61 +0.090096 62 +0.090645 63 +0.090799 64 +0.091041 65 +0.091139 66 +0.091341 67 +0.091478 68 +0.091509 69 +0.092364 70 +0.092791 71 +0.093092 72 +0.093102 73 +0.093803 74 +0.094845 75 +0.094978 76 +0.095559 77 +0.096476 78 +0.098127 79 +0.098310 80 +0.100156 81 +0.100332 82 +0.100373 83 +0.100971 84 +0.101113 85 +0.103911 86 +0.104521 87 +0.105320 88 +0.105834 89 +0.105843 90 +0.106091 91 +0.106906 92 +0.107180 93 +0.107420 94 +0.107420 95 +0.109059 96 +0.110014 97 +0.110176 98 +0.110199 99 +0.111495 100 +0.111911 101 +0.112344 102 +0.112392 103 +0.112868 104 +0.113055 105 +0.113232 106 +0.113529 107 +0.113550 108 +0.114678 109 +0.115403 110 +0.116230 111 +0.116710 112 +0.117173 113 +0.117355 114 +0.118433 115 +0.118779 116 +0.119271 117 +0.120478 118 +0.120546 119 +0.122060 120 +0.122263 121 +0.122285 122 +0.122836 123 +0.123628 124 +0.124303 125 +0.125558 126 +0.126923 127 +0.129542 128 +0.129950 129 +0.130270 130 +0.130607 131 +0.130659 132 +0.130867 133 +0.132489 134 +0.133804 135 +0.133983 136 +0.134093 137 +0.134274 138 +0.134356 139 +0.137152 140 +0.138733 141 +0.139070 142 +0.141640 143 +0.142038 144 +0.142308 145 +0.143265 146 +0.144089 147 +0.144715 148 +0.145933 149 +0.146325 150 +0.146359 151 +0.146423 152 +0.146460 153 +0.146907 154 +0.150152 155 +0.150856 156 +0.152306 157 +0.152916 158 +0.154448 159 +0.154509 160 +0.154751 161 +0.155689 162 +0.155887 163 +0.156145 164 +0.159284 165 +0.162028 166 +0.163722 167 +0.164693 168 +0.166506 169 +0.167690 170 +0.168202 171 +0.171955 172 +0.173294 173 +0.173682 174 +0.175645 175 +0.186515 176 +0.188924 177 +0.192749 178 +0.194227 179 +0.201623 180 +0.204093 181 +0.206711 182 +0.229942 183 +0.236070 184 +0.259604 185 +0.271910 186 +0.275989 187 +0.276592 188 +0.278322 189 +0.321248 190 +0.335674 191 +0.346513 192 +0.352159 193 +0.376538 194 +0.396019 195 +0.409246 196 +0.502994 197 +0.680954 198 +0.745783 199 +1.114872 200 diff --git a/s3bench/results/readlatency/readlatency-1M.cdf b/s3bench/results/readlatency/readlatency-1M.cdf new file mode 100644 index 0000000..13af21d --- /dev/null +++ b/s3bench/results/readlatency/readlatency-1M.cdf @@ -0,0 +1,100 @@ +0.179838 1 +0.277001 2 +0.278732 3 +0.279234 4 +0.281924 5 +0.291768 6 +0.296047 7 +0.300601 8 +0.301188 9 +0.303938 10 +0.304684 11 +0.305524 12 +0.305629 13 +0.306441 14 +0.309026 15 +0.310634 16 +0.311379 17 +0.313020 18 +0.315230 19 +0.316532 20 +0.328345 21 +0.328940 22 +0.329725 23 +0.330313 24 +0.331893 25 +0.333604 26 +0.338876 27 +0.339975 28 +0.340653 29 +0.341479 30 +0.353531 31 +0.355784 32 +0.356006 33 +0.356799 34 +0.357438 35 +0.357538 36 +0.358510 37 +0.360807 38 +0.361737 39 +0.361892 40 +0.362218 41 +0.365037 42 +0.365115 43 +0.366642 44 +0.368106 45 +0.369152 46 +0.369228 47 +0.369735 48 +0.370846 49 +0.372269 50 +0.373571 51 +0.377183 52 +0.377238 53 +0.380118 54 +0.380315 55 +0.380479 56 +0.382240 57 +0.382504 58 +0.385336 59 +0.391673 60 +0.394923 61 +0.397511 62 +0.398896 63 +0.399778 64 +0.400985 65 +0.406857 66 +0.417887 67 +0.429184 68 +0.430751 69 +0.433329 70 +0.434529 71 +0.434614 72 +0.434657 73 +0.436356 74 +0.453520 75 +0.457328 76 +0.457441 77 +0.457658 78 +0.468703 79 +0.478020 80 +0.513865 81 +0.518257 82 +0.522161 83 +0.525876 84 +0.564692 85 +0.586724 86 +0.590481 87 +0.594006 88 +0.633365 89 +0.645455 90 +0.721538 91 +0.764182 92 +0.774317 93 +0.909847 94 +0.913836 95 +0.922813 96 +0.961021 97 +1.096251 98 +1.166256 99 +3.346255 100 diff --git a/s3bench/results/readlatency/readlatency-32.cdf b/s3bench/results/readlatency/readlatency-32.cdf new file mode 100644 index 0000000..77a7ff3 --- /dev/null +++ b/s3bench/results/readlatency/readlatency-32.cdf @@ -0,0 +1,100 @@ +0.153733 1 +0.155741 2 +0.219545 3 +0.227158 4 +0.229952 5 +0.238096 6 +0.240615 7 +0.241290 8 +0.251551 9 +0.285339 10 +0.301915 11 +0.311733 12 +0.320945 13 +0.327803 14 +0.330503 15 +0.331498 16 +0.336981 17 +0.338568 18 +0.340686 19 +0.341065 20 +0.343244 21 +0.346666 22 +0.351841 23 +0.353743 24 +0.357719 25 +0.358126 26 +0.358398 27 +0.358667 28 +0.358724 29 +0.361306 30 +0.364289 31 +0.364436 32 +0.367656 33 +0.369022 34 +0.370192 35 +0.370450 36 +0.370560 37 +0.371063 38 +0.372451 39 +0.376746 40 +0.377585 41 +0.377710 42 +0.378433 43 +0.383707 44 +0.384353 45 +0.384971 46 +0.388389 47 +0.391611 48 +0.393625 49 +0.396236 50 +0.396931 51 +0.401303 52 +0.402698 53 +0.410044 54 +0.410982 55 +0.420675 56 +0.425426 57 +0.434695 58 +0.441131 59 +0.453979 60 +0.456576 61 +0.467237 62 +0.470126 63 +0.471437 64 +0.480721 65 +0.487308 66 +0.495112 67 +0.497509 68 +0.499473 69 +0.525626 70 +0.532978 71 +0.556998 72 +0.557340 73 +0.558604 74 +0.564188 75 +0.565174 76 +0.607127 77 +0.633611 78 +0.658739 79 +0.665458 80 +0.673995 81 +0.692012 82 +0.700278 83 +0.723201 84 +0.764861 85 +0.769961 86 +0.771240 87 +0.794584 88 +0.819138 89 +0.820216 90 +0.867148 91 +0.922025 92 +0.950815 93 +0.996596 94 +1.040306 95 +1.086097 96 +2.098590 97 +2.401358 98 +3.614998 99 +9.503317 100 diff --git a/s3bench/results/readlatency/readlatency.cdf b/s3bench/results/readlatency/readlatency.cdf new file mode 100644 index 0000000..8d3c751 --- /dev/null +++ b/s3bench/results/readlatency/readlatency.cdf @@ -0,0 +1,100 @@ +0.104781 1 +0.106144 2 +0.109530 3 +0.111651 4 +0.114505 5 +0.114606 6 +0.115386 7 +0.118105 8 +0.119147 9 +0.119260 10 +0.123050 11 +0.134576 12 +0.138460 13 +0.138514 14 +0.139471 15 +0.140083 16 +0.140290 17 +0.140350 18 +0.141469 19 +0.141598 20 +0.141738 21 +0.142124 22 +0.142722 23 +0.142803 24 +0.142936 25 +0.143124 26 +0.143324 27 +0.143644 28 +0.143759 29 +0.143983 30 +0.144171 31 +0.144268 32 +0.145073 33 +0.145206 34 +0.145287 35 +0.145824 36 +0.145824 37 +0.146161 38 +0.146243 39 +0.146431 40 +0.147071 41 +0.147279 42 +0.147518 43 +0.147928 44 +0.148155 45 +0.148564 46 +0.148739 47 +0.149890 48 +0.150028 49 +0.151399 50 +0.151402 51 +0.151439 52 +0.151809 53 +0.152675 54 +0.153498 55 +0.154576 56 +0.155544 57 +0.156000 58 +0.157670 59 +0.157880 60 +0.158890 61 +0.158923 62 +0.159545 63 +0.161173 64 +0.161711 65 +0.162621 66 +0.164447 67 +0.165596 68 +0.167675 69 +0.169646 70 +0.171302 71 +0.172217 72 +0.172801 73 +0.173508 74 +0.173752 75 +0.174497 76 +0.175906 77 +0.176856 78 +0.181165 79 +0.181231 80 +0.182506 81 +0.188848 82 +0.196953 83 +0.200992 84 +0.207821 85 +0.213328 86 +0.236631 87 +0.244325 88 +0.248679 89 +0.259836 90 +0.276282 91 +0.307227 92 +0.338487 93 +0.354110 94 +0.357111 95 +0.366330 96 +0.369880 97 +0.388425 98 +0.505996 99 +0.557053 100 diff --git a/s3bench/results/readlatency/readlatency.data b/s3bench/results/readlatency/readlatency.data new file mode 100644 index 0000000..4eac98b --- /dev/null +++ b/s3bench/results/readlatency/readlatency.data @@ -0,0 +1,400 @@ +32 32768 0.420675 +32 32768 0.700278 +32 32768 0.357719 +32 32768 0.769961 +32 32768 0.434695 +32 32768 0.227158 +32 32768 0.251551 +32 32768 0.383707 +32 32768 0.351841 +32 32768 0.343244 +32 32768 0.384353 +32 32768 0.495112 +32 32768 0.240615 +32 32768 0.867148 +32 32768 0.396931 +32 32768 0.369022 +32 32768 0.219545 +32 32768 0.658739 +32 32768 0.338568 +32 32768 0.556998 +32 32768 0.401303 +32 32768 0.410044 +32 32768 0.771240 +32 32768 0.950815 +32 32768 0.480721 +32 32768 0.340686 +32 32768 0.336981 +32 32768 0.327803 +32 32768 0.358398 +32 32768 0.346666 +32 32768 1.040306 +32 32768 0.499473 +32 32768 0.922025 +32 32768 0.820216 +32 32768 0.470126 +32 32768 0.487308 +32 32768 0.384971 +32 32768 0.301915 +32 32768 0.673995 +32 32768 0.819138 +32 32768 0.497509 +32 32768 0.665458 +32 32768 0.558604 +32 32768 0.358126 +32 32768 0.607127 +32 32768 0.794584 +32 32768 0.471437 +32 32768 0.396236 +32 32768 0.364289 +32 32768 0.557340 +32 32768 0.388389 +32 32768 0.453979 +32 32768 0.441131 +32 32768 0.361306 +32 32768 0.378433 +32 32768 0.996596 +32 32768 0.285339 +32 32768 0.377585 +32 32768 0.153733 +32 32768 0.311733 +32 32768 0.376746 +32 32768 0.341065 +32 32768 0.238096 +32 32768 0.155741 +32 32768 0.393625 +32 32768 0.330503 +32 32768 0.370192 +32 32768 0.320945 +32 32768 1.086097 +32 32768 0.410982 +32 32768 0.241290 +32 32768 0.391611 +32 32768 0.467237 +32 32768 0.456576 +32 32768 0.229952 +32 32768 0.358724 +32 32768 0.331498 +32 32768 0.371063 +32 32768 0.564188 +32 32768 0.764861 +32 32768 0.525626 +32 32768 0.377710 +32 32768 3.614998 +32 32768 0.364436 +32 32768 0.633611 +32 32768 0.565174 +32 32768 0.723201 +32 32768 0.370450 +32 32768 0.370560 +32 32768 0.372451 +32 32768 0.358667 +32 32768 2.401358 +32 32768 0.532978 +32 32768 0.692012 +32 32768 0.367656 +32 32768 9.503317 +32 32768 0.402698 +32 32768 0.425426 +32 32768 0.353743 +32 32768 2.098590 +1 1048576 0.365115 +1 1048576 0.453520 +1 1048576 0.513865 +1 1048576 0.278732 +1 1048576 0.279234 +1 1048576 0.281924 +1 1048576 0.645455 +1 1048576 0.358510 +1 1048576 0.338876 +1 1048576 0.311379 +1 1048576 0.478020 +1 1048576 0.457328 +1 1048576 0.922813 +1 1048576 0.315230 +1 1048576 0.361892 +1 1048576 0.436356 +1 1048576 3.346255 +1 1048576 0.340653 +1 1048576 0.430751 +1 1048576 0.341479 +1 1048576 0.362218 +1 1048576 0.380118 +1 1048576 0.433329 +1 1048576 0.522161 +1 1048576 0.301188 +1 1048576 0.309026 +1 1048576 0.313020 +1 1048576 0.329725 +1 1048576 0.721538 +1 1048576 0.356006 +1 1048576 0.377238 +1 1048576 0.400985 +1 1048576 0.330313 +1 1048576 0.417887 +1 1048576 0.310634 +1 1048576 0.304684 +1 1048576 0.296047 +1 1048576 0.434614 +1 1048576 1.096251 +1 1048576 0.394923 +1 1048576 0.373571 +1 1048576 0.961021 +1 1048576 0.331893 +1 1048576 0.586724 +1 1048576 0.316532 +1 1048576 0.391673 +1 1048576 0.328345 +1 1048576 0.370846 +1 1048576 0.429184 +1 1048576 0.328940 +1 1048576 0.380479 +1 1048576 0.909847 +1 1048576 0.399778 +1 1048576 0.357438 +1 1048576 0.434657 +1 1048576 0.369152 +1 1048576 0.774317 +1 1048576 0.380315 +1 1048576 0.594006 +1 1048576 0.382240 +1 1048576 0.398896 +1 1048576 0.385336 +1 1048576 0.360807 +1 1048576 0.590481 +1 1048576 0.306441 +1 1048576 0.353531 +1 1048576 0.361737 +1 1048576 0.305629 +1 1048576 0.277001 +1 1048576 0.357538 +1 1048576 0.366642 +1 1048576 0.333604 +1 1048576 0.291768 +1 1048576 0.397511 +1 1048576 0.372269 +1 1048576 0.382504 +1 1048576 0.365037 +1 1048576 0.913836 +1 1048576 0.525876 +1 1048576 0.377183 +1 1048576 0.355784 +1 1048576 0.305524 +1 1048576 0.369735 +1 1048576 0.339975 +1 1048576 0.406857 +1 1048576 0.457658 +1 1048576 0.764182 +1 1048576 0.179838 +1 1048576 0.633365 +1 1048576 0.300601 +1 1048576 1.166256 +1 1048576 0.368106 +1 1048576 0.434529 +1 1048576 0.457441 +1 1048576 0.468703 +1 1048576 0.356799 +1 1048576 0.303938 +1 1048576 0.518257 +1 1048576 0.564692 +1 1048576 0.369228 +1 32768 0.122285 +1 32768 0.134356 +1 32768 0.100156 +1 32768 0.079904 +1 32768 0.106906 +1 32768 0.083985 +1 32768 0.087956 +1 32768 0.123628 +1 32768 0.166506 +1 32768 0.062699 +1 32768 0.335674 +1 32768 0.133804 +1 32768 0.346513 +1 32768 0.080339 +1 32768 0.078475 +1 32768 0.087447 +1 32768 0.112344 +1 32768 0.745783 +1 32768 0.173294 +1 32768 0.103911 +1 32768 0.091341 +1 32768 0.078493 +1 32768 0.188924 +1 32768 0.162028 +1 32768 0.376538 +1 32768 0.111911 +1 32768 0.084880 +1 32768 0.086271 +1 32768 0.089219 +1 32768 0.084307 +1 32768 0.094845 +1 32768 0.171955 +1 32768 0.152916 +1 32768 0.087544 +1 32768 0.167690 +1 32768 0.409246 +1 32768 0.113055 +1 32768 0.105834 +1 32768 0.107420 +1 32768 0.129950 +1 32768 0.130270 +1 32768 0.098310 +1 32768 0.129542 +1 32768 0.120546 +1 32768 0.206711 +1 32768 0.192749 +1 32768 0.138733 +1 32768 0.114678 +1 32768 0.142308 +1 32768 0.122836 +1 32768 0.130867 +1 32768 0.139070 +1 32768 0.132489 +1 32768 0.124303 +1 32768 0.175645 +1 32768 0.079963 +1 32768 0.107180 +1 32768 0.091041 +1 32768 0.259604 +1 32768 0.112868 +1 32768 0.080387 +1 32768 0.086795 +1 32768 0.119271 +1 32768 0.045283 +1 32768 0.502994 +1 32768 0.118433 +1 32768 0.144089 +1 32768 0.083220 +1 32768 0.144715 +1 32768 0.091509 +1 32768 0.141640 +1 32768 0.096476 +1 32768 0.116710 +1 32768 0.271910 +1 32768 0.118779 +1 32768 0.130607 +1 32768 0.107420 +1 32768 0.100373 +1 32768 0.078145 +1 32768 0.110176 +1 32768 0.104521 +1 32768 0.105843 +1 32768 0.133983 +1 32768 0.113232 +1 32768 0.186515 +1 32768 0.106091 +1 32768 0.155689 +1 32768 0.276592 +1 32768 0.173682 +1 32768 0.093803 +1 32768 0.117173 +1 32768 0.352159 +1 32768 0.168202 +1 32768 0.100332 +1 32768 0.112392 +1 32768 0.134274 +1 32768 0.093092 +1 32768 0.078465 +1 32768 0.081385 +1 32768 0.089126 +1 32768 0.088986 +1 32768 0.081931 +1 32768 0.117355 +1 32768 0.090799 +1 32768 0.110199 +1 32768 0.126923 +1 32768 0.077834 +1 32768 0.080063 +1 32768 0.229942 +1 32768 0.085274 +1 32768 0.098127 +1 32768 0.087473 +1 32768 0.146460 +1 32768 0.115403 +1 32768 0.159284 +1 32768 0.113529 +1 32768 0.079590 +1 32768 0.100971 +1 32768 0.077833 +1 32768 0.146359 +1 32768 0.680954 +1 32768 0.079488 +1 32768 0.125558 +1 32768 1.114872 +1 32768 0.090645 +1 32768 0.079608 +1 32768 0.080073 +1 32768 0.396019 +1 32768 0.092791 +1 32768 0.275989 +1 32768 0.084135 +1 32768 0.105320 +1 32768 0.080388 +1 32768 0.074762 +1 32768 0.087282 +1 32768 0.085994 +1 32768 0.204093 +1 32768 0.095559 +1 32768 0.194227 +1 32768 0.080234 +1 32768 0.122060 +1 32768 0.079181 +1 32768 0.278322 +1 32768 0.110014 +1 32768 0.089728 +1 32768 0.142038 +1 32768 0.154751 +1 32768 0.113550 +1 32768 0.084021 +1 32768 0.111495 +1 32768 0.146325 +1 32768 0.146423 +1 32768 0.082877 +1 32768 0.074330 +1 32768 0.087647 +1 32768 0.074790 +1 32768 0.076810 +1 32768 0.077426 +1 32768 0.082419 +1 32768 0.092364 +1 32768 0.236070 +1 32768 0.154448 +1 32768 0.094978 +1 32768 0.146907 +1 32768 0.134093 +1 32768 0.150152 +1 32768 0.130659 +1 32768 0.087064 +1 32768 0.143265 +1 32768 0.164693 +1 32768 0.109059 +1 32768 0.083014 +1 32768 0.085587 +1 32768 0.122263 +1 32768 0.093102 +1 32768 0.150856 +1 32768 0.087901 +1 32768 0.090096 +1 32768 0.089025 +1 32768 0.091478 +1 32768 0.145933 +1 32768 0.321248 +1 32768 0.091139 +1 32768 0.086568 +1 32768 0.120478 +1 32768 0.082096 +1 32768 0.163722 +1 32768 0.116230 +1 32768 0.085677 +1 32768 0.137152 +1 32768 0.201623 +1 32768 0.156145 +1 32768 0.152306 +1 32768 0.101113 +1 32768 0.082506 +1 32768 0.154509 +1 32768 0.084455 +1 32768 0.155887 +1 32768 0.089990 +1 32768 0.083221 diff --git a/s3bench/results/readlatency/readlatency.gnuplot b/s3bench/results/readlatency/readlatency.gnuplot new file mode 100644 index 0000000..aa72f76 --- /dev/null +++ b/s3bench/results/readlatency/readlatency.gnuplot @@ -0,0 +1,151 @@ +#!/usr/bin/gnuplot -persist +# +# +# G N U P L O T +# Version 4.2 patchlevel 5 +# last modified Mar 2009 +# System: Linux 2.6.31-20-generic +# +# Copyright (C) 1986 - 1993, 1998, 2004, 2007 - 2009 +# Thomas Williams, Colin Kelley and many others +# +# Type `help` to access the on-line reference manual. +# The gnuplot FAQ is available from http://www.gnuplot.info/faq/ +# +# Send bug reports and suggestions to +# +# set terminal wxt 0 +# set output +unset clip points +set clip one +unset clip two +set bar 1.000000 +set border 31 front linetype -1 linewidth 1.000 +set xdata +set ydata +set zdata +set x2data +set y2data +set timefmt x "%d/%m/%y,%H:%M" +set timefmt y "%d/%m/%y,%H:%M" +set timefmt z "%d/%m/%y,%H:%M" +set timefmt x2 "%d/%m/%y,%H:%M" +set timefmt y2 "%d/%m/%y,%H:%M" +set timefmt cb "%d/%m/%y,%H:%M" +set boxwidth +set style fill empty border +set style rectangle back fc lt -3 fillstyle solid 1.00 border -1 +set dummy x,y +set format x "% g" +set format y "% g" +set format x2 "% g" +set format y2 "% g" +set format z "% g" +set format cb "% g" +set angles radians +set grid nopolar +set grid xtics nomxtics ytics nomytics noztics nomztics \ + nox2tics nomx2tics noy2tics nomy2tics nocbtics nomcbtics +set grid layerdefault linetype 0 linewidth 1.000, linetype 0 linewidth 1.000 +set key title "" +set key inside right bottom vertical Right noreverse enhanced autotitles nobox +set key noinvert samplen 4 spacing 1 width 0 height 0 +unset label +unset arrow +set style increment default +unset style line +unset style arrow +set style histogram clustered gap 2 title offset character 0, 0, 0 +unset logscale +set offsets 0, 0, 0, 0 +set pointsize 1 +set encoding default +unset polar +unset parametric +unset decimalsign +set view 60, 30, 1, 1 +set view +set samples 100, 100 +set isosamples 10, 10 +set surface +unset contour +set clabel '%8.3g' +set mapping cartesian +set datafile separator whitespace +unset hidden3d +set cntrparam order 4 +set cntrparam linear +set cntrparam levels auto 5 +set cntrparam points 5 +set size ratio 0 1,1 +set origin 0,0 +set style data points +set style function lines +set xzeroaxis linetype -2 linewidth 1.000 +set yzeroaxis linetype -2 linewidth 1.000 +set zzeroaxis linetype -2 linewidth 1.000 +set x2zeroaxis linetype -2 linewidth 1.000 +set y2zeroaxis linetype -2 linewidth 1.000 +set ticslevel 0.5 +set mxtics default +set mytics default +set mztics default +set mx2tics default +set my2tics default +set mcbtics default +set xtics border in scale 1,0.5 mirror norotate offset character 0, 0, 0 +set xtics autofreq norangelimit +set ytics border in scale 1,0.5 mirror norotate offset character 0, 0, 0 +set ytics autofreq norangelimit +set ztics border in scale 1,0.5 nomirror norotate offset character 0, 0, 0 +set ztics autofreq norangelimit +set nox2tics +set noy2tics +set cbtics border in scale 1,0.5 mirror norotate offset character 0, 0, 0 +set cbtics autofreq norangelimit +set title "Time to Fetch 1 MB of Data" +set title offset character 0, 0, 0 font "" norotate +set timestamp bottom +set timestamp "" +set timestamp offset character 0, 0, 0 font "" norotate +set rrange [ * : * ] noreverse nowriteback # (currently [0.00000:10.0000] ) +set trange [ * : * ] noreverse nowriteback # (currently [-5.00000:5.00000] ) +set urange [ * : * ] noreverse nowriteback # (currently [-5.00000:5.00000] ) +set vrange [ * : * ] noreverse nowriteback # (currently [-5.00000:5.00000] ) +set xlabel "Completion Time (s)" +set xlabel offset character 0, 0, 0 font "" textcolor lt -1 norotate +set x2label "" +set x2label offset character 0, 0, 0 font "" textcolor lt -1 norotate +set xrange [ * : * ] noreverse nowriteback # (currently [-10.0000:10.0000] ) +set x2range [ * : * ] noreverse nowriteback # (currently [-10.0000:10.0000] ) +set ylabel "Fraction of Requests" +set ylabel offset character 0, 0, 0 font "" textcolor lt -1 rotate by 90 +set y2label "" +set y2label offset character 0, 0, 0 font "" textcolor lt -1 rotate by 90 +set yrange [ * : * ] noreverse nowriteback # (currently [-10.0000:10.0000] ) +set y2range [ * : * ] noreverse nowriteback # (currently [-10.0000:10.0000] ) +set zlabel "" +set zlabel offset character 0, 0, 0 font "" textcolor lt -1 norotate +set zrange [ * : * ] noreverse nowriteback # (currently [-10.0000:10.0000] ) +set cblabel "" +set cblabel offset character 0, 0, 0 font "" textcolor lt -1 rotate by 90 +set cbrange [ * : * ] noreverse nowriteback # (currently [-10.0000:10.0000] ) +set zero 1e-08 +set lmargin -1 +set bmargin -1 +set rmargin -1 +set tmargin -1 +set locale "C" +set pm3d explicit at s +set pm3d scansautomatic +set pm3d interpolate 1,1 flush begin noftriangles nohidden3d corners2color mean +set palette positive nops_allcF maxcolors 0 gamma 1.5 color model RGB +set palette rgbformulae 7, 5, 15 +set colorbox default +set colorbox vertical origin screen 0.9, 0.2, 0 size screen 0.05, 0.6, 0 front bdefault +set loadpath +set fontpath +set fit noerrorvariables +GNUTERM = "wxt" +plot [0:3] [0:1] "readlatency-32.cdf" using 1:($2/100.0) with lines title "32 Parallel Connections", "readlatency-1M.cdf" using 1:($2/100.0) with lines title "1 Connection", "readlatency-1.cdf" using 1:($2/200.0) with lines title "Single 32 kB Request" +# EOF diff --git a/s3bench/results/readlatency/readlatency.pdf b/s3bench/results/readlatency/readlatency.pdf new file mode 100644 index 0000000000000000000000000000000000000000..b809334167fb93903ba8601689efa9218218e8ba GIT binary patch literal 5219 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 literal 0 HcmV?d00001 -- 2.20.1