From 98ea5cca50b907e20d6357f425d7789bac1d1a47 Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Tue, 10 Mar 2009 18:44:34 -0700 Subject: All new benchmarks, old ones removed 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 --- test/benchmark/utils.rb | 82 ------------------------------------------------- 1 file changed, 82 deletions(-) delete mode 100644 test/benchmark/utils.rb (limited to 'test/benchmark/utils.rb') diff --git a/test/benchmark/utils.rb b/test/benchmark/utils.rb deleted file mode 100644 index feb22c1..0000000 --- a/test/benchmark/utils.rb +++ /dev/null @@ -1,82 +0,0 @@ - -require 'rubygems' -require 'rack' -require 'rack/lobster' - -def run(handler_name, n=1000, c=1) - port = 7000 - - server = fork do - [STDOUT, STDERR].each { |o| o.reopen "/dev/null" } - - case handler_name - when 'EMongrel' - require 'swiftcore/evented_mongrel' - handler_name = 'Mongrel' - - when 'Thin' - require 'thin' - hander_name = 'Thin' - - when 'gem' # Load the current Mongrel gem - require 'mongrel' - handler_name = 'Mongrel' - - when 'current' # Load the current Mongrel version under /lib - require File.dirname(__FILE__) + '/../lib/mongrel' - handler_name = 'Mongrel' - - end - - app = Rack::Lobster.new - - handler = Rack::Handler.const_get(handler_name) - handler.run app, :Host => '0.0.0.0', :Port => port - end - - sleep 2 - - out = `nice -n20 ab -c #{c} -n #{n} http://127.0.0.1:#{port}/ 2> /dev/null` - - Process.kill('SIGKILL', server) - Process.wait - - if requests = out.match(/^Requests.+?(\d+\.\d+)/) - requests[1].to_i - else - 0 - end -end - -def benchmark(type, servers, request, concurrency_levels) - send "#{type}_benchmark", servers, request, concurrency_levels -end - -def graph_benchmark(servers, request, concurrency_levels) - require '/usr/local/lib/ruby/gems/1.8/gems/gruff-0.2.9/lib/gruff' - g = Gruff::Area.new - g.title = "Server benchmark" - - servers.each do |server| - g.data(server, concurrency_levels.collect { |c| print '.'; run(server, request, c) }) - end - puts - - g.x_axis_label = 'Concurrency' - g.y_axis_label = 'Requests / sec' - g.labels = {} - concurrency_levels.each_with_index { |c, i| g.labels[i] = c.to_s } - - g.write('bench.png') - `open bench.png` -end - -def print_benchmark(servers, request, concurrency_levels) - puts 'server request concurrency req/s' - puts '=' * 42 - concurrency_levels.each do |c| - servers.each do |server| - puts "#{server.ljust(8)} #{request} #{c.to_s.ljust(4)} #{run(server, request, c)}" - end - end -end \ No newline at end of file -- cgit v1.2.3-24-ge0c7