Adding benchmarking tools
svn: r6606
This commit is contained in:
parent
ef2d83fa3a
commit
4930ad3e37
72
collects/web-server/bench/bench.ss
Normal file
72
collects/web-server/bench/bench.ss
Normal 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))))
|
1
collects/web-server/bench/data/1181686382.ss
Normal file
1
collects/web-server/bench/data/1181686382.ss
Normal 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)))
|
Loading…
Reference in New Issue
Block a user