Adding benchmarking tools

svn: r6606
This commit is contained in:
Jay McCarthy 2007-06-12 22:14:21 +00:00
parent ef2d83fa3a
commit 4930ad3e37
2 changed files with 73 additions and 0 deletions

View File

@ -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))))

View File

@ -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)))