Add some measurements of speed reading data from S3.
authorMichael Vrable <mvrable@cs.ucsd.edu>
Tue, 6 Apr 2010 23:41:22 +0000 (16:41 -0700)
committerMichael Vrable <mvrable@cs.ucsd.edu>
Tue, 6 Apr 2010 23:41:22 +0000 (16:41 -0700)
.gitignore
s3bench/CMakeLists.txt
s3bench/readlatency.c [new file with mode: 0644]
s3bench/results/readlatency/readlatency-1.cdf [new file with mode: 0644]
s3bench/results/readlatency/readlatency-1M.cdf [new file with mode: 0644]
s3bench/results/readlatency/readlatency-32.cdf [new file with mode: 0644]
s3bench/results/readlatency/readlatency.cdf [new file with mode: 0644]
s3bench/results/readlatency/readlatency.data [new file with mode: 0644]
s3bench/results/readlatency/readlatency.gnuplot [new file with mode: 0644]
s3bench/results/readlatency/readlatency.pdf [new file with mode: 0644]

index 9542663..b73b5a5 100644 (file)
@@ -14,3 +14,5 @@ microbench/readbench
 microbench/statbench
 nfs3/nfsproxy
 nfs3/synclient
+s3bench/s3readbench
+s3bench/s3readlatency
index 29aabe1..9cb9813 100644 (file)
@@ -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 (file)
index 0000000..6276d69
--- /dev/null
@@ -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 <assert.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <stdint.h>
+#include <string.h>
+#include <pthread.h>
+#include <time.h>
+#include <unistd.h>
+#include <math.h>
+
+#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 <threads> <size>\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 (file)
index 0000000..23d2d41
--- /dev/null
@@ -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 (file)
index 0000000..13af21d
--- /dev/null
@@ -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 (file)
index 0000000..77a7ff3
--- /dev/null
@@ -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 (file)
index 0000000..8d3c751
--- /dev/null
@@ -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 (file)
index 0000000..4eac98b
--- /dev/null
@@ -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 (file)
index 0000000..aa72f76
--- /dev/null
@@ -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 <http://sourceforge.net/projects/gnuplot>
+#    
+# 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 (file)
index 0000000..b809334
Binary files /dev/null and b/s3bench/results/readlatency/readlatency.pdf differ