Skip to content

Instantly share code, notes, and snippets.

@TimothyGu
Last active August 29, 2015 14:18
Show Gist options
  • Select an option

  • Save TimothyGu/d59437a2f7015912b72e to your computer and use it in GitHub Desktop.

Select an option

Save TimothyGu/d59437a2f7015912b72e to your computer and use it in GitHub Desktop.

All tests run on fate.ffmpeg.org.

Using io.js 1.6.4:

> process.versions
{ http_parser: '2.3.0',
  node: '1.6.4',
  v8: '4.1.0.27',
  uv: '1.4.2',
  zlib: '1.2.8',
  ares: '1.10.0-DEV',
  modules: '43',
  openssl: '1.0.1m' }
seconds index report w/o failures report w/ failures big history small history log
CGI 8 32.936 26.331 41.033 8.423 54.463, only serving 90% of the requests 87.426, only serving half of the requests
Node.js 8 6.707 5.393 4.922 4.444 2.143 15.891
Node.js 4 8.533 6.983 6.321 6.994 2.381 12.870

* VERY slow on Node.js. Will investigate. Seems to be a bug on my end.

Report Without Failures

$ ab -r -n 1000 -c 100 'http://localhost:8080/report.cgi?time=20150328130920&slot=armv7l-panda-gcc4.4-armv5t'

Current CGI

Document Path:          /report.cgi?time=20150328130920&slot=armv7l-panda-gcc4.4-armv5t
Document Length:        5500 bytes

Concurrency Level:      100
Time taken for tests:   26.331 seconds
Complete requests:      1000
Failed requests:        0
Write errors:           0
Total transferred:      5655000 bytes
HTML transferred:       5500000 bytes
Requests per second:    37.98 [#/sec] (mean)
Time per request:       2633.139 [ms] (mean)
Time per request:       26.331 [ms] (mean, across all concurrent requests)
Transfer rate:          209.73 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    0   0.5      0       2
Processing:  1267 2589 265.3   2616    4277
Waiting:     1262 2565 262.6   2592    4274
Total:       1267 2589 265.2   2616    4279

Percentage of the requests served within a certain time (ms)
  50%   2616
  66%   2669
  75%   2696
  80%   2714
  90%   2773
  95%   2854
  98%   3290
  99%   3469
 100%   4279 (longest request)

Node.js with 8 threads

Document Path:          /report.cgi?time=20150328130920&slot=armv7l-panda-gcc4.4-armv5t
Document Length:        233461 bytes

Concurrency Level:      100
Time taken for tests:   5.393 seconds
Complete requests:      1000
Failed requests:        0
Write errors:           0
Total transferred:      233682000 bytes
HTML transferred:       233461000 bytes
Requests per second:    185.42 [#/sec] (mean)
Time per request:       539.307 [ms] (mean)
Time per request:       5.393 [ms] (mean, across all concurrent requests)
Transfer rate:          42314.49 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    0   0.7      0       3
Processing:   299  525 379.9    396    2045
Waiting:      267  464 359.4    342    1995
Total:        299  526 380.5    396    2047

Percentage of the requests served within a certain time (ms)
  50%    396
  66%    411
  75%    424
  80%    437
  90%    962
  95%   1690
  98%   1813
  99%   1882
 100%   2047 (longest request)

Node.js with 4 threads:

Document Path:          /report.cgi?time=20150328130920&slot=armv7l-panda-gcc4.4-armv5t
Document Length:        233461 bytes

Concurrency Level:      100
Time taken for tests:   6.983 seconds
Complete requests:      1000
Failed requests:        0
Write errors:           0
Total transferred:      233682000 bytes
HTML transferred:       233461000 bytes
Requests per second:    143.21 [#/sec] (mean)
Time per request:       698.252 [ms] (mean)
Time per request:       6.983 [ms] (mean, across all concurrent requests)
Transfer rate:          32682.33 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    0   0.4      0       2
Processing:   362  680 649.6    465    3274
Waiting:      334  650 631.9    442    3220
Total:        362  680 650.0    465    3275

Percentage of the requests served within a certain time (ms)
  50%    465
  66%    489
  75%    510
  80%    538
  90%   1813
  95%   2668
  98%   2923
  99%   3004
 100%   3275 (longest request)

Report with a lot of failures

$ ab -r -n 1000 -c 100 'http://localhost/report.cgi?time=20150408072941&slot=ppc64le-linux-qemu-ubuntu14.10-gcc-4.9.1-ibmcrl'

CGI

Document Path:          /report.cgi?time=20150408072941&slot=ppc64le-linux-qemu-ubuntu14.10-gcc-4.9.1-ibmcrl
Document Length:        2772325 bytes

Concurrency Level:      100
Time taken for tests:   41.033 seconds
Complete requests:      1000
Failed requests:        0
Write errors:           0
Total transferred:      2772480000 bytes
HTML transferred:       2772325000 bytes
Requests per second:    24.37 [#/sec] (mean)
Time per request:       4103.297 [ms] (mean)
Time per request:       41.033 [ms] (mean, across all concurrent requests)
Transfer rate:          65983.53 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    0   0.5      0       2
Processing:  2217 4060 266.3   4066    5499
Waiting:     1304 2444 219.7   2436    3739
Total:       2217 4060 266.2   4066    5501

Percentage of the requests served within a certain time (ms)
  50%   4066
  66%   4141
  75%   4208
  80%   4247
  90%   4354
  95%   4464
  98%   4584
  99%   4686
 100%   5501 (longest request)

Node.js with 8 threads

Document Path:          /report.cgi?time=20150408072941&slot=ppc64le-linux-qemu-ubuntu14.10-gcc-4.9.1-ibmcrl
Document Length:        467179 bytes

Concurrency Level:      100
Time taken for tests:   4.922 seconds
Complete requests:      1000
Failed requests:        0
Write errors:           0
Total transferred:      467400000 bytes
HTML transferred:       467179000 bytes
Requests per second:    203.17 [#/sec] (mean)
Time per request:       492.208 [ms] (mean)
Time per request:       4.922 [ms] (mean, across all concurrent requests)
Transfer rate:          92734.25 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    0   0.7      0       3
Processing:   221  475 423.0    330    1986
Waiting:      190  448 382.5    320    1958
Total:        221  475 423.7    330    1988

Percentage of the requests served within a certain time (ms)
  50%    330
  66%    347
  75%    363
  80%    381
  90%   1157
  95%   1785
  98%   1891
  99%   1943
 100%   1988 (longest request)

node.js with 4 threads

Concurrency Level:      100
Time taken for tests:   6.321 seconds
Complete requests:      1000
Failed requests:        0
Write errors:           0
Total transferred:      467400000 bytes
HTML transferred:       467179000 bytes
Requests per second:    158.21 [#/sec] (mean)
Time per request:       632.066 [ms] (mean)
Time per request:       6.321 [ms] (mean, across all concurrent requests)
Transfer rate:          72214.80 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    0   0.5      0       2
Processing:   314  615 722.1    370    3410
Waiting:      273  592 705.6    353    3375
Total:        314  615 722.5    370    3411

Percentage of the requests served within a certain time (ms)
  50%    370
  66%    391
  75%    412
  80%    430
  90%   1828
  95%   2784
  98%   3095
  99%   3210
 100%   3411 (longest request)

Index

I had to reduce concurrency level and total number of requests here to make the CGI bearable.

$ ab -r -n 50 -c 8 'http://localhost/'

CGI with 8 threads

Document Path:          /
Document Length:        575430 bytes

Concurrency Level:      8
Time taken for tests:   32.936 seconds
Complete requests:      50
Failed requests:        0
Write errors:           0
Total transferred:      28781700 bytes
HTML transferred:       28771500 bytes
Requests per second:    1.52 [#/sec] (mean)
Time per request:       5269.706 [ms] (mean)
Time per request:       658.713 [ms] (mean, across all concurrent requests)
Transfer rate:          853.40 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    0   0.0      0       0
Processing:  3099 4937 401.3   4980    5329
Waiting:      381  532  85.1    507     687
Total:       3099 4937 401.3   4980    5329

Percentage of the requests served within a certain time (ms)
  50%   4980
  66%   5066
  75%   5151
  80%   5164
  90%   5214
  95%   5294
  98%   5329
  99%   5329
 100%   5329 (longest request)

Node.js with 8 threads

Document Path:          /
Document Length:        728757 bytes

Concurrency Level:      8
Time taken for tests:   6.707 seconds
Complete requests:      50
Failed requests:        0
Write errors:           0
Total transferred:      36448900 bytes
HTML transferred:       36437850 bytes
Requests per second:    7.46 [#/sec] (mean)
Time per request:       1073.048 [ms] (mean)
Time per request:       134.131 [ms] (mean, across all concurrent requests)
Transfer rate:          5307.44 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    0   0.0      0       0
Processing:   688 1015 135.1   1008    1255
Waiting:      685 1007 132.1   1002    1234
Total:        688 1015 135.1   1008    1255

Percentage of the requests served within a certain time (ms)
  50%   1008
  66%   1066
  75%   1124
  80%   1156
  90%   1213
  95%   1224
  98%   1255
  99%   1255
 100%   1255 (longest request)

Node.js with 4 threads

Document Path:          /
Document Length:        728755 bytes

Concurrency Level:      8
Time taken for tests:   8.533 seconds
Complete requests:      50
Failed requests:        0
Write errors:           0
Total transferred:      36448800 bytes
HTML transferred:       36437750 bytes
Requests per second:    5.86 [#/sec] (mean)
Time per request:       1365.233 [ms] (mean)
Time per request:       170.654 [ms] (mean, across all concurrent requests)
Transfer rate:          4171.54 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    0   0.0      0       0
Processing:   597 1274 423.5   1310    2047
Waiting:      593 1155 352.7   1177    1923
Total:        597 1274 423.5   1310    2047

Percentage of the requests served within a certain time (ms)
  50%   1310
  66%   1517
  75%   1625
  80%   1712
  90%   1873
  95%   1926
  98%   2047
  99%   2047
 100%   2047 (longest request)

Logs

I intentionally stressed very hard on the server on this one.

$ ab -r -n 10000 -c 1000 'http://localhost/log.cgi?time=20150408072941&log=test&slot=ppc64le-linux-qemu-ubuntu14.10-gcc-4.9.1-ibmcrl'

Also note that most of the CPU time is probably spent on decompressing the gzip-compressed files, as I did not add Accept-Encoding.

CGI with 8 threads

Document Path:          /log.cgi?time=20150408072941&log=test&slot=ppc64le-linux-qemu-ubuntu14.10-gcc-4.9.1-ibmcrl
Document Length:        411110 bytes

Concurrency Level:      1000
Time taken for tests:   87.426 seconds
Complete requests:      10000
Failed requests:        4935
   (Connect: 0, Receive: 1645, Length: 1645, Exceptions: 1645)
Write errors:           0
Total transferred:      3436127430 bytes
HTML transferred:       3434824050 bytes
Requests per second:    114.38 [#/sec] (mean)
Time per request:       8742.577 [ms] (mean)
Time per request:       8.743 [ms] (mean, across all concurrent requests)
Transfer rate:          38382.20 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0 1597 2862.5    997   31079
Processing:   365 3953 6438.9   1945   63155
Waiting:        0 1839 1887.8   1812   38075
Total:        379 5550 7504.9   2872   63155

Percentage of the requests served within a certain time (ms)
  50%   2872
  66%   3866
  75%   5390
  80%   6548
  90%  10980
  95%  20714
  98%  29535
  99%  35508
 100%  63155 (longest request)

Node.js with 8 threads

Document Path:          /log.cgi?time=20150408072941&log=test&slot=ppc64le-linux-qemu-ubuntu14.10-gcc-4.9.1-ibmcrl
Document Length:        411110 bytes

Concurrency Level:      1000
Time taken for tests:   15.891 seconds
Complete requests:      10000
Failed requests:        0
Write errors:           0
Total transferred:      4113090000 bytes
HTML transferred:       4111100000 bytes
Requests per second:    629.29 [#/sec] (mean)
Time per request:       1589.104 [ms] (mean)
Time per request:       1.589 [ms] (mean, across all concurrent requests)
Transfer rate:          252764.48 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0  197 410.7      0    3004
Processing:   220 1312 307.3   1364    2050
Waiting:      190 1299 306.6   1350    2047
Total:        246 1510 513.3   1437    4361

Percentage of the requests served within a certain time (ms)
  50%   1437
  66%   1560
  75%   1781
  80%   1874
  90%   2378
  95%   2488
  98%   2549
  99%   2589
 100%   4361 (longest request)

Node.js with 4 threads

Document Path:          /log.cgi?time=20150408072941&log=test&slot=ppc64le-linux-qemu-ubuntu14.10-gcc-4.9.1-ibmcrl
Document Length:        411110 bytes

Concurrency Level:      1000
Time taken for tests:   12.870 seconds
Complete requests:      10000
Failed requests:        0
Write errors:           0
Total transferred:      4113090000 bytes
HTML transferred:       4111100000 bytes
Requests per second:    777.01 [#/sec] (mean)
Time per request:       1286.985 [ms] (mean)
Time per request:       1.287 [ms] (mean, across all concurrent requests)
Transfer rate:          312100.67 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    2   4.6      0      21
Processing:   108 1227 211.6   1284    1456
Waiting:       93 1221 211.3   1278    1448
Total:        129 1229 207.7   1284    1456

Percentage of the requests served within a certain time (ms)
  50%   1284
  66%   1315
  75%   1338
  80%   1350
  90%   1368
  95%   1384
  98%   1401
  99%   1413
 100%   1456 (longest request)

Big History

ab -r -n 900 -c 100 http://localhost:80/history.cgi?slot=armv7l-panda-gcc4.4-armv5t

CGI

Document Path:          /history.cgi?slot=armv7l-panda-gcc4.4-armv5t
Document Length:        21828 bytes

Concurrency Level:      100
Time taken for tests:   8.423 seconds
Complete requests:      900
Failed requests:        0
Write errors:           0
Total transferred:      19784700 bytes
HTML transferred:       19645200 bytes
Requests per second:    106.85 [#/sec] (mean)
Time per request:       935.874 [ms] (mean)
Time per request:       9.359 [ms] (mean, across all concurrent requests)
Transfer rate:          2293.87 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    0   0.5      0       2
Processing:   567  919  94.2    929    1206
Waiting:      460  812  80.8    817    1087
Total:        567  919  94.2    929    1208

Percentage of the requests served within a certain time (ms)
  50%    929
  66%    958
  75%    976
  80%    988
  90%   1022
  95%   1044
  98%   1092
  99%   1139
 100%   1208 (longest request)

Node.js 8 threads

Document Path:          /history.cgi?slot=armv7l-panda-gcc4.4-armv5t
Document Length:        44638 bytes

Concurrency Level:      100
Time taken for tests:   4.444 seconds
Complete requests:      900
Failed requests:        0
Write errors:           0
Total transferred:      40372200 bytes
HTML transferred:       40174200 bytes
Requests per second:    202.50 [#/sec] (mean)
Time per request:       493.816 [ms] (mean)
Time per request:       4.938 [ms] (mean, across all concurrent requests)
Transfer rate:          8871.04 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    0   0.5      0       2
Processing:   242  469 139.0    429    1034
Waiting:      240  468 138.6    428    1034
Total:        242  470 139.2    429    1035

Percentage of the requests served within a certain time (ms)
  50%    429
  66%    489
  75%    538
  80%    581
  90%    674
  95%    741
  98%    863
  99%    942
 100%   1035 (longest request)

Node.js 4 threads

Document Path:          /history.cgi?slot=armv7l-panda-gcc4.4-armv5t
Document Length:        44638 bytes

Concurrency Level:      100
Time taken for tests:   6.994 seconds
Complete requests:      900
Failed requests:        0
Write errors:           0
Total transferred:      40372200 bytes
HTML transferred:       40174200 bytes
Requests per second:    128.69 [#/sec] (mean)
Time per request:       777.085 [ms] (mean)
Time per request:       7.771 [ms] (mean, across all concurrent requests)
Transfer rate:          5637.30 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    0   0.7      0       3
Processing:   238  743 118.1    743    1048
Waiting:      235  743 118.1    742    1047
Total:        241  743 117.7    743    1049

Percentage of the requests served within a certain time (ms)
  50%    743
  66%    783
  75%    807
  80%    828
  90%    880
  95%    915
  98%    960
  99%    981
 100%   1049 (longest request)

Small History

$ ab -r -n 5000 -c 500 'http://localhost:80/history.cgi?slot=ppc64le-linux-qemu-ubuntu14.10-gcc-4.9.1-ibmcrl'

CGI

Document Path:          /history.cgi?slot=ppc64le-linux-qemu-ubuntu14.10-gcc-4.9.1-ibmcrl
Document Length:        4664 bytes

Concurrency Level:      500
Time taken for tests:   54.463 seconds
Complete requests:      5000
Failed requests:        427
   (Connect: 0, Receive: 140, Length: 147, Exceptions: 140)
Write errors:           0
Total transferred:      23387663 bytes
HTML transferred:       22634392 bytes
Requests per second:    91.81 [#/sec] (mean)
Time per request:       5446.325 [ms] (mean)
Time per request:       10.893 [ms] (mean, across all concurrent requests)
Transfer rate:          419.36 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0  333 1052.7      0   15024
Processing:   374 3322 7165.4   1817   54452
Waiting:        0 2444 4742.2   1803   54451
Total:        381 3655 7283.7   1846   54459

Percentage of the requests served within a certain time (ms)
  50%   1846
  66%   1956
  75%   2141
  80%   2760
  90%   4772
  95%  10308
  98%  27010
  99%  54209
 100%  54459 (longest request)

Node.js 8 threads

Document Path:          /history.cgi?slot=ppc64le-linux-qemu-ubuntu14.10-gcc-4.9.1-ibmcrl
Document Length:        8313 bytes

Concurrency Level:      500
Time taken for tests:   2.143 seconds
Complete requests:      5000
Failed requests:        0
Write errors:           0
Total transferred:      42660000 bytes
HTML transferred:       41565000 bytes
Requests per second:    2333.14 [#/sec] (mean)
Time per request:       214.304 [ms] (mean)
Time per request:       0.429 [ms] (mean, across all concurrent requests)
Transfer rate:          19439.78 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    1   3.0      0      12
Processing:    17  203  36.7    211     250
Waiting:       17  203  36.7    211     250
Total:         29  204  34.1    211     250

Percentage of the requests served within a certain time (ms)
  50%    211
  66%    214
  75%    216
  80%    218
  90%    224
  95%    230
  98%    236
  99%    242
 100%    250 (longest request)

Node.js 4 threads

Document Path:          /history.cgi?slot=ppc64le-linux-qemu-ubuntu14.10-gcc-4.9.1-ibmcrl
Document Length:        8313 bytes

Concurrency Level:      500
Time taken for tests:   2.381 seconds
Complete requests:      5000
Failed requests:        0
Write errors:           0
Total transferred:      42660000 bytes
HTML transferred:       41565000 bytes
Requests per second:    2099.92 [#/sec] (mean)
Time per request:       238.104 [ms] (mean)
Time per request:       0.476 [ms] (mean, across all concurrent requests)
Transfer rate:          17496.64 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    1   2.9      0      12
Processing:    20  225  39.4    235     253
Waiting:       20  225  39.4    235     253
Total:         32  226  36.8    235     253

Percentage of the requests served within a certain time (ms)
  50%    235
  66%    238
  75%    240
  80%    241
  90%    244
  95%    246
  98%    249
  99%    250
 100%    253 (longest request)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment