summaryrefslogtreecommitdiff
path: root/blob-multiprocess/README.txt
diff options
context:
space:
mode:
Diffstat (limited to 'blob-multiprocess/README.txt')
-rw-r--r--blob-multiprocess/README.txt92
1 files changed, 92 insertions, 0 deletions
diff --git a/blob-multiprocess/README.txt b/blob-multiprocess/README.txt
new file mode 100644
index 0000000..31caa29
--- /dev/null
+++ b/blob-multiprocess/README.txt
@@ -0,0 +1,92 @@
+Blobs Server Multiprocessing Improvement Assessment
+===================================================
+
+The code in this directory has the purpose of showing whether multiprocessing
+improves the Soledad Blobs Server or not.
+
+It uses a haproxy instance listening on local port 8000 to route between
+different processes listening on ports 8001-8008. The number of processes
+depends on the testing scenario.
+
+Then, it runs a set of tests using 1, 2, 4 and 8 blobs server processes and
+stores the results in a text file. Those results can then be graphed and
+compared visually.
+
+
+Dependencies
+------------
+
+To run the testing script, you will need to have:
+
+- A python virtualenv with Soledad Server installed on it.
+- A working haproxy installation.
+- curl
+
+To generate the graph, you will need:
+
+- numpy
+- matplotlib/pyplot
+
+
+Description of files
+--------------------
+
+.
+├── blobs-in-parallel.png - A graph generated from ./results.txt
+├── blobs-server.py - A simple blobs server.
+├── graph.py - The graphing script.
+├── haproxy - A directory with haproxy config.
+├── makefile - Rules for starting up pieces of the test.
+├── multiproc.py - A service that spawns multiple blobs servers.
+├── README - This file.
+├── request.py - A stressing blobs client.
+├── results - A directory with some results stored.
+├── results.txt - The file that ./graph.py reads from.
+└── run-test.sh - The script to run tests and produce output.
+
+
+Actions
+-------
+
+The following set of actions are tested in each scenario, and compose the
+X axis of the final graph:
+
+ - baseline: a simple GET / to the root of the webserver, returning an empty
+ page. Nothing can be faster than that.
+
+ - list: a simple GET /blobs/some-user which lists the current blobs. In the
+ present case, the result will always be an empty set of blobs.
+
+ - put: a PUT /blobs/some-user/some-blob-id. The size of the blob depends on
+ the scenarios configured in ./run-test.sh.
+
+ - get: a PUT /blobs/some-user/some-blob-id followed by a GET to the same
+ blob.
+
+ - flag: a PUT /blobs/some-user/some-blob-id followed by a POST to the same
+ blob setting one flag.
+
+ - delete: a PUT /blobs/some-user/some-blob-id followed by a DELETE of the
+ same blob.
+
+When testing, each action is run 5 times (so the numbers in ./results.txt are
+the accumulated time of the 5 runs) and the mean of the time taken is used when
+graphing.
+
+Usage
+-----
+
+Configure the scenarios you want tests to be run by editing ./run-test.sh, and
+then run the script. It will:
+
+ - iterate through desired number of processes and startup haproxy and
+ multiproc blobs server for each scenario.
+
+ - iterate through all the actions tested (baseline, put, put+get, etc).
+
+ - iterate through amount x size blobs scenarios.
+
+ - delete the contents of /tmp/blobs/* and run tests for each scenario.
+
+Check the makefile for rules to help debugging (i.e. `make server` and `make
+get`).