diff --git a/docs/memory_manager_test_01.md b/docs/memory_manager_test_01.md new file mode 100644 index 00000000..223e27ec --- /dev/null +++ b/docs/memory_manager_test_01.md @@ -0,0 +1,156 @@ +# FIRST TEST USING SEAMM MEMORY MANAGER + +**Project under test**: `samples\renders\renders.dproj` + +**Platform**: Win64 + +**OS**: Windows 10 Pro + +**RAM**: 16GiB + +**Machine Info**: + +``` +CPU + Intel(R) Core(TM) i7-8650U CPU @ 1.90GHz + + Base Speed: 2,11 GHz + Physical processors: 1 + Cores: 4 + Logical Processors: 8 + Cache L1: 256 KB + Cache L2: 1,0 MB + Cache L3: 8,0 MB +``` + + + +**Action under test**: `/lotofobjects` (produces 3000 json object) + +**Kind of test**: 10 concurrent threads issuing a total of 1000 requests. + +**Test Phase**: Preliminar. More tests are needed also using distributed machines. + +## USING DEFAULT DELPHI 10.3.1 RIO MEMORY MANAGER + +``` +C:\DEV\dmvcframework\samples\apachemodule\Apache24\bin\ab.exe -c 10 -n 1000 http://127.0.0.1:8080/lotofobjects +This is ApacheBench, Version 2.3 <$Revision: 1748469 $> +Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ +Licensed to The Apache Software Foundation, http://www.apache.org/ + +Benchmarking 127.0.0.1 (be patient) +Completed 100 requests +Completed 200 requests +Completed 300 requests +Completed 400 requests +Completed 500 requests +Completed 600 requests +Completed 700 requests +Completed 800 requests +Completed 900 requests +Completed 1000 requests +Finished 1000 requests + + +Server Software: DelphiMVCFramework +Server Hostname: 127.0.0.1 +Server Port: 8080 + +Document Path: /lotofobjects +Document Length: 251001 bytes + +Concurrency Level: 10 +Time taken for tests: 33.767 seconds +Complete requests: 1000 +Failed requests: 0 +Total transferred: 251197000 bytes +HTML transferred: 251001000 bytes +Requests per second: 29.61 [#/sec] (mean) +Time per request: 337.674 [ms] (mean) +Time per request: 33.767 [ms] (mean, across all concurrent requests) +Transfer rate: 7264.69 [Kbytes/sec] received + +Connection Times (ms) + min mean[+/-sd] median max +Connect: 0 0 0.3 0 1 +Processing: 47 337 112.5 320 1183 +Waiting: 46 336 112.4 320 1183 +Total: 47 337 112.5 321 1183 + +Percentage of the requests served within a certain time (ms) + 50% 321 + 66% 361 + 75% 394 + 80% 411 + 90% 477 + 95% 540 + 98% 627 + 99% 690 + 100% 1183 (longest request) +``` + +## USING SeaMM.dll and SeaRTL.dll (with RDPMM64.pas from R. Della Pasqua) + +``` +C:\DEV\dmvcframework\samples\apachemodule\Apache24\bin\ab.exe -c 10 -n 1000 http://127.0.0.1:8080/lotofobjects +This is ApacheBench, Version 2.3 <$Revision: 1748469 $> +Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ +Licensed to The Apache Software Foundation, http://www.apache.org/ + +Benchmarking 127.0.0.1 (be patient) +Completed 100 requests +Completed 200 requests +Completed 300 requests +Completed 400 requests +Completed 500 requests +Completed 600 requests +Completed 700 requests +Completed 800 requests +Completed 900 requests +Completed 1000 requests +Finished 1000 requests + + +Server Software: DelphiMVCFramework +Server Hostname: 127.0.0.1 +Server Port: 8080 + +Document Path: /lotofobjects +Document Length: 251001 bytes + +Concurrency Level: 10 +Time taken for tests: 14.973 seconds +Complete requests: 1000 +Failed requests: 0 +Total transferred: 251197000 bytes +HTML transferred: 251001000 bytes +Requests per second: 66.79 [#/sec] (mean) +Time per request: 149.730 [ms] (mean) +Time per request: 14.973 [ms] (mean, across all concurrent requests) +Transfer rate: 16383.48 [Kbytes/sec] received + +Connection Times (ms) + min mean[+/-sd] median max +Connect: 0 0 0.4 0 1 +Processing: 84 149 36.9 143 294 +Waiting: 84 148 36.8 142 293 +Total: 84 149 36.9 143 294 + +Percentage of the requests served within a certain time (ms) + 50% 143 + 66% 163 + 75% 174 + 80% 181 + 90% 201 + 95% 219 + 98% 235 + 99% 249 + 100% 294 (longest request) +``` + + +### Summary + +The first test is quite impressive. Using the SEAMM we go from 29.61 to 66.79 requests/second. More tests are needed, however this one is a step in a good direction. +**No unit tests have been run, so do not use this setup in production if not for tests purpose.**