microbench/statbench
nfs3/nfsproxy
nfs3/synclient
-s3bench/s3readbench
-s3bench/s3readlatency
+cloudbench/s3readbench
+cloudbench/s3readlatency
+++ /dev/null
-#!/usr/bin/python2.6
-
-"""A simple test API for accessing Windows Azure blob storage.
-
-Parts of the code are modeled after boto (a library for accessing Amazon Web
-Services), but this code is far less general and is meant only as a
-proof-of-concept."""
-
-import base64, hashlib, hmac, httplib, os, time
-
-# The version of the Azure API we implement; sent in the x-ms-version header.
-API_VERSION = '2009-09-19'
-
-def uri_decode(s):
- # TODO
- return s
-
-def add_auth_headers(headers, method, path):
- header_order = ['Content-Encoding', 'Content-Language', 'Content-Length',
- 'Content-MD5', 'Content-Type', 'Date', 'If-Modified-Since',
- 'If-Match', 'If-None-Match', 'If-Unmodified-Since',
- 'Range']
-
- if not headers.has_key('Date'):
- headers['Date'] = time.strftime("%a, %d %b %Y %H:%M:%S GMT",
- time.gmtime())
- if not headers.has_key('x-ms-version'):
- headers['x-ms-version'] = API_VERSION
-
- StringToSign = method + "\n"
- for h in header_order:
- if h in headers:
- StringToSign += headers[h] + "\n"
- else:
- StringToSign += "\n"
-
- # Add Canonicalized Headers
- canonized = []
- for (k, v) in headers.items():
- k = k.lower()
- if k.startswith('x-ms-'):
- canonized.append((k, v))
- canonized.sort()
- for (k, v) in canonized:
- StringToSign += "%s:%s\n" % (k, v)
-
- # Add CanonicalizedHeaders Resource
- account_name = os.environ['AZURE_ACCOUNT_NAME']
- account_name = 'bluesky'
- resource = "/" + account_name
- if '?' not in path:
- resource += path
- else:
- (path, params) = path.split('?', 1)
- params = [p.split('=') for p in params.split("&")]
- params = dict((k.lower(), uri_decode(v)) for (k, v) in params)
- resource += path
- for k in sorted(params):
- resource += "\n%s:%s" % (k, params[k])
- StringToSign += resource
-
- # print "String to sign:", repr(StringToSign)
-
- secret_key = os.environ['AZURE_SECRET_KEY']
- secret_key = base64.b64decode(secret_key)
- h = hmac.new(secret_key, digestmod=hashlib.sha256)
- h.update(StringToSign)
-
- signature = base64.b64encode(h.digest())
- headers['Authorization'] = "SharedKey %s:%s" % (account_name, signature)
-
-class Connection:
- def __init__(self):
- self.host = os.environ['AZURE_ACCOUNT_NAME'] + ".blob.core.windows.net"
- self.conn = httplib.HTTPConnection(self.host)
-
- def make_request(self, path, method='GET', body="", headers={}):
- headers = headers.copy()
- headers['Content-Length'] = str(len(body))
- if len(body) > 0:
- headers['Content-MD5'] \
- = base64.b64encode(hashlib.md5(body).digest())
- add_auth_headers(headers, method, path)
-
- # req = "%s %s HTTP/1.1\r\nHost: %s\r\n" % (method, path, host)
- # req = req + ''.join("%s: %s\r\n" % h for h in headers.items()) + "\r\n"
- # print req
-
- self.conn.request(method, path, body, headers)
- response = self.conn.getresponse()
- print "Response:", response.status
- print "Headers:", response.getheaders()
- body = response.read()
-
-if __name__ == '__main__':
- # generate_request("/?comp=list")
- buf = 'A' * 1048576
- conn = Connection()
- for i in range(16):
- conn.make_request('/benchmark/file-1M-' + str(i), 'PUT', buf,
- {'x-ms-blob-type': 'BlockBlob'})
-
- conn = Connection()
- for i in range(16):
- conn.make_request('/benchmark/file-1M-' + str(i), 'GET')
--- /dev/null
+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)
--- /dev/null
+#!/usr/bin/python2.6
+
+"""A simple test API for accessing Windows Azure blob storage.
+
+Parts of the code are modeled after boto (a library for accessing Amazon Web
+Services), but this code is far less general and is meant only as a
+proof-of-concept."""
+
+import base64, hashlib, hmac, httplib, os, time
+
+# The version of the Azure API we implement; sent in the x-ms-version header.
+API_VERSION = '2009-09-19'
+
+def uri_decode(s):
+ # TODO
+ return s
+
+def add_auth_headers(headers, method, path):
+ header_order = ['Content-Encoding', 'Content-Language', 'Content-Length',
+ 'Content-MD5', 'Content-Type', 'Date', 'If-Modified-Since',
+ 'If-Match', 'If-None-Match', 'If-Unmodified-Since',
+ 'Range']
+
+ if not headers.has_key('Date'):
+ headers['Date'] = time.strftime("%a, %d %b %Y %H:%M:%S GMT",
+ time.gmtime())
+ if not headers.has_key('x-ms-version'):
+ headers['x-ms-version'] = API_VERSION
+
+ StringToSign = method + "\n"
+ for h in header_order:
+ if h in headers:
+ StringToSign += headers[h] + "\n"
+ else:
+ StringToSign += "\n"
+
+ # Add Canonicalized Headers
+ canonized = []
+ for (k, v) in headers.items():
+ k = k.lower()
+ if k.startswith('x-ms-'):
+ canonized.append((k, v))
+ canonized.sort()
+ for (k, v) in canonized:
+ StringToSign += "%s:%s\n" % (k, v)
+
+ # Add CanonicalizedHeaders Resource
+ account_name = os.environ['AZURE_ACCOUNT_NAME']
+ account_name = 'bluesky'
+ resource = "/" + account_name
+ if '?' not in path:
+ resource += path
+ else:
+ (path, params) = path.split('?', 1)
+ params = [p.split('=') for p in params.split("&")]
+ params = dict((k.lower(), uri_decode(v)) for (k, v) in params)
+ resource += path
+ for k in sorted(params):
+ resource += "\n%s:%s" % (k, params[k])
+ StringToSign += resource
+
+ # print "String to sign:", repr(StringToSign)
+
+ secret_key = os.environ['AZURE_SECRET_KEY']
+ secret_key = base64.b64decode(secret_key)
+ h = hmac.new(secret_key, digestmod=hashlib.sha256)
+ h.update(StringToSign)
+
+ signature = base64.b64encode(h.digest())
+ headers['Authorization'] = "SharedKey %s:%s" % (account_name, signature)
+
+class Connection:
+ def __init__(self):
+ self.host = os.environ['AZURE_ACCOUNT_NAME'] + ".blob.core.windows.net"
+ self.conn = httplib.HTTPConnection(self.host)
+
+ def make_request(self, path, method='GET', body="", headers={}):
+ headers = headers.copy()
+ headers['Content-Length'] = str(len(body))
+ if len(body) > 0:
+ headers['Content-MD5'] \
+ = base64.b64encode(hashlib.md5(body).digest())
+ add_auth_headers(headers, method, path)
+
+ # req = "%s %s HTTP/1.1\r\nHost: %s\r\n" % (method, path, host)
+ # req = req + ''.join("%s: %s\r\n" % h for h in headers.items()) + "\r\n"
+ # print req
+
+ self.conn.request(method, path, body, headers)
+ response = self.conn.getresponse()
+ print "Response:", response.status
+ print "Headers:", response.getheaders()
+ body = response.read()
+
+if __name__ == '__main__':
+ # generate_request("/?comp=list")
+ buf = 'A' * 1048576
+ conn = Connection()
+ for i in range(16):
+ conn.make_request('/benchmark/file-1M-' + str(i), 'PUT', buf,
+ {'x-ms-blob-type': 'BlockBlob'})
+
+ conn = Connection()
+ for i in range(16):
+ conn.make_request('/benchmark/file-1M-' + str(i), 'GET')
--- /dev/null
+#!/usr/bin/python
+#
+# Run a series of simple test requests against S3 for gathering some basic
+# performance numbers.
+
+import boto, time
+from boto.s3.connection import SubdomainCallingFormat
+from boto.s3.key import Key
+import azure
+
+BUCKET_NAME = 'mvrable-benchmark'
+SIZES = [64, 4096, 32 << 10, 256 << 10, 1 << 20, 4 << 20, 32 << 20]
+
+class S3TestConnection:
+ def __init__(self):
+ self.conn = boto.connect_s3(is_secure=False,
+ calling_format=SubdomainCallingFormat())
+ self.bucket = self.conn.get_bucket(BUCKET_NAME)
+
+ def put_object(self, name, size):
+ buf = 'A' * size
+ k = Key(self.bucket, name)
+ start_time = time.time()
+ k.set_contents_from_string(buf)
+ print "%s: %f" % (name, time.time() - start_time)
+
+ def get_object(self, name, size):
+ k = Key(self.bucket, name)
+ start_time = time.time()
+ buf = k.get_contents_as_string()
+ print "%s: %f" % (name, time.time() - start_time)
+
+class AzureTestConnection:
+ def __init__(self):
+ self.conn = azure.Connection()
+
+ def put_object(self, name, size):
+ buf = 'A' * size
+ start_time = time.time()
+ self.conn.make_request('/benchmark/' + name, 'PUT', buf,
+ {'x-ms-blob-type': 'BlockBlob'})
+ print "%s: %f" % (name, time.time() - start_time)
+
+ def get_object(self, name, size):
+ start_time = time.time()
+ self.conn.make_request('/benchmark/' + name, 'GET')
+ print "%s: %f" % (name, time.time() - start_time)
+
+def run_test():
+ print "==== S3 ===="
+ c = S3TestConnection()
+ for repeat in range(4):
+ for size in SIZES:
+ c.put_object('file-%d-%d' % (size, repeat), size)
+
+ c = S3TestConnection()
+ for repeat in range(4):
+ for size in SIZES:
+ c.get_object('file-%d-%d' % (size, repeat), size)
+
+ print "==== AZURE ===="
+ c = AzureTestConnection()
+ for repeat in range(4):
+ for size in SIZES:
+ c.put_object('file-%d-%d' % (size, repeat), size)
+
+ c = AzureTestConnection()
+ for repeat in range(4):
+ for size in SIZES:
+ c.get_object('file-%d-%d' % (size, repeat), size)
+
+if __name__ == '__main__':
+ run_test()
--- /dev/null
+/* 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;
+
+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];
+ int i = 0;
+ int stage = 0;
+ int measuring = 0;
+
+ ts->n = 0;
+ ts->sum_x = ts->sum_x2 = ts->sum_f = 0.0;
+ ts->bytes_sent = 0;
+
+ ts->timestamp = get_ns();
+ while (test_phase != TERMINATE) {
+ int object = random() % experiment_objects;
+ sprintf(namebuf, "file-%d-%d", experiment_size, object);
+ ts->first_byte_timestamp = 0;
+ do_get(namebuf, experiment_size, ts);
+ long long timestamp = get_ns();
+ long long elapsed = timestamp - ts->timestamp;
+
+ printf("Elapsed[%d-%d]: %lld ns\n", ts->thread_num, i, elapsed);
+ printf(" first data after: %lld ns\n",
+ ts->first_byte_timestamp - ts->timestamp);
+ if (measuring && test_phase == MEASURE) {
+ double e = elapsed / 1e9;
+ double f = (ts->first_byte_timestamp - ts->timestamp) / 1e9;
+ ts->n++;
+ ts->sum_x += e;
+ ts->sum_x2 += e * e;
+ ts->sum_f += f;
+ ts->bytes_sent += experiment_size;
+ }
+
+ i++;
+ if (stage == 0 && i > 2) {
+ barrier_signal();
+ stage = 1;
+ } else if (stage == 1 && ts->n >= 2) {
+ barrier_signal();
+ stage = 2;
+ }
+
+ ts->timestamp = timestamp;
+ if (test_phase == MEASURE)
+ measuring = 1;
+ }
+
+ 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;
+ long long start_time = get_ns();
+
+ test_phase = LAUNCH;
+ barrier_val = thread_count;
+ assert(thread_count <= MAX_THREADS);
+
+ printf("Launching...\n");
+
+ 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);
+
+ printf("Measuring...\n");
+ barrier_val = thread_count;
+ test_phase = MEASURE;
+
+ /* Ensure all threads have measured some activity, then a bit more. */
+ pthread_mutex_lock(&barrier_mutex);
+ while (barrier_val > 0) {
+ pthread_cond_wait(&barrier_cond, &barrier_mutex);
+ }
+ pthread_mutex_unlock(&barrier_mutex);
+ printf("Data in from all threads...\n");
+ sleep(5);
+
+ printf("Terminating...\n");
+ test_phase = TERMINATE;
+
+ for (i = 0; i < thread_count; i++)
+ wait_thread(i);
+
+ int n = 0;
+ double sum_x = 0.0, sum_x2 = 0.0, sum_f = 0.0;
+ double bandwidth = 0.0;
+ for (i = 0; i < thread_count; i++) {
+ n += threads[i].n;
+ sum_x += threads[i].sum_x;
+ sum_x2 += threads[i].sum_x2;
+ sum_f += threads[i].sum_f;
+ bandwidth += threads[i].bytes_sent / threads[i].sum_x;
+ }
+
+ double elapsed = (get_ns() - start_time) / 1e9;
+ printf("*** %d threads, %d byte objects\n",
+ experiment_threads, experiment_size);
+ printf("Elapsed: %f s\n", elapsed);
+ printf("Data points: %d\n", n);
+ double mx = sum_x / n;
+ double sx = sqrt((sum_x2 - 2*sum_x*mx + n*mx*mx) / (n - 1));
+ printf("Time: %f ± %f s\n", mx, sx);
+ printf("Latency to first byte: %f\n", sum_f / n);
+ printf("Bandwidth: %f B/s\n", bandwidth);
+
+ fprintf(statsfile, "%d\t%d\t%f\t%d\t%f\t%f\t%f\n",
+ experiment_threads, experiment_size, elapsed, n,
+ mx, sx, bandwidth);
+
+ printf("Finished.\n");
+}
+
+int main(int argc, char *argv[])
+{
+ statsfile = fopen("readbench.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);
+
+ if (argc < 4) {
+ fprintf(stderr, "Usage: %s <threads> <size> <object-count>\n", argv[0]);
+ return 1;
+ }
+
+ experiment_threads = atoi(argv[1]);
+ experiment_size = atoi(argv[2]);
+ experiment_objects = atoi(argv[3]);
+ assert(experiment_objects > 0);
+ launch_test(experiment_threads);
+
+ printf("Done.\n");
+ fclose(statsfile);
+
+ return 0;
+}
--- /dev/null
+/* 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 1024
+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;
+}
--- /dev/null
+0.245687 1
+0.345290 2
+0.360398 3
+0.367082 4
+0.370840 5
+0.375545 6
+0.377836 7
+0.389673 8
+0.392879 9
+0.393538 10
+0.394881 11
+0.396469 12
+0.402658 13
+0.405560 14
+0.405616 15
+0.413440 16
+0.415442 17
+0.415788 18
+0.417165 19
+0.420620 20
+0.421827 21
+0.422170 22
+0.422693 23
+0.424844 24
+0.425984 25
+0.426748 26
+0.427215 27
+0.435269 28
+0.436552 29
+0.437202 30
+0.440512 31
+0.443225 32
+0.445447 33
+0.447369 34
+0.448404 35
+0.450101 36
+0.450672 37
+0.453190 38
+0.455920 39
+0.456537 40
+0.470215 41
+0.471934 42
+0.472819 43
+0.479924 44
+0.485398 45
+0.486872 46
+0.555995 47
+0.629986 48
+0.853291 49
+1.162495 50
--- /dev/null
+0.076027 1
+0.086907 2
+0.108150 3
+0.109142 4
+0.109332 5
+0.110458 6
+0.110731 7
+0.110744 8
+0.111674 9
+0.112058 10
+0.112290 11
+0.112309 12
+0.112920 13
+0.113302 14
+0.115402 15
+0.115530 16
+0.116263 17
+0.116558 18
+0.116687 19
+0.116836 20
+0.118067 21
+0.118260 22
+0.118514 23
+0.119031 24
+0.121318 25
+0.124867 26
+0.125090 27
+0.125838 28
+0.126451 29
+0.127242 30
+0.127554 31
+0.128401 32
+0.129554 33
+0.133508 34
+0.133875 35
+0.133879 36
+0.135534 37
+0.137921 38
+0.148270 39
+0.151381 40
+0.156417 41
+0.159469 42
+0.175155 43
+0.180779 44
+0.187874 45
+0.200517 46
+0.239237 47
+0.319098 48
+0.426761 49
+0.567450 50
--- /dev/null
+0.480001 1
+0.482716 2
+0.492883 3
+0.496570 4
+0.503112 5
+0.503467 6
+0.508914 7
+0.511720 8
+0.515805 9
+0.534276 10
+0.536384 11
+0.536638 12
+0.541766 13
+0.542662 14
+0.546021 15
+0.551714 16
+0.553925 17
+0.554129 18
+0.562453 19
+0.563337 20
+0.569507 21
+0.574251 22
+0.574472 23
+0.575643 24
+0.576192 25
+0.577031 26
+0.580595 27
+0.580729 28
+0.582319 29
+0.583317 30
+0.590730 31
+0.600255 32
+0.613829 33
+0.621110 34
+0.623255 35
+0.633959 36
+0.658147 37
+0.715391 38
+0.724452 39
+0.733508 40
+0.749275 41
+0.755967 42
+0.763497 43
+0.864642 44
+0.881960 45
+1.039886 46
+1.058287 47
+1.092262 48
+1.137048 49
+3.377304 50
--- /dev/null
+0.133314 1
+0.170866 2
+0.231067 3
+0.234155 4
+0.237463 5
+0.244822 6
+0.244956 7
+0.252016 8
+0.255527 9
+0.260182 10
+0.260419 11
+0.260492 12
+0.260549 13
+0.261018 14
+0.261437 15
+0.261555 16
+0.262166 17
+0.264284 18
+0.264401 19
+0.265063 20
+0.266273 21
+0.267303 22
+0.267396 23
+0.270823 24
+0.271162 25
+0.271301 26
+0.271752 27
+0.274270 28
+0.278991 29
+0.282018 30
+0.282729 31
+0.286325 32
+0.288635 33
+0.295905 34
+0.298553 35
+0.302857 36
+0.305343 37
+0.305371 38
+0.313010 39
+0.317290 40
+0.319708 41
+0.323427 42
+0.328343 43
+0.330849 44
+0.365746 45
+0.366931 46
+0.395012 47
+0.458960 48
+0.520875 49
+0.682489 50
--- /dev/null
+0.136572 1
+0.137600 2
+0.137704 3
+0.138383 4
+0.138731 5
+0.139637 6
+0.139669 7
+0.139699 8
+0.139715 9
+0.141618 10
+0.141648 11
+0.142345 12
+0.142726 13
+0.144057 14
+0.144187 15
+0.144413 16
+0.144934 17
+0.145467 18
+0.146144 19
+0.146220 20
+0.146517 21
+0.146610 22
+0.146824 23
+0.148209 24
+0.148395 25
+0.149497 26
+0.153588 27
+0.154635 28
+0.156039 29
+0.157500 30
+0.157890 31
+0.159047 32
+0.162957 33
+0.164461 34
+0.165460 35
+0.167829 36
+0.172857 37
+0.175467 38
+0.180007 39
+0.182485 40
+0.190575 41
+0.213047 42
+0.333999 43
+0.350475 44
+0.352473 45
+0.364994 46
+0.367192 47
+0.370064 48
+0.417487 49
+0.845507 50
--- /dev/null
+0.634686 1
+0.659104 2
+0.661358 3
+0.661938 4
+0.664640 5
+0.677291 6
+0.692262 7
+0.697721 8
+0.698311 9
+0.705161 10
+0.706505 11
+0.707654 12
+0.719907 13
+0.721084 14
+0.721250 15
+0.722392 16
+0.725787 17
+0.726579 18
+0.726745 19
+0.729102 20
+0.733332 21
+0.737244 22
+0.744478 23
+0.750089 24
+0.756589 25
+0.761532 26
+0.764396 27
+0.771520 28
+0.777071 29
+0.778882 30
+0.791441 31
+0.856516 32
+0.862874 33
+0.892377 34
+1.008829 35
+1.010859 36
+1.092319 37
+1.147543 38
+1.192496 39
+1.220797 40
+1.479573 41
+1.558679 42
+1.585885 43
+1.698720 44
+1.715090 45
+1.861698 46
+2.043960 47
+2.273941 48
+2.553916 49
+2.999475 50
--- /dev/null
+0.168244 1
+0.171188 2
+0.171733 3
+0.172065 4
+0.172331 5
+0.172368 6
+0.172819 7
+0.174151 8
+0.178355 9
+0.178456 10
+0.178727 11
+0.179192 12
+0.180987 13
+0.181313 14
+0.181845 15
+0.182375 16
+0.183303 17
+0.184009 18
+0.184766 19
+0.184931 20
+0.185022 21
+0.190962 22
+0.191530 23
+0.191685 24
+0.191934 25
+0.194145 26
+0.194208 27
+0.195600 28
+0.200455 29
+0.200667 30
+0.202730 31
+0.202954 32
+0.204627 33
+0.205725 34
+0.206416 35
+0.208362 36
+0.208747 37
+0.223604 38
+0.229388 39
+0.230639 40
+0.237784 41
+0.241829 42
+0.256305 43
+0.262248 44
+0.271086 45
+0.275066 46
+0.282661 47
+0.285266 48
+0.312008 49
+0.622745 50
--- /dev/null
+0.075435 1
+0.075909 2
+0.076732 3
+0.076836 4
+0.076860 5
+0.077128 6
+0.077527 7
+0.078547 8
+0.079255 9
+0.080335 10
+0.081069 11
+0.081366 12
+0.082075 13
+0.082163 14
+0.082489 15
+0.083140 16
+0.084478 17
+0.085318 18
+0.085522 19
+0.085738 20
+0.086473 21
+0.087050 22
+0.087528 23
+0.087994 24
+0.088028 25
+0.088699 26
+0.088903 27
+0.090443 28
+0.090869 29
+0.094390 30
+0.094736 31
+0.095297 32
+0.095407 33
+0.097203 34
+0.097846 35
+0.097925 36
+0.097987 37
+0.098213 38
+0.098420 39
+0.098773 40
+0.106534 41
+0.108415 42
+0.120563 43
+0.121449 44
+0.122755 45
+0.150452 46
+0.160482 47
+0.163673 48
+0.275275 49
+0.279576 50
--- /dev/null
+0.352564 1
+0.355583 2
+0.387133 3
+0.411746 4
+0.420441 5
+0.427886 6
+0.430660 7
+0.433188 8
+0.446063 9
+0.451374 10
+0.459913 11
+0.494536 12
+0.495600 13
+0.508426 14
+0.541106 15
+0.545735 16
+0.564988 17
+0.566355 18
+0.584041 19
+0.660245 20
+0.670523 21
+0.678975 22
+0.710695 23
+0.722698 24
+0.742232 25
+0.756707 26
+0.760219 27
+0.811378 28
+0.819761 29
+0.854134 30
+0.874385 31
+0.908241 32
+0.938006 33
+0.966720 34
+1.040874 35
+1.075312 36
+1.170519 37
+1.187432 38
+1.243601 39
+1.251721 40
+1.417437 41
+1.433387 42
+1.437563 43
+1.441603 44
+1.755416 45
+2.405115 46
+2.831448 47
+5.040258 48
+5.386386 49
+6.796262 50
--- /dev/null
+0.465050 1
+0.478552 2
+0.490637 3
+0.507725 4
+0.516628 5
+0.532548 6
+0.556489 7
+0.560314 8
+0.580638 9
+0.587083 10
+0.588637 11
+0.597403 12
+0.597515 13
+0.619816 14
+0.621097 15
+0.627480 16
+0.628297 17
+0.637058 18
+0.671010 19
+0.724936 20
+0.739166 21
+0.744428 22
+0.750437 23
+0.790299 24
+0.839736 25
+0.846018 26
+0.847255 27
+0.859049 28
+0.873550 29
+0.955810 30
+0.963168 31
+1.060531 32
+1.065136 33
+1.133044 34
+1.159509 35
+1.214417 36
+1.285700 37
+1.326026 38
+1.450074 39
+1.450743 40
+1.502949 41
+1.751362 42
+1.759409 43
+1.939950 44
+2.017670 45
+2.098310 46
+2.117201 47
+3.113510 48
+3.532003 49
+3.859827 50
--- /dev/null
+0.127670 1
+0.139159 2
+0.140796 3
+0.140886 4
+0.144707 5
+0.149260 6
+0.151406 7
+0.156054 8
+0.158292 9
+0.160039 10
+0.161772 11
+0.163227 12
+0.164808 13
+0.165752 14
+0.171318 15
+0.171724 16
+0.172714 17
+0.172780 18
+0.180535 19
+0.181573 20
+0.189942 21
+0.197406 22
+0.197827 23
+0.198737 24
+0.206770 25
+0.210387 26
+0.210670 27
+0.211556 28
+0.222975 29
+0.225185 30
+0.226005 31
+0.229111 32
+0.236567 33
+0.243092 34
+0.269524 35
+0.279847 36
+0.308041 37
+0.312820 38
+0.313735 39
+0.314373 40
+0.315597 41
+0.336576 42
+0.353541 43
+0.354057 44
+0.383149 45
+0.461141 46
+0.511054 47
+0.519109 48
+0.609509 49
+0.834966 50
--- /dev/null
+0.287997 1
+0.305924 2
+0.316661 3
+0.322573 4
+0.333999 5
+0.336101 6
+0.355837 7
+0.358911 8
+0.363610 9
+0.365872 10
+0.372265 11
+0.378668 12
+0.395366 13
+0.405168 14
+0.408555 15
+0.421775 16
+0.436949 17
+0.448725 18
+0.454666 19
+0.456205 20
+0.462362 21
+0.469805 22
+0.474192 23
+0.474867 24
+0.476734 25
+0.480384 26
+0.486740 27
+0.489189 28
+0.493788 29
+0.509452 30
+0.526039 31
+0.534095 32
+0.545003 33
+0.568957 34
+0.570622 35
+0.616013 36
+0.648943 37
+0.659637 38
+0.710386 39
+0.714759 40
+0.730293 41
+0.792584 42
+0.825795 43
+0.901448 44
+0.972393 45
+1.521899 46
+2.415583 47
+2.625667 48
+4.271549 49
+6.913418 50
--- /dev/null
+1.017843 1
+1.104489 2
+1.141960 3
+1.142657 4
+1.240218 5
+1.247494 6
+1.307643 7
+1.348979 8
+1.471669 9
+1.521570 10
+1.570565 11
+1.641516 12
+1.657084 13
+1.861100 14
+2.021590 15
+2.034749 16
+2.274792 17
+2.289538 18
+2.324902 19
+2.349816 20
+2.368664 21
+2.376337 22
+2.385706 23
+2.523639 24
+2.541235 25
+2.553272 26
+2.557527 27
+2.590797 28
+2.600271 29
+2.631471 30
+2.659027 31
+2.717545 32
+2.723114 33
+2.800357 34
+2.809402 35
+2.841195 36
+2.904280 37
+2.930478 38
+3.096425 39
+3.154959 40
+3.183998 41
+3.253938 42
+3.313816 43
+3.358172 44
+3.384279 45
+3.420114 46
+3.461719 47
+4.352773 48
+5.112540 49
+7.061153 50
--- /dev/null
+0.223768 1
+0.232901 2
+0.236511 3
+0.237137 4
+0.250726 5
+0.257683 6
+0.261461 7
+0.271269 8
+0.273937 9
+0.276115 10
+0.277965 11
+0.283640 12
+0.286126 13
+0.307738 14
+0.310412 15
+0.325662 16
+0.332208 17
+0.341298 18
+0.363187 19
+0.380359 20
+0.381212 21
+0.385519 22
+0.388745 23
+0.390864 24
+0.392959 25
+0.398682 26
+0.399855 27
+0.400582 28
+0.419970 29
+0.435165 30
+0.442122 31
+0.444850 32
+0.450893 33
+0.462023 34
+0.466786 35
+0.517143 36
+0.527216 37
+0.598756 38
+0.614661 39
+0.618670 40
+0.651237 41
+0.974916 42
+0.977591 43
+1.292450 44
+1.415784 45
+2.076339 46
+3.114305 47
+6.116133 48
+9.266135 49
+10.135546 50
--- /dev/null
+0.093003 1
+0.100532 2
+0.111189 3
+0.114553 4
+0.123482 5
+0.132481 6
+0.139696 7
+0.144190 8
+0.150402 9
+0.159960 10
+0.162781 11
+0.172965 12
+0.179320 13
+0.179932 14
+0.185528 15
+0.185990 16
+0.187904 17
+0.195691 18
+0.198600 19
+0.199014 20
+0.211796 21
+0.216178 22
+0.224462 23
+0.227520 24
+0.252301 25
+0.255014 26
+0.264581 27
+0.281093 28
+0.286758 29
+0.291855 30
+0.292185 31
+0.292920 32
+0.296656 33
+0.297570 34
+0.299365 35
+0.300408 36
+0.308339 37
+0.311230 38
+0.312716 39
+0.313435 40
+0.314415 41
+0.315741 42
+0.323363 43
+0.336510 44
+0.343038 45
+0.362404 46
+0.374527 47
+0.487501 48
+0.850804 49
+1.481814 50
--- /dev/null
+0.320708 1
+0.321758 2
+0.324406 3
+0.327472 4
+0.330214 5
+0.332777 6
+0.334935 7
+0.339416 8
+0.342414 9
+0.343828 10
+0.344684 11
+0.344728 12
+0.345439 13
+0.347097 14
+0.353502 15
+0.354846 16
+0.357799 17
+0.358466 18
+0.360736 19
+0.362321 20
+0.371280 21
+0.374685 22
+0.383341 23
+0.383539 24
+0.386731 25
+0.396191 26
+0.410960 27
+0.411047 28
+0.416480 29
+0.418475 30
+0.428096 31
+0.474335 32
+0.479541 33
+0.492374 34
+0.521502 35
+0.544042 36
+0.545463 37
+0.552806 38
+0.554456 39
+0.558737 40
+0.599397 41
+0.600302 42
+0.615819 43
+0.653976 44
+0.702853 45
+0.752009 46
+0.759477 47
+1.087848 48
+1.640676 49
+2.598370 50
--- /dev/null
+0.165836 1
+0.172725 2
+0.176997 3
+0.179092 4
+0.185445 5
+0.192720 6
+0.195285 7
+0.204091 8
+0.207490 9
+0.219538 10
+0.222120 11
+0.223593 12
+0.224733 13
+0.228416 14
+0.233610 15
+0.255785 16
+0.290965 17
+0.303250 18
+0.305370 19
+0.315949 20
+0.316281 21
+0.317867 22
+0.320637 23
+0.323186 24
+0.333564 25
+0.340441 26
+0.357503 27
+0.363239 28
+0.368639 29
+0.414693 30
+0.419667 31
+0.420447 32
+0.440126 33
+0.459472 34
+0.463736 35
+0.464795 36
+0.475847 37
+0.516005 38
+0.529694 39
+0.544383 40
+0.607652 41
+0.617780 42
+0.691157 43
+0.711014 44
+0.826032 45
+0.971492 46
+1.277428 47
+1.886146 48
+3.109511 49
+5.108701 50
--- /dev/null
+0.315041 1
+0.372568 2
+0.453493 3
+0.461752 4
+0.468445 5
+0.469034 6
+0.471331 7
+0.472842 8
+0.487815 9
+0.489341 10
+0.489516 11
+0.489572 12
+0.500103 13
+0.504185 14
+0.505418 15
+0.511986 16
+0.516818 17
+0.519116 18
+0.540201 19
+0.540603 20
+0.552978 21
+0.598851 22
+0.605899 23
+0.662358 24
+0.735214 25
+0.775136 26
+0.819564 27
+0.845229 28
+0.864779 29
+0.914197 30
+0.956463 31
+0.977888 32
+0.994708 33
+0.995344 34
+1.001803 35
+1.019263 36
+1.033650 37
+1.494309 38
+1.495176 39
+1.548473 40
+1.554519 41
+1.557072 42
+1.585460 43
+1.665548 44
+2.329129 45
+3.135419 46
+3.539706 47
+4.251801 48
+8.249081 49
+10.316540 50
--- /dev/null
+0.282950 1
+0.285051 2
+0.299030 3
+0.318625 4
+0.321437 5
+0.346503 6
+0.373888 7
+0.379150 8
+0.384000 9
+0.387062 10
+0.387406 11
+0.387917 12
+0.390032 13
+0.390435 14
+0.405090 15
+0.427465 16
+0.435509 17
+0.435711 18
+0.438157 19
+0.440436 20
+0.441607 21
+0.443406 22
+0.450902 23
+0.452702 24
+0.453485 25
+0.463270 26
+0.464915 27
+0.467441 28
+0.475191 29
+0.504247 30
+0.533251 31
+0.553147 32
+0.563646 33
+0.599644 34
+0.622521 35
+0.623377 36
+0.654838 37
+0.697466 38
+0.736914 39
+0.741550 40
+0.779627 41
+0.792089 42
+0.819800 43
+0.828229 44
+0.910522 45
+0.962283 46
+1.000304 47
+1.332708 48
+2.515442 49
+3.485365 50
--- /dev/null
+0.110075 1
+0.113153 2
+0.131290 3
+0.152226 4
+0.161774 5
+0.171094 6
+0.175728 7
+0.177893 8
+0.178232 9
+0.178246 10
+0.188684 11
+0.196751 12
+0.199627 13
+0.203143 14
+0.209620 15
+0.231370 16
+0.282756 17
+0.286288 18
+0.286951 19
+0.287151 20
+0.287693 21
+0.289126 22
+0.289864 23
+0.296791 24
+0.301590 25
+0.303046 26
+0.305021 27
+0.311553 28
+0.315374 29
+0.318581 30
+0.318899 31
+0.320124 32
+0.331609 33
+0.334437 34
+0.339490 35
+0.344502 36
+0.351140 37
+0.369537 38
+0.385782 39
+0.396039 40
+0.416204 41
+0.431640 42
+0.476233 43
+0.510854 44
+0.560755 45
+0.601894 46
+0.609187 47
+0.690171 48
+0.799814 49
+0.953771 50
--- /dev/null
+0.387370 1
+0.420474 2
+0.427990 3
+0.428242 4
+0.433427 5
+0.439371 6
+0.440618 7
+0.443800 8
+0.443963 9
+0.445555 10
+0.445586 11
+0.449234 12
+0.453283 13
+0.455577 14
+0.459919 15
+0.460076 16
+0.460827 17
+0.462057 18
+0.463946 19
+0.465899 20
+0.468981 21
+0.469014 22
+0.470001 23
+0.471863 24
+0.480474 25
+0.482672 26
+0.486090 27
+0.489519 28
+0.503078 29
+0.527975 30
+0.548277 31
+0.575468 32
+0.591658 33
+0.593116 34
+0.600105 35
+0.614442 36
+0.626683 37
+0.650574 38
+0.678713 39
+0.739093 40
+0.756957 41
+0.996935 42
+1.007214 43
+1.050924 44
+1.164622 45
+1.246041 46
+1.263029 47
+1.673348 48
+1.684793 49
+1.706435 50
--- /dev/null
+0.252082 1
+0.262835 2
+0.267069 3
+0.268972 4
+0.271283 5
+0.271968 6
+0.285898 7
+0.288539 8
+0.290525 9
+0.297670 10
+0.298457 11
+0.299235 12
+0.302757 13
+0.303202 14
+0.309382 15
+0.311959 16
+0.318536 17
+0.342610 18
+0.357143 19
+0.362377 20
+0.377414 21
+0.393371 22
+0.394127 23
+0.406547 24
+0.437309 25
+0.457749 26
+0.458268 27
+0.461772 28
+0.476412 29
+0.482878 30
+0.489856 31
+0.492419 32
+0.492565 33
+0.494337 34
+0.508374 35
+0.509599 36
+0.512679 37
+0.513125 38
+0.530224 39
+0.564522 40
+0.595444 41
+0.646980 42
+0.712869 43
+0.727326 44
+0.727479 45
+0.747465 46
+0.754571 47
+0.789464 48
+2.095580 49
+3.536563 50
--- /dev/null
+0.722585 1
+0.730459 2
+0.751562 3
+0.755959 4
+0.756664 5
+0.766769 6
+0.767292 7
+0.782020 8
+0.803338 9
+0.805429 10
+0.820065 11
+0.821508 12
+0.845232 13
+0.851713 14
+0.860864 15
+0.863363 16
+0.871315 17
+0.872050 18
+0.872328 19
+0.890196 20
+0.908485 21
+0.913455 22
+0.922634 23
+0.959389 24
+0.989300 25
+1.059116 26
+1.080607 27
+1.082216 28
+1.187457 29
+1.199473 30
+1.210056 31
+1.247727 32
+1.277437 33
+1.305777 34
+1.384346 35
+1.426886 36
+1.431333 37
+1.489323 38
+1.497885 39
+1.529765 40
+1.808024 41
+1.964544 42
+2.042603 43
+2.065043 44
+2.067612 45
+2.236464 46
+2.530139 47
+2.567583 48
+3.202855 49
+3.328836 50
--- /dev/null
+0.354971 1
+0.357379 2
+0.357664 3
+0.363853 4
+0.366189 5
+0.366725 6
+0.378049 7
+0.379281 8
+0.383338 9
+0.418335 10
+0.427699 11
+0.436426 12
+0.456600 13
+0.497344 14
+0.503531 15
+0.526886 16
+0.533928 17
+0.540759 18
+0.568319 19
+0.569649 20
+0.575852 21
+0.578106 22
+0.588393 23
+0.599483 24
+0.600636 25
+0.601642 26
+0.659283 27
+0.661862 28
+0.710328 29
+0.750682 30
+0.764487 31
+0.772624 32
+0.783391 33
+0.789898 34
+0.816793 35
+0.817834 36
+0.823085 37
+0.841538 38
+0.911350 39
+0.930116 40
+0.975762 41
+0.980841 42
+1.900125 43
+3.598765 44
+4.648489 45
+4.768272 46
+5.255166 47
+6.544232 48
+7.400276 49
+10.181641 50
--- /dev/null
+0.436958 1
+0.442349 2
+0.446188 3
+0.446526 4
+0.447072 5
+0.449505 6
+0.452462 7
+0.452938 8
+0.480482 9
+0.483810 10
+0.486779 11
+0.490229 12
+0.495360 13
+0.498287 14
+0.501021 15
+0.506601 16
+0.525137 17
+0.525751 18
+0.534655 19
+0.540972 20
+0.543379 21
+0.569280 22
+0.578896 23
+0.582124 24
+0.596567 25
+0.598439 26
+0.629303 27
+0.636794 28
+0.640622 29
+0.649724 30
+0.650746 31
+0.661452 32
+0.680081 33
+0.736649 34
+0.800315 35
+0.899667 36
+0.937369 37
+0.991671 38
+1.017572 39
+1.040747 40
+1.050770 41
+1.135636 42
+1.172126 43
+1.233788 44
+1.282158 45
+1.285328 46
+1.513954 47
+1.535227 48
+2.718857 49
+6.092311 50
--- /dev/null
+0.207809 1
+0.210341 2
+0.216672 3
+0.229072 4
+0.230190 5
+0.243494 6
+0.249199 7
+0.249747 8
+0.254737 9
+0.262573 10
+0.264471 11
+0.265526 12
+0.270253 13
+0.270938 14
+0.277311 15
+0.283762 16
+0.292132 17
+0.303279 18
+0.307438 19
+0.315133 20
+0.315591 21
+0.318886 22
+0.320538 23
+0.328339 24
+0.338395 25
+0.359679 26
+0.364087 27
+0.364999 28
+0.365514 29
+0.371369 30
+0.395431 31
+0.395508 32
+0.411270 33
+0.415671 34
+0.416403 35
+0.422615 36
+0.435256 37
+0.435323 38
+0.439614 39
+0.445843 40
+0.454349 41
+0.455975 42
+0.507338 43
+0.515321 44
+0.523182 45
+0.596029 46
+0.728456 47
+0.731795 48
+5.142825 49
+5.308934 50
--- /dev/null
+0.117725 1
+0.121496 2
+0.125381 3
+0.129632 4
+0.130158 5
+0.132706 6
+0.135024 7
+0.137198 8
+0.140042 9
+0.142316 10
+0.144283 11
+0.145207 12
+0.147477 13
+0.147834 14
+0.150808 15
+0.151533 16
+0.153095 17
+0.164931 18
+0.172472 19
+0.173853 20
+0.175306 21
+0.189517 22
+0.198684 23
+0.200023 24
+0.205948 25
+0.211733 26
+0.212687 27
+0.219900 28
+0.245731 29
+0.272969 30
+0.301125 31
+0.303853 32
+0.312639 33
+0.316149 34
+0.321799 35
+0.322341 36
+0.327041 37
+0.327308 38
+0.327724 39
+0.332366 40
+0.341731 41
+0.350318 42
+0.365407 43
+0.374201 44
+0.399834 45
+0.411166 46
+0.794733 47
+0.843125 48
+2.193257 49
+3.394338 50
--- /dev/null
+0.269593 1
+0.292004 2
+0.293263 3
+0.299030 4
+0.300683 5
+0.301857 6
+0.310410 7
+0.311620 8
+0.312849 9
+0.316849 10
+0.317041 11
+0.322589 12
+0.322838 13
+0.325490 14
+0.327279 15
+0.331036 16
+0.331751 17
+0.339879 18
+0.349173 19
+0.351914 20
+0.365284 21
+0.371149 22
+0.381768 23
+0.410030 24
+0.411842 25
+0.419738 26
+0.424178 27
+0.425377 28
+0.443962 29
+0.445203 30
+0.463517 31
+0.471101 32
+0.481116 33
+0.483933 34
+0.496548 35
+0.530912 36
+0.539329 37
+0.543502 38
+0.552497 39
+0.603428 40
+0.660331 41
+0.768841 42
+0.829258 43
+0.871868 44
+1.079242 45
+1.169184 46
+1.965773 47
+2.880055 48
+4.299915 49
+5.339894 50
--- /dev/null
+0.823624 1
+0.828623 2
+0.833926 3
+0.839289 4
+0.860543 5
+0.872630 6
+0.907398 7
+0.907493 8
+0.927062 9
+0.947692 10
+0.968468 11
+0.972356 12
+0.980378 13
+0.997080 14
+1.000864 15
+1.042486 16
+1.075130 17
+1.119078 18
+1.147873 19
+1.163680 20
+1.168883 21
+1.298383 22
+1.357506 23
+1.364537 24
+1.371874 25
+1.477430 26
+1.509745 27
+1.624671 28
+1.653217 29
+1.681779 30
+1.977644 31
+2.065403 32
+2.068046 33
+2.132446 34
+2.133889 35
+2.244374 36
+2.249451 37
+2.371983 38
+2.409708 39
+2.419493 40
+2.586412 41
+2.611856 42
+2.732816 43
+2.883365 44
+3.031712 45
+3.122876 46
+3.471334 47
+3.706546 48
+5.117412 49
+16.016403 50
--- /dev/null
+0.184803 1
+0.188250 2
+0.191853 3
+0.197854 4
+0.206411 5
+0.208242 6
+0.208631 7
+0.211700 8
+0.221974 9
+0.224119 10
+0.233147 11
+0.237508 12
+0.248749 13
+0.259401 14
+0.263739 15
+0.265608 16
+0.267680 17
+0.267745 18
+0.275002 19
+0.275011 20
+0.279171 21
+0.283785 22
+0.284212 23
+0.309211 24
+0.312388 25
+0.318360 26
+0.359898 27
+0.370907 28
+0.378194 29
+0.382001 30
+0.386099 31
+0.392152 32
+0.396473 33
+0.401369 34
+0.406831 35
+0.407520 36
+0.408716 37
+0.413687 38
+0.419214 39
+0.421851 40
+0.422032 41
+0.433536 42
+0.446774 43
+0.492554 44
+0.542571 45
+0.621690 46
+0.651811 47
+0.973281 48
+2.429908 49
+3.201853 50
--- /dev/null
+0.093638 1
+0.094265 2
+0.095373 3
+0.096140 4
+0.098276 5
+0.099673 6
+0.103722 7
+0.108289 8
+0.108655 9
+0.113746 10
+0.114322 11
+0.114343 12
+0.119483 13
+0.119631 14
+0.120756 15
+0.120946 16
+0.125247 17
+0.127360 18
+0.128423 19
+0.129701 20
+0.130854 21
+0.133157 22
+0.139184 23
+0.139750 24
+0.142275 25
+0.153232 26
+0.158768 27
+0.175046 28
+0.192480 29
+0.239638 30
+0.282481 31
+0.284906 32
+0.288384 33
+0.288471 34
+0.294434 35
+0.296839 36
+0.299306 37
+0.299879 38
+0.307618 39
+0.308699 40
+0.311071 41
+0.319989 42
+0.321082 43
+0.324899 44
+0.332656 45
+0.335878 46
+0.343437 47
+0.394514 48
+0.840962 49
+0.890544 50
--- /dev/null
+0.038313 1
+0.038948 2
+0.039053 3
+0.039119 4
+0.039531 5
+0.039927 6
+0.040109 7
+0.040223 8
+0.040267 9
+0.040355 10
+0.040459 11
+0.040690 12
+0.040747 13
+0.040749 14
+0.040807 15
+0.040838 16
+0.040839 17
+0.040866 18
+0.040884 19
+0.040937 20
+0.041118 21
+0.041195 22
+0.041259 23
+0.041325 24
+0.041332 25
+0.041348 26
+0.041354 27
+0.041413 28
+0.041496 29
+0.041531 30
+0.041541 31
+0.041583 32
+0.041603 33
+0.041679 34
+0.041706 35
+0.041719 36
+0.041810 37
+0.041811 38
+0.041855 39
+0.042090 40
+0.042185 41
+0.042192 42
+0.042240 43
+0.042275 44
+0.042312 45
+0.042378 46
+0.042459 47
+0.042460 48
+0.042469 49
+0.042470 50
+0.042480 51
+0.042494 52
+0.042549 53
+0.042606 54
+0.042618 55
+0.042620 56
+0.042639 57
+0.042639 58
+0.042701 59
+0.042711 60
+0.042713 61
+0.042740 62
+0.042803 63
+0.042860 64
+0.042876 65
+0.042878 66
+0.042916 67
+0.042952 68
+0.042997 69
+0.043017 70
+0.043018 71
+0.043018 72
+0.043032 73
+0.043065 74
+0.043092 75
+0.043122 76
+0.043176 77
+0.043178 78
+0.043235 79
+0.043273 80
+0.043275 81
+0.043276 82
+0.043349 83
+0.043399 84
+0.043399 85
+0.043401 86
+0.043453 87
+0.043531 88
+0.043595 89
+0.043601 90
+0.043670 91
+0.043683 92
+0.043692 93
+0.043728 94
+0.043757 95
+0.043784 96
+0.043789 97
+0.043797 98
+0.043868 99
+0.043894 100
+0.043903 101
+0.043942 102
+0.043968 103
+0.043980 104
+0.043982 105
+0.044109 106
+0.044122 107
+0.044146 108
+0.044146 109
+0.044207 110
+0.044211 111
+0.044211 112
+0.044251 113
+0.044280 114
+0.044330 115
+0.044332 116
+0.044337 117
+0.044383 118
+0.044383 119
+0.044436 120
+0.044441 121
+0.044450 122
+0.044464 123
+0.044481 124
+0.044570 125
+0.044586 126
+0.044653 127
+0.044705 128
+0.044718 129
+0.044743 130
+0.044775 131
+0.044788 132
+0.044811 133
+0.044880 134
+0.044901 135
+0.044903 136
+0.044907 137
+0.044912 138
+0.044918 139
+0.044937 140
+0.044970 141
+0.044982 142
+0.044987 143
+0.045016 144
+0.045022 145
+0.045045 146
+0.045066 147
+0.045073 148
+0.045107 149
+0.045114 150
+0.045155 151
+0.045184 152
+0.045196 153
+0.045201 154
+0.045229 155
+0.045240 156
+0.045247 157
+0.045281 158
+0.045347 159
+0.045378 160
+0.045397 161
+0.045407 162
+0.045445 163
+0.045492 164
+0.045511 165
+0.045525 166
+0.045553 167
+0.045562 168
+0.045573 169
+0.045597 170
+0.045601 171
+0.045620 172
+0.045654 173
+0.045673 174
+0.045699 175
+0.045710 176
+0.045727 177
+0.045732 178
+0.045733 179
+0.045778 180
+0.045793 181
+0.045913 182
+0.045917 183
+0.045961 184
+0.045963 185
+0.045982 186
+0.045983 187
+0.046001 188
+0.046012 189
+0.046026 190
+0.046045 191
+0.046070 192
+0.046102 193
+0.046124 194
+0.046164 195
+0.046182 196
+0.046224 197
+0.046246 198
+0.046248 199
+0.046283 200
+0.046290 201
+0.046312 202
+0.046313 203
+0.046318 204
+0.046336 205
+0.046341 206
+0.046366 207
+0.046400 208
+0.046418 209
+0.046430 210
+0.046461 211
+0.046462 212
+0.046502 213
+0.046540 214
+0.046560 215
+0.046680 216
+0.046685 217
+0.046705 218
+0.046803 219
+0.046831 220
+0.046857 221
+0.046942 222
+0.046982 223
+0.047069 224
+0.047092 225
+0.047124 226
+0.047148 227
+0.047150 228
+0.047160 229
+0.047270 230
+0.047275 231
+0.047317 232
+0.047325 233
+0.047363 234
+0.047389 235
+0.047411 236
+0.047455 237
+0.047474 238
+0.047492 239
+0.047515 240
+0.047557 241
+0.047566 242
+0.047566 243
+0.047589 244
+0.047611 245
+0.047749 246
+0.047759 247
+0.047810 248
+0.047830 249
+0.047832 250
+0.047877 251
+0.047897 252
+0.047980 253
+0.048012 254
+0.048035 255
+0.048046 256
+0.048049 257
+0.048072 258
+0.048130 259
+0.048147 260
+0.048156 261
+0.048159 262
+0.048183 263
+0.048281 264
+0.048326 265
+0.048327 266
+0.048366 267
+0.048423 268
+0.048457 269
+0.048563 270
+0.048578 271
+0.048681 272
+0.048686 273
+0.048692 274
+0.048697 275
+0.048704 276
+0.048734 277
+0.048753 278
+0.048820 279
+0.048860 280
+0.048906 281
+0.048922 282
+0.048988 283
+0.048997 284
+0.049069 285
+0.049139 286
+0.049225 287
+0.049275 288
+0.049276 289
+0.049338 290
+0.049393 291
+0.049472 292
+0.049513 293
+0.049600 294
+0.049632 295
+0.049829 296
+0.049852 297
+0.049994 298
+0.050016 299
+0.050113 300
+0.050131 301
+0.050135 302
+0.050154 303
+0.050165 304
+0.050189 305
+0.050198 306
+0.050256 307
+0.050293 308
+0.050443 309
+0.050466 310
+0.050510 311
+0.050618 312
+0.050762 313
+0.050767 314
+0.050789 315
+0.050823 316
+0.050851 317
+0.050854 318
+0.050878 319
+0.051039 320
+0.051093 321
+0.051137 322
+0.051147 323
+0.051360 324
+0.051482 325
+0.051501 326
+0.051506 327
+0.051525 328
+0.051555 329
+0.051666 330
+0.051717 331
+0.051739 332
+0.051975 333
+0.052019 334
+0.052072 335
+0.052099 336
+0.052210 337
+0.052302 338
+0.052402 339
+0.052497 340
+0.052627 341
+0.052709 342
+0.052878 343
+0.052879 344
+0.053012 345
+0.053057 346
+0.053089 347
+0.053192 348
+0.053334 349
+0.053575 350
+0.053575 351
+0.053598 352
+0.053601 353
+0.053699 354
+0.053702 355
+0.053971 356
+0.054000 357
+0.054005 358
+0.054251 359
+0.054342 360
+0.054347 361
+0.054472 362
+0.054507 363
+0.054534 364
+0.054600 365
+0.054650 366
+0.054662 367
+0.054692 368
+0.054724 369
+0.054972 370
+0.055297 371
+0.055493 372
+0.055619 373
+0.055646 374
+0.055756 375
+0.055782 376
+0.056283 377
+0.056390 378
+0.056498 379
+0.057021 380
+0.057159 381
+0.057488 382
+0.057549 383
+0.057716 384
+0.057768 385
+0.057883 386
+0.058675 387
+0.059118 388
+0.059367 389
+0.059557 390
+0.059607 391
+0.059773 392
+0.060125 393
+0.060878 394
+0.060991 395
+0.061131 396
+0.061439 397
+0.061549 398
+0.062150 399
+0.062295 400
+0.062424 401
+0.062665 402
+0.062989 403
+0.064900 404
+0.065113 405
+0.065457 406
+0.065592 407
+0.065600 408
+0.065707 409
+0.065809 410
+0.066323 411
+0.066394 412
+0.066959 413
+0.067226 414
+0.067534 415
+0.067694 416
+0.068671 417
+0.069388 418
+0.069389 419
+0.069804 420
+0.069847 421
+0.070729 422
+0.070772 423
+0.071417 424
+0.071548 425
+0.073003 426
+0.073037 427
+0.073090 428
+0.074152 429
+0.074999 430
+0.076633 431
+0.076803 432
+0.076855 433
+0.077602 434
+0.077952 435
+0.079136 436
+0.079443 437
+0.081162 438
+0.081508 439
+0.082395 440
+0.083713 441
+0.084937 442
+0.086182 443
+0.086629 444
+0.090887 445
+0.091855 446
+0.092076 447
+0.093256 448
+0.094208 449
+0.096719 450
+0.096932 451
+0.098753 452
+0.099534 453
+0.102965 454
+0.106727 455
+0.111355 456
+0.113399 457
+0.120719 458
+0.122225 459
+0.124126 460
+0.127418 461
+0.129583 462
+0.133127 463
+0.134479 464
+0.135558 465
+0.141122 466
+0.144314 467
+0.150261 468
+0.152172 469
+0.155535 470
+0.156768 471
+0.241586 472
+0.245199 473
+0.245350 474
+0.246165 475
+0.246171 476
+0.246844 477
+0.247282 478
+0.248189 479
+0.249763 480
+0.249835 481
+0.252479 482
+0.252865 483
+0.253515 484
+0.260356 485
+0.261867 486
+0.269047 487
+0.276713 488
+0.379582 489
+0.393520 490
+0.395578 491
+0.429281 492
+0.487941 493
+0.516535 494
+0.676260 495
+0.735632 496
+0.900978 497
+1.760986 498
+2.139850 499
+2.893145 500
--- /dev/null
+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
--- /dev/null
+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
--- /dev/null
+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
--- /dev/null
+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
--- /dev/null
+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
--- /dev/null
+#!/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
--- /dev/null
+45678659 1
+46355122 2
+47379259 3
+48709097 4
+49379532 5
+49786543 6
+49943146 7
+50046170 8
+51659455 9
+51717652 10
+51823365 11
+52401446 12
+53426212 13
+53711226 14
+53891235 15
+55629281 16
+55692538 17
+55739985 18
+55778654 19
+55976902 20
+56042769 21
+56063876 22
+56123205 23
+56144665 24
+56767363 25
+56864942 26
+57598879 27
+57916772 28
+58025692 29
+58700836 30
+59591718 31
+61605609 32
+62491770 33
+62541999 34
+62779260 35
+63166558 36
+63667866 37
+63689960 38
+64454483 39
+67419091 40
+68709460 41
+68808792 42
+69978132 43
+70277041 44
+71193653 45
+71825696 46
+71911672 47
+72666593 48
+74021744 49
+74842877 50
+75844197 51
+76982676 52
+77190901 53
+77353293 54
+77680295 55
+77891262 56
+78049688 57
+78489857 58
+78532052 59
+79051713 60
+79491182 61
+79771237 62
+80079032 63
+80362801 64
+80603670 65
+80655724 66
+80845778 67
+81059415 68
+81722925 69
+81929828 70
+82287821 71
+82425517 72
+82861304 73
+83038709 74
+83197398 75
+83316453 76
+84215983 77
+84216369 78
+84463818 79
+85272538 80
+85601647 81
+86400526 82
+86675230 83
+87044190 84
+87447493 85
+87611098 86
+87648187 87
+87904243 88
+88260362 89
+88323579 90
+89737288 91
+90317426 92
+90474320 93
+90599847 94
+91456617 95
+91636635 96
+92358926 97
+92679948 98
+92933857 99
+93124662 100
+93379095 101
+94474014 102
+94860040 103
+95435003 104
+95698334 105
+95958039 106
+96502010 107
+97322533 108
+98049406 109
+98720366 110
+99587678 111
+99783297 112
+103877728 113
+104364702 114
+106653944 115
+108536689 116
+110325180 117
+110557421 118
+110704103 119
+110791858 120
+112152449 121
+115036318 122
+115817475 123
+117678434 124
+119845589 125
+120259390 126
+120499701 127
+120816882 128
+122307081 129
+122553750 130
+123210783 131
+127147837 132
+128164568 133
+129148784 134
+129883413 135
+130181664 136
+132358068 137
+134013949 138
+136220018 139
+139438085 140
+139542969 141
+144310730 142
+146216931 143
+150812266 144
+152529469 145
+152599713 146
+153621949 147
+159331419 148
+164128549 149
+165127327 150
+168455185 151
+169846950 152
+176717574 153
+176945507 154
+182308635 155
+185582169 156
+191689623 157
+192978066 158
+216794455 159
+230299896 160
+244265055 161
+266801657 162
+288406029 163
+290924719 164
+290944322 165
+293194442 166
+296806702 167
+297125397 168
+301451332 169
+306961533 170
+319780909 171
+327596215 172
+336857597 173
+337213725 174
+338926846 175
+339953783 176
+344483199 177
+351730443 178
+373036522 179
+407110566 180
+417600026 181
+602331718 182
+1079106474 183
+5648448221 184
--- /dev/null
+#!/usr/bin/python2.6
+
+import boto, httplib, socket, sys, time
+from boto.s3.key import Key
+from threading import Thread
+
+bucket_name = 'mvrable-benchmark'
+conn = boto.connect_s3(is_secure=False)
+
+class HttpResponseParser:
+ def __init__(self):
+ self.buf = ""
+ self.header = True
+ self.content_length = None
+
+ def process(self, data):
+ self.buf = self.buf + data
+ while self.parse():
+ pass
+
+ def parse(self):
+ if len(self.buf) == 0:
+ return False
+
+ if not self.header and self.content_length is not None:
+ consumed = min(self.content_length, len(self.buf))
+ #print "Got", consumed, "bytes of data"
+ self.content_length -= consumed
+ self.buf = self.buf[consumed:]
+
+ if self.content_length == 0:
+ print "Completed reading body"
+ self.content_length = None
+ self.header = True
+
+ return True
+
+ crlf = self.buf.find("\r\n")
+ if crlf < 0:
+ return False
+
+ line = self.buf[0:crlf]
+ self.buf = self.buf[crlf+2:]
+ #print "Header line:", line
+ if line.lower().startswith('content-length'):
+ self.content_length = int(line[16:])
+ print "Content length:", self.content_length
+ if line == "":
+ self.header = False
+ return True
+
+class PipelinedRequester:
+ def __init__(self, bucket):
+ self.bucket = bucket
+ self.host = conn.calling_format.build_host(conn.server_name(), bucket)
+ self.sock = socket.create_connection((self.host, 80))
+
+ t = Thread(target=self.reader_thread)
+ t.setDaemon(True)
+ t.start()
+
+ def reader_thread(self):
+ hrp = HttpResponseParser()
+ while True:
+ buf = self.sock.recv(4096)
+ if len(buf) == 0: break
+ hrp.process(buf)
+
+ def send_request(self, key):
+ method = 'GET'
+ path = conn.calling_format.build_path_base(self.bucket, key)
+ auth_path = conn.calling_format.build_auth_path(self.bucket, key)
+
+ headers = {'User-Agent': boto.UserAgent + " (pipelined)",
+ 'Content-Length': str(0)}
+ conn.add_aws_auth_header(headers, method, auth_path)
+
+ req = "%s %s HTTP/1.1\r\nHost: %s\r\n" % (method, path, self.host)
+ req = req + ''.join("%s: %s\r\n" % h for h in headers.items()) + "\r\n"
+ self.sock.sendall(req)
+
+requester = PipelinedRequester(bucket_name)
+for i in range(12, 18):
+ requester.send_request('file-%d-1' % (1 << i,))
+ if i == 12:
+ time.sleep(2)
+for i in range(32):
+ requester.send_request('file-8192-%d' % (i,))
+
+time.sleep(5)
+++ /dev/null
-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)
+++ /dev/null
-#!/usr/bin/python
-#
-# Run a series of simple test requests against S3 for gathering some basic
-# performance numbers.
-
-import boto, time
-from boto.s3.connection import SubdomainCallingFormat
-from boto.s3.key import Key
-import azure
-
-BUCKET_NAME = 'mvrable-benchmark'
-SIZES = [64, 4096, 32 << 10, 256 << 10, 1 << 20, 4 << 20, 32 << 20]
-
-class S3TestConnection:
- def __init__(self):
- self.conn = boto.connect_s3(is_secure=False,
- calling_format=SubdomainCallingFormat())
- self.bucket = self.conn.get_bucket(BUCKET_NAME)
-
- def put_object(self, name, size):
- buf = 'A' * size
- k = Key(self.bucket, name)
- start_time = time.time()
- k.set_contents_from_string(buf)
- print "%s: %f" % (name, time.time() - start_time)
-
- def get_object(self, name, size):
- k = Key(self.bucket, name)
- start_time = time.time()
- buf = k.get_contents_as_string()
- print "%s: %f" % (name, time.time() - start_time)
-
-class AzureTestConnection:
- def __init__(self):
- self.conn = azure.Connection()
-
- def put_object(self, name, size):
- buf = 'A' * size
- start_time = time.time()
- self.conn.make_request('/benchmark/' + name, 'PUT', buf,
- {'x-ms-blob-type': 'BlockBlob'})
- print "%s: %f" % (name, time.time() - start_time)
-
- def get_object(self, name, size):
- start_time = time.time()
- self.conn.make_request('/benchmark/' + name, 'GET')
- print "%s: %f" % (name, time.time() - start_time)
-
-def run_test():
- print "==== S3 ===="
- c = S3TestConnection()
- for repeat in range(4):
- for size in SIZES:
- c.put_object('file-%d-%d' % (size, repeat), size)
-
- c = S3TestConnection()
- for repeat in range(4):
- for size in SIZES:
- c.get_object('file-%d-%d' % (size, repeat), size)
-
- print "==== AZURE ===="
- c = AzureTestConnection()
- for repeat in range(4):
- for size in SIZES:
- c.put_object('file-%d-%d' % (size, repeat), size)
-
- c = AzureTestConnection()
- for repeat in range(4):
- for size in SIZES:
- c.get_object('file-%d-%d' % (size, repeat), size)
-
-if __name__ == '__main__':
- run_test()
+++ /dev/null
-/* 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;
-
-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];
- int i = 0;
- int stage = 0;
- int measuring = 0;
-
- ts->n = 0;
- ts->sum_x = ts->sum_x2 = ts->sum_f = 0.0;
- ts->bytes_sent = 0;
-
- ts->timestamp = get_ns();
- while (test_phase != TERMINATE) {
- int object = random() % experiment_objects;
- sprintf(namebuf, "file-%d-%d", experiment_size, object);
- ts->first_byte_timestamp = 0;
- do_get(namebuf, experiment_size, ts);
- long long timestamp = get_ns();
- long long elapsed = timestamp - ts->timestamp;
-
- printf("Elapsed[%d-%d]: %lld ns\n", ts->thread_num, i, elapsed);
- printf(" first data after: %lld ns\n",
- ts->first_byte_timestamp - ts->timestamp);
- if (measuring && test_phase == MEASURE) {
- double e = elapsed / 1e9;
- double f = (ts->first_byte_timestamp - ts->timestamp) / 1e9;
- ts->n++;
- ts->sum_x += e;
- ts->sum_x2 += e * e;
- ts->sum_f += f;
- ts->bytes_sent += experiment_size;
- }
-
- i++;
- if (stage == 0 && i > 2) {
- barrier_signal();
- stage = 1;
- } else if (stage == 1 && ts->n >= 2) {
- barrier_signal();
- stage = 2;
- }
-
- ts->timestamp = timestamp;
- if (test_phase == MEASURE)
- measuring = 1;
- }
-
- 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;
- long long start_time = get_ns();
-
- test_phase = LAUNCH;
- barrier_val = thread_count;
- assert(thread_count <= MAX_THREADS);
-
- printf("Launching...\n");
-
- 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);
-
- printf("Measuring...\n");
- barrier_val = thread_count;
- test_phase = MEASURE;
-
- /* Ensure all threads have measured some activity, then a bit more. */
- pthread_mutex_lock(&barrier_mutex);
- while (barrier_val > 0) {
- pthread_cond_wait(&barrier_cond, &barrier_mutex);
- }
- pthread_mutex_unlock(&barrier_mutex);
- printf("Data in from all threads...\n");
- sleep(5);
-
- printf("Terminating...\n");
- test_phase = TERMINATE;
-
- for (i = 0; i < thread_count; i++)
- wait_thread(i);
-
- int n = 0;
- double sum_x = 0.0, sum_x2 = 0.0, sum_f = 0.0;
- double bandwidth = 0.0;
- for (i = 0; i < thread_count; i++) {
- n += threads[i].n;
- sum_x += threads[i].sum_x;
- sum_x2 += threads[i].sum_x2;
- sum_f += threads[i].sum_f;
- bandwidth += threads[i].bytes_sent / threads[i].sum_x;
- }
-
- double elapsed = (get_ns() - start_time) / 1e9;
- printf("*** %d threads, %d byte objects\n",
- experiment_threads, experiment_size);
- printf("Elapsed: %f s\n", elapsed);
- printf("Data points: %d\n", n);
- double mx = sum_x / n;
- double sx = sqrt((sum_x2 - 2*sum_x*mx + n*mx*mx) / (n - 1));
- printf("Time: %f ± %f s\n", mx, sx);
- printf("Latency to first byte: %f\n", sum_f / n);
- printf("Bandwidth: %f B/s\n", bandwidth);
-
- fprintf(statsfile, "%d\t%d\t%f\t%d\t%f\t%f\t%f\n",
- experiment_threads, experiment_size, elapsed, n,
- mx, sx, bandwidth);
-
- printf("Finished.\n");
-}
-
-int main(int argc, char *argv[])
-{
- statsfile = fopen("readbench.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);
-
- if (argc < 4) {
- fprintf(stderr, "Usage: %s <threads> <size> <object-count>\n", argv[0]);
- return 1;
- }
-
- experiment_threads = atoi(argv[1]);
- experiment_size = atoi(argv[2]);
- experiment_objects = atoi(argv[3]);
- assert(experiment_objects > 0);
- launch_test(experiment_threads);
-
- printf("Done.\n");
- fclose(statsfile);
-
- return 0;
-}
+++ /dev/null
-/* 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 1024
-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;
-}
+++ /dev/null
-0.245687 1
-0.345290 2
-0.360398 3
-0.367082 4
-0.370840 5
-0.375545 6
-0.377836 7
-0.389673 8
-0.392879 9
-0.393538 10
-0.394881 11
-0.396469 12
-0.402658 13
-0.405560 14
-0.405616 15
-0.413440 16
-0.415442 17
-0.415788 18
-0.417165 19
-0.420620 20
-0.421827 21
-0.422170 22
-0.422693 23
-0.424844 24
-0.425984 25
-0.426748 26
-0.427215 27
-0.435269 28
-0.436552 29
-0.437202 30
-0.440512 31
-0.443225 32
-0.445447 33
-0.447369 34
-0.448404 35
-0.450101 36
-0.450672 37
-0.453190 38
-0.455920 39
-0.456537 40
-0.470215 41
-0.471934 42
-0.472819 43
-0.479924 44
-0.485398 45
-0.486872 46
-0.555995 47
-0.629986 48
-0.853291 49
-1.162495 50
+++ /dev/null
-0.076027 1
-0.086907 2
-0.108150 3
-0.109142 4
-0.109332 5
-0.110458 6
-0.110731 7
-0.110744 8
-0.111674 9
-0.112058 10
-0.112290 11
-0.112309 12
-0.112920 13
-0.113302 14
-0.115402 15
-0.115530 16
-0.116263 17
-0.116558 18
-0.116687 19
-0.116836 20
-0.118067 21
-0.118260 22
-0.118514 23
-0.119031 24
-0.121318 25
-0.124867 26
-0.125090 27
-0.125838 28
-0.126451 29
-0.127242 30
-0.127554 31
-0.128401 32
-0.129554 33
-0.133508 34
-0.133875 35
-0.133879 36
-0.135534 37
-0.137921 38
-0.148270 39
-0.151381 40
-0.156417 41
-0.159469 42
-0.175155 43
-0.180779 44
-0.187874 45
-0.200517 46
-0.239237 47
-0.319098 48
-0.426761 49
-0.567450 50
+++ /dev/null
-0.480001 1
-0.482716 2
-0.492883 3
-0.496570 4
-0.503112 5
-0.503467 6
-0.508914 7
-0.511720 8
-0.515805 9
-0.534276 10
-0.536384 11
-0.536638 12
-0.541766 13
-0.542662 14
-0.546021 15
-0.551714 16
-0.553925 17
-0.554129 18
-0.562453 19
-0.563337 20
-0.569507 21
-0.574251 22
-0.574472 23
-0.575643 24
-0.576192 25
-0.577031 26
-0.580595 27
-0.580729 28
-0.582319 29
-0.583317 30
-0.590730 31
-0.600255 32
-0.613829 33
-0.621110 34
-0.623255 35
-0.633959 36
-0.658147 37
-0.715391 38
-0.724452 39
-0.733508 40
-0.749275 41
-0.755967 42
-0.763497 43
-0.864642 44
-0.881960 45
-1.039886 46
-1.058287 47
-1.092262 48
-1.137048 49
-3.377304 50
+++ /dev/null
-0.133314 1
-0.170866 2
-0.231067 3
-0.234155 4
-0.237463 5
-0.244822 6
-0.244956 7
-0.252016 8
-0.255527 9
-0.260182 10
-0.260419 11
-0.260492 12
-0.260549 13
-0.261018 14
-0.261437 15
-0.261555 16
-0.262166 17
-0.264284 18
-0.264401 19
-0.265063 20
-0.266273 21
-0.267303 22
-0.267396 23
-0.270823 24
-0.271162 25
-0.271301 26
-0.271752 27
-0.274270 28
-0.278991 29
-0.282018 30
-0.282729 31
-0.286325 32
-0.288635 33
-0.295905 34
-0.298553 35
-0.302857 36
-0.305343 37
-0.305371 38
-0.313010 39
-0.317290 40
-0.319708 41
-0.323427 42
-0.328343 43
-0.330849 44
-0.365746 45
-0.366931 46
-0.395012 47
-0.458960 48
-0.520875 49
-0.682489 50
+++ /dev/null
-0.136572 1
-0.137600 2
-0.137704 3
-0.138383 4
-0.138731 5
-0.139637 6
-0.139669 7
-0.139699 8
-0.139715 9
-0.141618 10
-0.141648 11
-0.142345 12
-0.142726 13
-0.144057 14
-0.144187 15
-0.144413 16
-0.144934 17
-0.145467 18
-0.146144 19
-0.146220 20
-0.146517 21
-0.146610 22
-0.146824 23
-0.148209 24
-0.148395 25
-0.149497 26
-0.153588 27
-0.154635 28
-0.156039 29
-0.157500 30
-0.157890 31
-0.159047 32
-0.162957 33
-0.164461 34
-0.165460 35
-0.167829 36
-0.172857 37
-0.175467 38
-0.180007 39
-0.182485 40
-0.190575 41
-0.213047 42
-0.333999 43
-0.350475 44
-0.352473 45
-0.364994 46
-0.367192 47
-0.370064 48
-0.417487 49
-0.845507 50
+++ /dev/null
-0.634686 1
-0.659104 2
-0.661358 3
-0.661938 4
-0.664640 5
-0.677291 6
-0.692262 7
-0.697721 8
-0.698311 9
-0.705161 10
-0.706505 11
-0.707654 12
-0.719907 13
-0.721084 14
-0.721250 15
-0.722392 16
-0.725787 17
-0.726579 18
-0.726745 19
-0.729102 20
-0.733332 21
-0.737244 22
-0.744478 23
-0.750089 24
-0.756589 25
-0.761532 26
-0.764396 27
-0.771520 28
-0.777071 29
-0.778882 30
-0.791441 31
-0.856516 32
-0.862874 33
-0.892377 34
-1.008829 35
-1.010859 36
-1.092319 37
-1.147543 38
-1.192496 39
-1.220797 40
-1.479573 41
-1.558679 42
-1.585885 43
-1.698720 44
-1.715090 45
-1.861698 46
-2.043960 47
-2.273941 48
-2.553916 49
-2.999475 50
+++ /dev/null
-0.168244 1
-0.171188 2
-0.171733 3
-0.172065 4
-0.172331 5
-0.172368 6
-0.172819 7
-0.174151 8
-0.178355 9
-0.178456 10
-0.178727 11
-0.179192 12
-0.180987 13
-0.181313 14
-0.181845 15
-0.182375 16
-0.183303 17
-0.184009 18
-0.184766 19
-0.184931 20
-0.185022 21
-0.190962 22
-0.191530 23
-0.191685 24
-0.191934 25
-0.194145 26
-0.194208 27
-0.195600 28
-0.200455 29
-0.200667 30
-0.202730 31
-0.202954 32
-0.204627 33
-0.205725 34
-0.206416 35
-0.208362 36
-0.208747 37
-0.223604 38
-0.229388 39
-0.230639 40
-0.237784 41
-0.241829 42
-0.256305 43
-0.262248 44
-0.271086 45
-0.275066 46
-0.282661 47
-0.285266 48
-0.312008 49
-0.622745 50
+++ /dev/null
-0.075435 1
-0.075909 2
-0.076732 3
-0.076836 4
-0.076860 5
-0.077128 6
-0.077527 7
-0.078547 8
-0.079255 9
-0.080335 10
-0.081069 11
-0.081366 12
-0.082075 13
-0.082163 14
-0.082489 15
-0.083140 16
-0.084478 17
-0.085318 18
-0.085522 19
-0.085738 20
-0.086473 21
-0.087050 22
-0.087528 23
-0.087994 24
-0.088028 25
-0.088699 26
-0.088903 27
-0.090443 28
-0.090869 29
-0.094390 30
-0.094736 31
-0.095297 32
-0.095407 33
-0.097203 34
-0.097846 35
-0.097925 36
-0.097987 37
-0.098213 38
-0.098420 39
-0.098773 40
-0.106534 41
-0.108415 42
-0.120563 43
-0.121449 44
-0.122755 45
-0.150452 46
-0.160482 47
-0.163673 48
-0.275275 49
-0.279576 50
+++ /dev/null
-0.352564 1
-0.355583 2
-0.387133 3
-0.411746 4
-0.420441 5
-0.427886 6
-0.430660 7
-0.433188 8
-0.446063 9
-0.451374 10
-0.459913 11
-0.494536 12
-0.495600 13
-0.508426 14
-0.541106 15
-0.545735 16
-0.564988 17
-0.566355 18
-0.584041 19
-0.660245 20
-0.670523 21
-0.678975 22
-0.710695 23
-0.722698 24
-0.742232 25
-0.756707 26
-0.760219 27
-0.811378 28
-0.819761 29
-0.854134 30
-0.874385 31
-0.908241 32
-0.938006 33
-0.966720 34
-1.040874 35
-1.075312 36
-1.170519 37
-1.187432 38
-1.243601 39
-1.251721 40
-1.417437 41
-1.433387 42
-1.437563 43
-1.441603 44
-1.755416 45
-2.405115 46
-2.831448 47
-5.040258 48
-5.386386 49
-6.796262 50
+++ /dev/null
-0.465050 1
-0.478552 2
-0.490637 3
-0.507725 4
-0.516628 5
-0.532548 6
-0.556489 7
-0.560314 8
-0.580638 9
-0.587083 10
-0.588637 11
-0.597403 12
-0.597515 13
-0.619816 14
-0.621097 15
-0.627480 16
-0.628297 17
-0.637058 18
-0.671010 19
-0.724936 20
-0.739166 21
-0.744428 22
-0.750437 23
-0.790299 24
-0.839736 25
-0.846018 26
-0.847255 27
-0.859049 28
-0.873550 29
-0.955810 30
-0.963168 31
-1.060531 32
-1.065136 33
-1.133044 34
-1.159509 35
-1.214417 36
-1.285700 37
-1.326026 38
-1.450074 39
-1.450743 40
-1.502949 41
-1.751362 42
-1.759409 43
-1.939950 44
-2.017670 45
-2.098310 46
-2.117201 47
-3.113510 48
-3.532003 49
-3.859827 50
+++ /dev/null
-0.127670 1
-0.139159 2
-0.140796 3
-0.140886 4
-0.144707 5
-0.149260 6
-0.151406 7
-0.156054 8
-0.158292 9
-0.160039 10
-0.161772 11
-0.163227 12
-0.164808 13
-0.165752 14
-0.171318 15
-0.171724 16
-0.172714 17
-0.172780 18
-0.180535 19
-0.181573 20
-0.189942 21
-0.197406 22
-0.197827 23
-0.198737 24
-0.206770 25
-0.210387 26
-0.210670 27
-0.211556 28
-0.222975 29
-0.225185 30
-0.226005 31
-0.229111 32
-0.236567 33
-0.243092 34
-0.269524 35
-0.279847 36
-0.308041 37
-0.312820 38
-0.313735 39
-0.314373 40
-0.315597 41
-0.336576 42
-0.353541 43
-0.354057 44
-0.383149 45
-0.461141 46
-0.511054 47
-0.519109 48
-0.609509 49
-0.834966 50
+++ /dev/null
-0.287997 1
-0.305924 2
-0.316661 3
-0.322573 4
-0.333999 5
-0.336101 6
-0.355837 7
-0.358911 8
-0.363610 9
-0.365872 10
-0.372265 11
-0.378668 12
-0.395366 13
-0.405168 14
-0.408555 15
-0.421775 16
-0.436949 17
-0.448725 18
-0.454666 19
-0.456205 20
-0.462362 21
-0.469805 22
-0.474192 23
-0.474867 24
-0.476734 25
-0.480384 26
-0.486740 27
-0.489189 28
-0.493788 29
-0.509452 30
-0.526039 31
-0.534095 32
-0.545003 33
-0.568957 34
-0.570622 35
-0.616013 36
-0.648943 37
-0.659637 38
-0.710386 39
-0.714759 40
-0.730293 41
-0.792584 42
-0.825795 43
-0.901448 44
-0.972393 45
-1.521899 46
-2.415583 47
-2.625667 48
-4.271549 49
-6.913418 50
+++ /dev/null
-1.017843 1
-1.104489 2
-1.141960 3
-1.142657 4
-1.240218 5
-1.247494 6
-1.307643 7
-1.348979 8
-1.471669 9
-1.521570 10
-1.570565 11
-1.641516 12
-1.657084 13
-1.861100 14
-2.021590 15
-2.034749 16
-2.274792 17
-2.289538 18
-2.324902 19
-2.349816 20
-2.368664 21
-2.376337 22
-2.385706 23
-2.523639 24
-2.541235 25
-2.553272 26
-2.557527 27
-2.590797 28
-2.600271 29
-2.631471 30
-2.659027 31
-2.717545 32
-2.723114 33
-2.800357 34
-2.809402 35
-2.841195 36
-2.904280 37
-2.930478 38
-3.096425 39
-3.154959 40
-3.183998 41
-3.253938 42
-3.313816 43
-3.358172 44
-3.384279 45
-3.420114 46
-3.461719 47
-4.352773 48
-5.112540 49
-7.061153 50
+++ /dev/null
-0.223768 1
-0.232901 2
-0.236511 3
-0.237137 4
-0.250726 5
-0.257683 6
-0.261461 7
-0.271269 8
-0.273937 9
-0.276115 10
-0.277965 11
-0.283640 12
-0.286126 13
-0.307738 14
-0.310412 15
-0.325662 16
-0.332208 17
-0.341298 18
-0.363187 19
-0.380359 20
-0.381212 21
-0.385519 22
-0.388745 23
-0.390864 24
-0.392959 25
-0.398682 26
-0.399855 27
-0.400582 28
-0.419970 29
-0.435165 30
-0.442122 31
-0.444850 32
-0.450893 33
-0.462023 34
-0.466786 35
-0.517143 36
-0.527216 37
-0.598756 38
-0.614661 39
-0.618670 40
-0.651237 41
-0.974916 42
-0.977591 43
-1.292450 44
-1.415784 45
-2.076339 46
-3.114305 47
-6.116133 48
-9.266135 49
-10.135546 50
+++ /dev/null
-0.093003 1
-0.100532 2
-0.111189 3
-0.114553 4
-0.123482 5
-0.132481 6
-0.139696 7
-0.144190 8
-0.150402 9
-0.159960 10
-0.162781 11
-0.172965 12
-0.179320 13
-0.179932 14
-0.185528 15
-0.185990 16
-0.187904 17
-0.195691 18
-0.198600 19
-0.199014 20
-0.211796 21
-0.216178 22
-0.224462 23
-0.227520 24
-0.252301 25
-0.255014 26
-0.264581 27
-0.281093 28
-0.286758 29
-0.291855 30
-0.292185 31
-0.292920 32
-0.296656 33
-0.297570 34
-0.299365 35
-0.300408 36
-0.308339 37
-0.311230 38
-0.312716 39
-0.313435 40
-0.314415 41
-0.315741 42
-0.323363 43
-0.336510 44
-0.343038 45
-0.362404 46
-0.374527 47
-0.487501 48
-0.850804 49
-1.481814 50
+++ /dev/null
-0.320708 1
-0.321758 2
-0.324406 3
-0.327472 4
-0.330214 5
-0.332777 6
-0.334935 7
-0.339416 8
-0.342414 9
-0.343828 10
-0.344684 11
-0.344728 12
-0.345439 13
-0.347097 14
-0.353502 15
-0.354846 16
-0.357799 17
-0.358466 18
-0.360736 19
-0.362321 20
-0.371280 21
-0.374685 22
-0.383341 23
-0.383539 24
-0.386731 25
-0.396191 26
-0.410960 27
-0.411047 28
-0.416480 29
-0.418475 30
-0.428096 31
-0.474335 32
-0.479541 33
-0.492374 34
-0.521502 35
-0.544042 36
-0.545463 37
-0.552806 38
-0.554456 39
-0.558737 40
-0.599397 41
-0.600302 42
-0.615819 43
-0.653976 44
-0.702853 45
-0.752009 46
-0.759477 47
-1.087848 48
-1.640676 49
-2.598370 50
+++ /dev/null
-0.165836 1
-0.172725 2
-0.176997 3
-0.179092 4
-0.185445 5
-0.192720 6
-0.195285 7
-0.204091 8
-0.207490 9
-0.219538 10
-0.222120 11
-0.223593 12
-0.224733 13
-0.228416 14
-0.233610 15
-0.255785 16
-0.290965 17
-0.303250 18
-0.305370 19
-0.315949 20
-0.316281 21
-0.317867 22
-0.320637 23
-0.323186 24
-0.333564 25
-0.340441 26
-0.357503 27
-0.363239 28
-0.368639 29
-0.414693 30
-0.419667 31
-0.420447 32
-0.440126 33
-0.459472 34
-0.463736 35
-0.464795 36
-0.475847 37
-0.516005 38
-0.529694 39
-0.544383 40
-0.607652 41
-0.617780 42
-0.691157 43
-0.711014 44
-0.826032 45
-0.971492 46
-1.277428 47
-1.886146 48
-3.109511 49
-5.108701 50
+++ /dev/null
-0.315041 1
-0.372568 2
-0.453493 3
-0.461752 4
-0.468445 5
-0.469034 6
-0.471331 7
-0.472842 8
-0.487815 9
-0.489341 10
-0.489516 11
-0.489572 12
-0.500103 13
-0.504185 14
-0.505418 15
-0.511986 16
-0.516818 17
-0.519116 18
-0.540201 19
-0.540603 20
-0.552978 21
-0.598851 22
-0.605899 23
-0.662358 24
-0.735214 25
-0.775136 26
-0.819564 27
-0.845229 28
-0.864779 29
-0.914197 30
-0.956463 31
-0.977888 32
-0.994708 33
-0.995344 34
-1.001803 35
-1.019263 36
-1.033650 37
-1.494309 38
-1.495176 39
-1.548473 40
-1.554519 41
-1.557072 42
-1.585460 43
-1.665548 44
-2.329129 45
-3.135419 46
-3.539706 47
-4.251801 48
-8.249081 49
-10.316540 50
+++ /dev/null
-0.282950 1
-0.285051 2
-0.299030 3
-0.318625 4
-0.321437 5
-0.346503 6
-0.373888 7
-0.379150 8
-0.384000 9
-0.387062 10
-0.387406 11
-0.387917 12
-0.390032 13
-0.390435 14
-0.405090 15
-0.427465 16
-0.435509 17
-0.435711 18
-0.438157 19
-0.440436 20
-0.441607 21
-0.443406 22
-0.450902 23
-0.452702 24
-0.453485 25
-0.463270 26
-0.464915 27
-0.467441 28
-0.475191 29
-0.504247 30
-0.533251 31
-0.553147 32
-0.563646 33
-0.599644 34
-0.622521 35
-0.623377 36
-0.654838 37
-0.697466 38
-0.736914 39
-0.741550 40
-0.779627 41
-0.792089 42
-0.819800 43
-0.828229 44
-0.910522 45
-0.962283 46
-1.000304 47
-1.332708 48
-2.515442 49
-3.485365 50
+++ /dev/null
-0.110075 1
-0.113153 2
-0.131290 3
-0.152226 4
-0.161774 5
-0.171094 6
-0.175728 7
-0.177893 8
-0.178232 9
-0.178246 10
-0.188684 11
-0.196751 12
-0.199627 13
-0.203143 14
-0.209620 15
-0.231370 16
-0.282756 17
-0.286288 18
-0.286951 19
-0.287151 20
-0.287693 21
-0.289126 22
-0.289864 23
-0.296791 24
-0.301590 25
-0.303046 26
-0.305021 27
-0.311553 28
-0.315374 29
-0.318581 30
-0.318899 31
-0.320124 32
-0.331609 33
-0.334437 34
-0.339490 35
-0.344502 36
-0.351140 37
-0.369537 38
-0.385782 39
-0.396039 40
-0.416204 41
-0.431640 42
-0.476233 43
-0.510854 44
-0.560755 45
-0.601894 46
-0.609187 47
-0.690171 48
-0.799814 49
-0.953771 50
+++ /dev/null
-0.387370 1
-0.420474 2
-0.427990 3
-0.428242 4
-0.433427 5
-0.439371 6
-0.440618 7
-0.443800 8
-0.443963 9
-0.445555 10
-0.445586 11
-0.449234 12
-0.453283 13
-0.455577 14
-0.459919 15
-0.460076 16
-0.460827 17
-0.462057 18
-0.463946 19
-0.465899 20
-0.468981 21
-0.469014 22
-0.470001 23
-0.471863 24
-0.480474 25
-0.482672 26
-0.486090 27
-0.489519 28
-0.503078 29
-0.527975 30
-0.548277 31
-0.575468 32
-0.591658 33
-0.593116 34
-0.600105 35
-0.614442 36
-0.626683 37
-0.650574 38
-0.678713 39
-0.739093 40
-0.756957 41
-0.996935 42
-1.007214 43
-1.050924 44
-1.164622 45
-1.246041 46
-1.263029 47
-1.673348 48
-1.684793 49
-1.706435 50
+++ /dev/null
-0.252082 1
-0.262835 2
-0.267069 3
-0.268972 4
-0.271283 5
-0.271968 6
-0.285898 7
-0.288539 8
-0.290525 9
-0.297670 10
-0.298457 11
-0.299235 12
-0.302757 13
-0.303202 14
-0.309382 15
-0.311959 16
-0.318536 17
-0.342610 18
-0.357143 19
-0.362377 20
-0.377414 21
-0.393371 22
-0.394127 23
-0.406547 24
-0.437309 25
-0.457749 26
-0.458268 27
-0.461772 28
-0.476412 29
-0.482878 30
-0.489856 31
-0.492419 32
-0.492565 33
-0.494337 34
-0.508374 35
-0.509599 36
-0.512679 37
-0.513125 38
-0.530224 39
-0.564522 40
-0.595444 41
-0.646980 42
-0.712869 43
-0.727326 44
-0.727479 45
-0.747465 46
-0.754571 47
-0.789464 48
-2.095580 49
-3.536563 50
+++ /dev/null
-0.722585 1
-0.730459 2
-0.751562 3
-0.755959 4
-0.756664 5
-0.766769 6
-0.767292 7
-0.782020 8
-0.803338 9
-0.805429 10
-0.820065 11
-0.821508 12
-0.845232 13
-0.851713 14
-0.860864 15
-0.863363 16
-0.871315 17
-0.872050 18
-0.872328 19
-0.890196 20
-0.908485 21
-0.913455 22
-0.922634 23
-0.959389 24
-0.989300 25
-1.059116 26
-1.080607 27
-1.082216 28
-1.187457 29
-1.199473 30
-1.210056 31
-1.247727 32
-1.277437 33
-1.305777 34
-1.384346 35
-1.426886 36
-1.431333 37
-1.489323 38
-1.497885 39
-1.529765 40
-1.808024 41
-1.964544 42
-2.042603 43
-2.065043 44
-2.067612 45
-2.236464 46
-2.530139 47
-2.567583 48
-3.202855 49
-3.328836 50
+++ /dev/null
-0.354971 1
-0.357379 2
-0.357664 3
-0.363853 4
-0.366189 5
-0.366725 6
-0.378049 7
-0.379281 8
-0.383338 9
-0.418335 10
-0.427699 11
-0.436426 12
-0.456600 13
-0.497344 14
-0.503531 15
-0.526886 16
-0.533928 17
-0.540759 18
-0.568319 19
-0.569649 20
-0.575852 21
-0.578106 22
-0.588393 23
-0.599483 24
-0.600636 25
-0.601642 26
-0.659283 27
-0.661862 28
-0.710328 29
-0.750682 30
-0.764487 31
-0.772624 32
-0.783391 33
-0.789898 34
-0.816793 35
-0.817834 36
-0.823085 37
-0.841538 38
-0.911350 39
-0.930116 40
-0.975762 41
-0.980841 42
-1.900125 43
-3.598765 44
-4.648489 45
-4.768272 46
-5.255166 47
-6.544232 48
-7.400276 49
-10.181641 50
+++ /dev/null
-0.436958 1
-0.442349 2
-0.446188 3
-0.446526 4
-0.447072 5
-0.449505 6
-0.452462 7
-0.452938 8
-0.480482 9
-0.483810 10
-0.486779 11
-0.490229 12
-0.495360 13
-0.498287 14
-0.501021 15
-0.506601 16
-0.525137 17
-0.525751 18
-0.534655 19
-0.540972 20
-0.543379 21
-0.569280 22
-0.578896 23
-0.582124 24
-0.596567 25
-0.598439 26
-0.629303 27
-0.636794 28
-0.640622 29
-0.649724 30
-0.650746 31
-0.661452 32
-0.680081 33
-0.736649 34
-0.800315 35
-0.899667 36
-0.937369 37
-0.991671 38
-1.017572 39
-1.040747 40
-1.050770 41
-1.135636 42
-1.172126 43
-1.233788 44
-1.282158 45
-1.285328 46
-1.513954 47
-1.535227 48
-2.718857 49
-6.092311 50
+++ /dev/null
-0.207809 1
-0.210341 2
-0.216672 3
-0.229072 4
-0.230190 5
-0.243494 6
-0.249199 7
-0.249747 8
-0.254737 9
-0.262573 10
-0.264471 11
-0.265526 12
-0.270253 13
-0.270938 14
-0.277311 15
-0.283762 16
-0.292132 17
-0.303279 18
-0.307438 19
-0.315133 20
-0.315591 21
-0.318886 22
-0.320538 23
-0.328339 24
-0.338395 25
-0.359679 26
-0.364087 27
-0.364999 28
-0.365514 29
-0.371369 30
-0.395431 31
-0.395508 32
-0.411270 33
-0.415671 34
-0.416403 35
-0.422615 36
-0.435256 37
-0.435323 38
-0.439614 39
-0.445843 40
-0.454349 41
-0.455975 42
-0.507338 43
-0.515321 44
-0.523182 45
-0.596029 46
-0.728456 47
-0.731795 48
-5.142825 49
-5.308934 50
+++ /dev/null
-0.117725 1
-0.121496 2
-0.125381 3
-0.129632 4
-0.130158 5
-0.132706 6
-0.135024 7
-0.137198 8
-0.140042 9
-0.142316 10
-0.144283 11
-0.145207 12
-0.147477 13
-0.147834 14
-0.150808 15
-0.151533 16
-0.153095 17
-0.164931 18
-0.172472 19
-0.173853 20
-0.175306 21
-0.189517 22
-0.198684 23
-0.200023 24
-0.205948 25
-0.211733 26
-0.212687 27
-0.219900 28
-0.245731 29
-0.272969 30
-0.301125 31
-0.303853 32
-0.312639 33
-0.316149 34
-0.321799 35
-0.322341 36
-0.327041 37
-0.327308 38
-0.327724 39
-0.332366 40
-0.341731 41
-0.350318 42
-0.365407 43
-0.374201 44
-0.399834 45
-0.411166 46
-0.794733 47
-0.843125 48
-2.193257 49
-3.394338 50
+++ /dev/null
-0.269593 1
-0.292004 2
-0.293263 3
-0.299030 4
-0.300683 5
-0.301857 6
-0.310410 7
-0.311620 8
-0.312849 9
-0.316849 10
-0.317041 11
-0.322589 12
-0.322838 13
-0.325490 14
-0.327279 15
-0.331036 16
-0.331751 17
-0.339879 18
-0.349173 19
-0.351914 20
-0.365284 21
-0.371149 22
-0.381768 23
-0.410030 24
-0.411842 25
-0.419738 26
-0.424178 27
-0.425377 28
-0.443962 29
-0.445203 30
-0.463517 31
-0.471101 32
-0.481116 33
-0.483933 34
-0.496548 35
-0.530912 36
-0.539329 37
-0.543502 38
-0.552497 39
-0.603428 40
-0.660331 41
-0.768841 42
-0.829258 43
-0.871868 44
-1.079242 45
-1.169184 46
-1.965773 47
-2.880055 48
-4.299915 49
-5.339894 50
+++ /dev/null
-0.823624 1
-0.828623 2
-0.833926 3
-0.839289 4
-0.860543 5
-0.872630 6
-0.907398 7
-0.907493 8
-0.927062 9
-0.947692 10
-0.968468 11
-0.972356 12
-0.980378 13
-0.997080 14
-1.000864 15
-1.042486 16
-1.075130 17
-1.119078 18
-1.147873 19
-1.163680 20
-1.168883 21
-1.298383 22
-1.357506 23
-1.364537 24
-1.371874 25
-1.477430 26
-1.509745 27
-1.624671 28
-1.653217 29
-1.681779 30
-1.977644 31
-2.065403 32
-2.068046 33
-2.132446 34
-2.133889 35
-2.244374 36
-2.249451 37
-2.371983 38
-2.409708 39
-2.419493 40
-2.586412 41
-2.611856 42
-2.732816 43
-2.883365 44
-3.031712 45
-3.122876 46
-3.471334 47
-3.706546 48
-5.117412 49
-16.016403 50
+++ /dev/null
-0.184803 1
-0.188250 2
-0.191853 3
-0.197854 4
-0.206411 5
-0.208242 6
-0.208631 7
-0.211700 8
-0.221974 9
-0.224119 10
-0.233147 11
-0.237508 12
-0.248749 13
-0.259401 14
-0.263739 15
-0.265608 16
-0.267680 17
-0.267745 18
-0.275002 19
-0.275011 20
-0.279171 21
-0.283785 22
-0.284212 23
-0.309211 24
-0.312388 25
-0.318360 26
-0.359898 27
-0.370907 28
-0.378194 29
-0.382001 30
-0.386099 31
-0.392152 32
-0.396473 33
-0.401369 34
-0.406831 35
-0.407520 36
-0.408716 37
-0.413687 38
-0.419214 39
-0.421851 40
-0.422032 41
-0.433536 42
-0.446774 43
-0.492554 44
-0.542571 45
-0.621690 46
-0.651811 47
-0.973281 48
-2.429908 49
-3.201853 50
+++ /dev/null
-0.093638 1
-0.094265 2
-0.095373 3
-0.096140 4
-0.098276 5
-0.099673 6
-0.103722 7
-0.108289 8
-0.108655 9
-0.113746 10
-0.114322 11
-0.114343 12
-0.119483 13
-0.119631 14
-0.120756 15
-0.120946 16
-0.125247 17
-0.127360 18
-0.128423 19
-0.129701 20
-0.130854 21
-0.133157 22
-0.139184 23
-0.139750 24
-0.142275 25
-0.153232 26
-0.158768 27
-0.175046 28
-0.192480 29
-0.239638 30
-0.282481 31
-0.284906 32
-0.288384 33
-0.288471 34
-0.294434 35
-0.296839 36
-0.299306 37
-0.299879 38
-0.307618 39
-0.308699 40
-0.311071 41
-0.319989 42
-0.321082 43
-0.324899 44
-0.332656 45
-0.335878 46
-0.343437 47
-0.394514 48
-0.840962 49
-0.890544 50
+++ /dev/null
-0.038313 1
-0.038948 2
-0.039053 3
-0.039119 4
-0.039531 5
-0.039927 6
-0.040109 7
-0.040223 8
-0.040267 9
-0.040355 10
-0.040459 11
-0.040690 12
-0.040747 13
-0.040749 14
-0.040807 15
-0.040838 16
-0.040839 17
-0.040866 18
-0.040884 19
-0.040937 20
-0.041118 21
-0.041195 22
-0.041259 23
-0.041325 24
-0.041332 25
-0.041348 26
-0.041354 27
-0.041413 28
-0.041496 29
-0.041531 30
-0.041541 31
-0.041583 32
-0.041603 33
-0.041679 34
-0.041706 35
-0.041719 36
-0.041810 37
-0.041811 38
-0.041855 39
-0.042090 40
-0.042185 41
-0.042192 42
-0.042240 43
-0.042275 44
-0.042312 45
-0.042378 46
-0.042459 47
-0.042460 48
-0.042469 49
-0.042470 50
-0.042480 51
-0.042494 52
-0.042549 53
-0.042606 54
-0.042618 55
-0.042620 56
-0.042639 57
-0.042639 58
-0.042701 59
-0.042711 60
-0.042713 61
-0.042740 62
-0.042803 63
-0.042860 64
-0.042876 65
-0.042878 66
-0.042916 67
-0.042952 68
-0.042997 69
-0.043017 70
-0.043018 71
-0.043018 72
-0.043032 73
-0.043065 74
-0.043092 75
-0.043122 76
-0.043176 77
-0.043178 78
-0.043235 79
-0.043273 80
-0.043275 81
-0.043276 82
-0.043349 83
-0.043399 84
-0.043399 85
-0.043401 86
-0.043453 87
-0.043531 88
-0.043595 89
-0.043601 90
-0.043670 91
-0.043683 92
-0.043692 93
-0.043728 94
-0.043757 95
-0.043784 96
-0.043789 97
-0.043797 98
-0.043868 99
-0.043894 100
-0.043903 101
-0.043942 102
-0.043968 103
-0.043980 104
-0.043982 105
-0.044109 106
-0.044122 107
-0.044146 108
-0.044146 109
-0.044207 110
-0.044211 111
-0.044211 112
-0.044251 113
-0.044280 114
-0.044330 115
-0.044332 116
-0.044337 117
-0.044383 118
-0.044383 119
-0.044436 120
-0.044441 121
-0.044450 122
-0.044464 123
-0.044481 124
-0.044570 125
-0.044586 126
-0.044653 127
-0.044705 128
-0.044718 129
-0.044743 130
-0.044775 131
-0.044788 132
-0.044811 133
-0.044880 134
-0.044901 135
-0.044903 136
-0.044907 137
-0.044912 138
-0.044918 139
-0.044937 140
-0.044970 141
-0.044982 142
-0.044987 143
-0.045016 144
-0.045022 145
-0.045045 146
-0.045066 147
-0.045073 148
-0.045107 149
-0.045114 150
-0.045155 151
-0.045184 152
-0.045196 153
-0.045201 154
-0.045229 155
-0.045240 156
-0.045247 157
-0.045281 158
-0.045347 159
-0.045378 160
-0.045397 161
-0.045407 162
-0.045445 163
-0.045492 164
-0.045511 165
-0.045525 166
-0.045553 167
-0.045562 168
-0.045573 169
-0.045597 170
-0.045601 171
-0.045620 172
-0.045654 173
-0.045673 174
-0.045699 175
-0.045710 176
-0.045727 177
-0.045732 178
-0.045733 179
-0.045778 180
-0.045793 181
-0.045913 182
-0.045917 183
-0.045961 184
-0.045963 185
-0.045982 186
-0.045983 187
-0.046001 188
-0.046012 189
-0.046026 190
-0.046045 191
-0.046070 192
-0.046102 193
-0.046124 194
-0.046164 195
-0.046182 196
-0.046224 197
-0.046246 198
-0.046248 199
-0.046283 200
-0.046290 201
-0.046312 202
-0.046313 203
-0.046318 204
-0.046336 205
-0.046341 206
-0.046366 207
-0.046400 208
-0.046418 209
-0.046430 210
-0.046461 211
-0.046462 212
-0.046502 213
-0.046540 214
-0.046560 215
-0.046680 216
-0.046685 217
-0.046705 218
-0.046803 219
-0.046831 220
-0.046857 221
-0.046942 222
-0.046982 223
-0.047069 224
-0.047092 225
-0.047124 226
-0.047148 227
-0.047150 228
-0.047160 229
-0.047270 230
-0.047275 231
-0.047317 232
-0.047325 233
-0.047363 234
-0.047389 235
-0.047411 236
-0.047455 237
-0.047474 238
-0.047492 239
-0.047515 240
-0.047557 241
-0.047566 242
-0.047566 243
-0.047589 244
-0.047611 245
-0.047749 246
-0.047759 247
-0.047810 248
-0.047830 249
-0.047832 250
-0.047877 251
-0.047897 252
-0.047980 253
-0.048012 254
-0.048035 255
-0.048046 256
-0.048049 257
-0.048072 258
-0.048130 259
-0.048147 260
-0.048156 261
-0.048159 262
-0.048183 263
-0.048281 264
-0.048326 265
-0.048327 266
-0.048366 267
-0.048423 268
-0.048457 269
-0.048563 270
-0.048578 271
-0.048681 272
-0.048686 273
-0.048692 274
-0.048697 275
-0.048704 276
-0.048734 277
-0.048753 278
-0.048820 279
-0.048860 280
-0.048906 281
-0.048922 282
-0.048988 283
-0.048997 284
-0.049069 285
-0.049139 286
-0.049225 287
-0.049275 288
-0.049276 289
-0.049338 290
-0.049393 291
-0.049472 292
-0.049513 293
-0.049600 294
-0.049632 295
-0.049829 296
-0.049852 297
-0.049994 298
-0.050016 299
-0.050113 300
-0.050131 301
-0.050135 302
-0.050154 303
-0.050165 304
-0.050189 305
-0.050198 306
-0.050256 307
-0.050293 308
-0.050443 309
-0.050466 310
-0.050510 311
-0.050618 312
-0.050762 313
-0.050767 314
-0.050789 315
-0.050823 316
-0.050851 317
-0.050854 318
-0.050878 319
-0.051039 320
-0.051093 321
-0.051137 322
-0.051147 323
-0.051360 324
-0.051482 325
-0.051501 326
-0.051506 327
-0.051525 328
-0.051555 329
-0.051666 330
-0.051717 331
-0.051739 332
-0.051975 333
-0.052019 334
-0.052072 335
-0.052099 336
-0.052210 337
-0.052302 338
-0.052402 339
-0.052497 340
-0.052627 341
-0.052709 342
-0.052878 343
-0.052879 344
-0.053012 345
-0.053057 346
-0.053089 347
-0.053192 348
-0.053334 349
-0.053575 350
-0.053575 351
-0.053598 352
-0.053601 353
-0.053699 354
-0.053702 355
-0.053971 356
-0.054000 357
-0.054005 358
-0.054251 359
-0.054342 360
-0.054347 361
-0.054472 362
-0.054507 363
-0.054534 364
-0.054600 365
-0.054650 366
-0.054662 367
-0.054692 368
-0.054724 369
-0.054972 370
-0.055297 371
-0.055493 372
-0.055619 373
-0.055646 374
-0.055756 375
-0.055782 376
-0.056283 377
-0.056390 378
-0.056498 379
-0.057021 380
-0.057159 381
-0.057488 382
-0.057549 383
-0.057716 384
-0.057768 385
-0.057883 386
-0.058675 387
-0.059118 388
-0.059367 389
-0.059557 390
-0.059607 391
-0.059773 392
-0.060125 393
-0.060878 394
-0.060991 395
-0.061131 396
-0.061439 397
-0.061549 398
-0.062150 399
-0.062295 400
-0.062424 401
-0.062665 402
-0.062989 403
-0.064900 404
-0.065113 405
-0.065457 406
-0.065592 407
-0.065600 408
-0.065707 409
-0.065809 410
-0.066323 411
-0.066394 412
-0.066959 413
-0.067226 414
-0.067534 415
-0.067694 416
-0.068671 417
-0.069388 418
-0.069389 419
-0.069804 420
-0.069847 421
-0.070729 422
-0.070772 423
-0.071417 424
-0.071548 425
-0.073003 426
-0.073037 427
-0.073090 428
-0.074152 429
-0.074999 430
-0.076633 431
-0.076803 432
-0.076855 433
-0.077602 434
-0.077952 435
-0.079136 436
-0.079443 437
-0.081162 438
-0.081508 439
-0.082395 440
-0.083713 441
-0.084937 442
-0.086182 443
-0.086629 444
-0.090887 445
-0.091855 446
-0.092076 447
-0.093256 448
-0.094208 449
-0.096719 450
-0.096932 451
-0.098753 452
-0.099534 453
-0.102965 454
-0.106727 455
-0.111355 456
-0.113399 457
-0.120719 458
-0.122225 459
-0.124126 460
-0.127418 461
-0.129583 462
-0.133127 463
-0.134479 464
-0.135558 465
-0.141122 466
-0.144314 467
-0.150261 468
-0.152172 469
-0.155535 470
-0.156768 471
-0.241586 472
-0.245199 473
-0.245350 474
-0.246165 475
-0.246171 476
-0.246844 477
-0.247282 478
-0.248189 479
-0.249763 480
-0.249835 481
-0.252479 482
-0.252865 483
-0.253515 484
-0.260356 485
-0.261867 486
-0.269047 487
-0.276713 488
-0.379582 489
-0.393520 490
-0.395578 491
-0.429281 492
-0.487941 493
-0.516535 494
-0.676260 495
-0.735632 496
-0.900978 497
-1.760986 498
-2.139850 499
-2.893145 500
+++ /dev/null
-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
+++ /dev/null
-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
+++ /dev/null
-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
+++ /dev/null
-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
+++ /dev/null
-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
+++ /dev/null
-#!/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
+++ /dev/null
-45678659 1
-46355122 2
-47379259 3
-48709097 4
-49379532 5
-49786543 6
-49943146 7
-50046170 8
-51659455 9
-51717652 10
-51823365 11
-52401446 12
-53426212 13
-53711226 14
-53891235 15
-55629281 16
-55692538 17
-55739985 18
-55778654 19
-55976902 20
-56042769 21
-56063876 22
-56123205 23
-56144665 24
-56767363 25
-56864942 26
-57598879 27
-57916772 28
-58025692 29
-58700836 30
-59591718 31
-61605609 32
-62491770 33
-62541999 34
-62779260 35
-63166558 36
-63667866 37
-63689960 38
-64454483 39
-67419091 40
-68709460 41
-68808792 42
-69978132 43
-70277041 44
-71193653 45
-71825696 46
-71911672 47
-72666593 48
-74021744 49
-74842877 50
-75844197 51
-76982676 52
-77190901 53
-77353293 54
-77680295 55
-77891262 56
-78049688 57
-78489857 58
-78532052 59
-79051713 60
-79491182 61
-79771237 62
-80079032 63
-80362801 64
-80603670 65
-80655724 66
-80845778 67
-81059415 68
-81722925 69
-81929828 70
-82287821 71
-82425517 72
-82861304 73
-83038709 74
-83197398 75
-83316453 76
-84215983 77
-84216369 78
-84463818 79
-85272538 80
-85601647 81
-86400526 82
-86675230 83
-87044190 84
-87447493 85
-87611098 86
-87648187 87
-87904243 88
-88260362 89
-88323579 90
-89737288 91
-90317426 92
-90474320 93
-90599847 94
-91456617 95
-91636635 96
-92358926 97
-92679948 98
-92933857 99
-93124662 100
-93379095 101
-94474014 102
-94860040 103
-95435003 104
-95698334 105
-95958039 106
-96502010 107
-97322533 108
-98049406 109
-98720366 110
-99587678 111
-99783297 112
-103877728 113
-104364702 114
-106653944 115
-108536689 116
-110325180 117
-110557421 118
-110704103 119
-110791858 120
-112152449 121
-115036318 122
-115817475 123
-117678434 124
-119845589 125
-120259390 126
-120499701 127
-120816882 128
-122307081 129
-122553750 130
-123210783 131
-127147837 132
-128164568 133
-129148784 134
-129883413 135
-130181664 136
-132358068 137
-134013949 138
-136220018 139
-139438085 140
-139542969 141
-144310730 142
-146216931 143
-150812266 144
-152529469 145
-152599713 146
-153621949 147
-159331419 148
-164128549 149
-165127327 150
-168455185 151
-169846950 152
-176717574 153
-176945507 154
-182308635 155
-185582169 156
-191689623 157
-192978066 158
-216794455 159
-230299896 160
-244265055 161
-266801657 162
-288406029 163
-290924719 164
-290944322 165
-293194442 166
-296806702 167
-297125397 168
-301451332 169
-306961533 170
-319780909 171
-327596215 172
-336857597 173
-337213725 174
-338926846 175
-339953783 176
-344483199 177
-351730443 178
-373036522 179
-407110566 180
-417600026 181
-602331718 182
-1079106474 183
-5648448221 184
+++ /dev/null
-#!/usr/bin/python2.6
-
-import boto, httplib, socket, sys, time
-from boto.s3.key import Key
-from threading import Thread
-
-bucket_name = 'mvrable-benchmark'
-conn = boto.connect_s3(is_secure=False)
-
-class HttpResponseParser:
- def __init__(self):
- self.buf = ""
- self.header = True
- self.content_length = None
-
- def process(self, data):
- self.buf = self.buf + data
- while self.parse():
- pass
-
- def parse(self):
- if len(self.buf) == 0:
- return False
-
- if not self.header and self.content_length is not None:
- consumed = min(self.content_length, len(self.buf))
- #print "Got", consumed, "bytes of data"
- self.content_length -= consumed
- self.buf = self.buf[consumed:]
-
- if self.content_length == 0:
- print "Completed reading body"
- self.content_length = None
- self.header = True
-
- return True
-
- crlf = self.buf.find("\r\n")
- if crlf < 0:
- return False
-
- line = self.buf[0:crlf]
- self.buf = self.buf[crlf+2:]
- #print "Header line:", line
- if line.lower().startswith('content-length'):
- self.content_length = int(line[16:])
- print "Content length:", self.content_length
- if line == "":
- self.header = False
- return True
-
-class PipelinedRequester:
- def __init__(self, bucket):
- self.bucket = bucket
- self.host = conn.calling_format.build_host(conn.server_name(), bucket)
- self.sock = socket.create_connection((self.host, 80))
-
- t = Thread(target=self.reader_thread)
- t.setDaemon(True)
- t.start()
-
- def reader_thread(self):
- hrp = HttpResponseParser()
- while True:
- buf = self.sock.recv(4096)
- if len(buf) == 0: break
- hrp.process(buf)
-
- def send_request(self, key):
- method = 'GET'
- path = conn.calling_format.build_path_base(self.bucket, key)
- auth_path = conn.calling_format.build_auth_path(self.bucket, key)
-
- headers = {'User-Agent': boto.UserAgent + " (pipelined)",
- 'Content-Length': str(0)}
- conn.add_aws_auth_header(headers, method, auth_path)
-
- req = "%s %s HTTP/1.1\r\nHost: %s\r\n" % (method, path, self.host)
- req = req + ''.join("%s: %s\r\n" % h for h in headers.items()) + "\r\n"
- self.sock.sendall(req)
-
-requester = PipelinedRequester(bucket_name)
-for i in range(12, 18):
- requester.send_request('file-%d-1' % (1 << i,))
- if i == 12:
- time.sleep(2)
-for i in range(32):
- requester.send_request('file-8192-%d' % (i,))
-
-time.sleep(5)