about summary refs log tree commit homepage
path: root/test/benchmark/README
diff options
context:
space:
mode:
authorEric Wong <normalperson@yhbt.net>2009-03-10 18:44:34 -0700
committerEric Wong <normalperson@yhbt.net>2009-03-22 19:04:27 -0700
commit98ea5cca50b907e20d6357f425d7789bac1d1a47 (patch)
tree73e3823c0cd4f23f806ac392e66e12c3d77fc61c /test/benchmark/README
parentca4265ea4d8bdeb9c569a50a05ee45e31f4b4269 (diff)
downloadunicorn-98ea5cca50b907e20d6357f425d7789bac1d1a47.tar.gz
dd.ru is a rackup file is intended as a dd(1)-like test for I/O
performance.

There are also individual request, response, and big_request
benchmarks for micro benchmarking some parts of Unicorn.

The rest of the benchmarks are gone: I am not interested in
performance comparisons (and pissing matches) with other web
servers (or their fanboys/girls).

I will _NEVER_ publically publish benchmarks comparing Unicorn
against other web servers.  I will only compare Unicorn against
other versions of Unicorn, possibly on different platforms.

Neutral third-parties are invited to publish their own
benchmarks (along with detailed procedures, version numbers and
other details) comparing Unicorn to other servers.

Signed-off-by: Eric Wong <normalperson@yhbt.net>
Diffstat (limited to 'test/benchmark/README')
-rw-r--r--test/benchmark/README55
1 files changed, 55 insertions, 0 deletions
diff --git a/test/benchmark/README b/test/benchmark/README
new file mode 100644
index 0000000..b63b8a3
--- /dev/null
+++ b/test/benchmark/README
@@ -0,0 +1,55 @@
+= Performance
+
+Unicorn is pretty fast, and we want it to get faster.  Unicorn strives
+to get HTTP requests to your application and write HTTP responses back
+as quickly as possible.  Unicorn does not do any background processing
+while your app runs, so your app will get all the CPU time provided to
+it by your OS kernel.
+
+A gentle reminder: Unicorn is NOT for serving clients over slow network
+connections.  Use nginx (or something similar) to complement Unicorn if
+you have slow clients.
+
+== dd.ru
+
+This is a pure I/O benchmark.  In the context of Unicorn, this is the
+only one that matters.  It is a standard rackup-compatible .ru file and
+may be used with other Rack-compatible servers.
+
+  unicorn -E none dd.ru
+
+You can change the size and number of chunks in the response with
+the "bs" and "count" environment variables.   The following command
+will cause dd.ru to return 4 chunks of 16384 bytes each, leading to
+65536 byte response:
+
+  bs=16384 count=4 unicorn -E none dd.ru
+
+Or if you want to add logging (small performance impact):
+
+  unicorn -E deployment dd.ru
+
+Eric runs then runs clients on a LAN it in several different ways:
+
+  client@host1 -> unicorn@host1(tcp)
+  client@host2 -> unicorn@host1(tcp)
+  client@host3 -> nginx@host1 -> unicorn@host1(tcp)
+  client@host3 -> nginx@host1 -> unicorn@host1(unix)
+  client@host3 -> nginx@host2 -> unicorn@host1(tcp)
+
+The benchmark client is usually httperf.
+
+Another gentle reminder: performance with slow networks/clients
+is NOT our problem.  That is the job of nginx (or similar).
+
+== request.rb, response.rb, big_request.rb
+
+These are micro-benchmarks designed to test internal components
+of Unicorn.  It assumes the internal Unicorn API is mostly stable.
+
+== Contributors
+
+This directory is maintained independently in the "benchmark" branch
+based against v0.1.0.  Only changes to this directory (test/benchmarks)
+are committed to this branch although the master branch may merge this
+branch occassionaly.