From 4930ad3e37f8b61ad84f2cd0c1fc0a93900ccbeb Mon Sep 17 00:00:00 2001 From: Jay McCarthy Date: Tue, 12 Jun 2007 22:14:21 +0000 Subject: [PATCH] Adding benchmarking tools svn: r6606 --- collects/web-server/bench/bench.ss | 72 ++++++++++++++++++++ collects/web-server/bench/data/1181686382.ss | 1 + 2 files changed, 73 insertions(+) create mode 100644 collects/web-server/bench/bench.ss create mode 100644 collects/web-server/bench/data/1181686382.ss diff --git a/collects/web-server/bench/bench.ss b/collects/web-server/bench/bench.ss new file mode 100644 index 0000000000..f21fcc1b2d --- /dev/null +++ b/collects/web-server/bench/bench.ss @@ -0,0 +1,72 @@ +(module bench mzscheme + (require (lib "file.ss") + (lib "list.ss") + (lib "process.ss") + (lib "web-server.ss" "web-server") + (prefix files: (lib "dispatch-files.ss" "web-server" "dispatchers")) + (planet "csv.ss" ("neil" "csv.plt" 1 1))) + + (define data-path (collection-path "web-server" "bench" "data")) + (define port (make-parameter 9480)) + + (define *test-file* (make-temporary-file)) + (with-output-to-file *test-file* + (lambda () + (write (make-string 1024 #\a))) + 'truncate/replace) + + (define *data-file* (make-temporary-file)) + + (define server-cust (make-custodian)) + (define shutdown + (parameterize ([current-custodian server-cust]) + (serve #:port (port) + #:dispatch + (files:make #:url->path (lambda _ (values *test-file* empty)) + #:mime-types-path (build-path "/etc/httpd/mime.types"))))) + + (define before/s (current-memory-use server-cust)) + (define before (current-memory-use)) + + (define start (current-seconds)) + (define cmd (format "ab -c 10 -t 120 -e ~a http://localhost:~a/file" + (path->bytes *data-file*) + (port))) + (system cmd) + (define stop (current-seconds)) + + (define after/s (current-memory-use server-cust)) + (define after (current-memory-use)) + (collect-garbage) (collect-garbage) (collect-garbage) (collect-garbage) + (define after-gc/s (current-memory-use server-cust)) + (define after-gc (current-memory-use)) + + (shutdown) + (define shut (current-seconds)) + + (define response-percentiles + (map string->number + (rest + (call-with-input-file *data-file* + (lambda (ip) + (csv-map second ip)))))) + + (define data + `(benchmark (cmd ,cmd) + (timing (start ,start) + (stop ,stop) + (shutdown ,shut)) + (memory-usage + (mzscheme (before ,before) + (after ,after) + (after-gc ,after-gc)) + (server (before ,before/s) + (after ,after/s) + (after-gc ,after-gc/s))) + (response-times + ,response-percentiles))) + + (printf "~S~n" data) + + (with-output-to-file (build-path data-path (format "~a.ss" (number->string (current-seconds)))) + (lambda () (printf "~S~n" data)))) \ No newline at end of file diff --git a/collects/web-server/bench/data/1181686382.ss b/collects/web-server/bench/data/1181686382.ss new file mode 100644 index 0000000000..23536907e2 --- /dev/null +++ b/collects/web-server/bench/data/1181686382.ss @@ -0,0 +1 @@ +(benchmark (cmd "ab -c 10 -t 120 -e /tmp/mztmp1181686223570222294 http://localhost:9480/file") (timing (start 1181686228) (stop 1181686349) (shutdown 1181686382)) (memory-usage (mzscheme (before 18005184) (after 201042604) (after-gc 198771452)) (server (before 11677076) (after 11947464) (after-gc 11974392))) (response-times (2.0 5.0 6.0 6.0 7.0 7.0 8.0 8.0 9.0 9.0 9.0 10.0 10.0 11.0 11.0 11.0 12.0 12.0 13.0 13.0 13.0 14.0 14.0 15.0 16.0 16.0 16.0 17.0 17.0 18.0 19.0 19.0 20.0 20.0 21.0 22.0 22.0 23.0 24.0 24.0 25.0 26.0 26.0 27.0 28.0 29.0 29.0 30.0 30.0 31.0 32.0 33.0 33.0 34.0 35.0 36.0 36.0 37.0 38.0 39.0 39.0 40.0 40.0 41.0 42.0 42.0 43.0 44.0 45.0 46.0 47.0 48.0 49.0 50.0 50.0 51.0 52.0 53.0 54.0 56.0 57.0 58.0 59.0 60.0 61.0 63.0 64.0 66.0 67.0 69.0 71.0 73.0 76.0 79.0 82.0 86.0 91.0 99.0 120.0 278.0)))