From dde6cc729b2a32fc0201e9a124827e4bd7e6ca99 Mon Sep 17 00:00:00 2001 From: drebs Date: Fri, 5 Jan 2018 09:36:28 -0200 Subject: Add multiprocess test files. --- blob-multiprocess/README.txt | 92 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 92 insertions(+) create mode 100644 blob-multiprocess/README.txt (limited to 'blob-multiprocess/README.txt') 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`). -- cgit v1.2.3