Jump to content

Recommended Posts

hi,

I have done a more extended sample, with webbroker indy http server, json parsing, data serialize to firedac memtable and populate a response, using threadvar blobs

 

single request >
1 request 1 thread: ab -n 1 -c 1 -k http://192.168.1.110:8080/

 

default
Concurrency Level:      1
Time taken for tests:   0.003 seconds
Complete requests:      1
Failed requests:        0
Keep-Alive requests:    0
Total transferred:      43146 bytes
HTML transferred:       43008 bytes
Requests per second:    287.27 [#/sec] (mean)
Time per request:       3.481 [ms] (mean)
Time per request:       3.481 [ms] (mean, across all concurrent requests)
Transfer rate:          12104.21 [Kbytes/sec] received

 

rdp64 intel tbb
Concurrency Level:      1
Time taken for tests:   0.003 seconds
Complete requests:      1
Failed requests:        0
Keep-Alive requests:    0
Total transferred:      43146 bytes
HTML transferred:       43008 bytes
Requests per second:    287.44 [#/sec] (mean)
Time per request:       3.479 [ms] (mean)
Time per request:       3.479 [ms] (mean, across all concurrent requests)
Transfer rate:          12111.17 [Kbytes/sec] received

 

msheap
Concurrency Level:      1
Time taken for tests:   0.005 seconds
Complete requests:      1
Failed requests:        0
Keep-Alive requests:    0
Total transferred:      43146 bytes
HTML transferred:       43008 bytes
Requests per second:    191.57 [#/sec] (mean)
Time per request:       5.220 [ms] (mean)
Time per request:       5.220 [ms] (mean, across all concurrent requests)
Transfer rate:          8071.79 [Kbytes/sec] received

 

fastmm5
Concurrency Level:      1
Time taken for tests:   0.005 seconds
Complete requests:      1
Failed requests:        0
Keep-Alive requests:    0
Total transferred:      43146 bytes
HTML transferred:       43008 bytes
Requests per second:    191.64 [#/sec] (mean)
Time per request:       5.218 [ms] (mean)
Time per request:       5.218 [ms] (mean, across all concurrent requests)
Transfer rate:          8074.89 [Kbytes/sec] received

 

> multi thread test >
100 requests 100 threads: ab -n 100 -c 100 -k http://192.168.1.110:8080/ 

 

default:
Concurrency Level:      100
Time taken for tests:   1.549 seconds
Complete requests:      100
Failed requests:        0
Keep-Alive requests:    0
Total transferred:      4314600 bytes
HTML transferred:       4300800 bytes
Requests per second:    64.56 [#/sec] (mean)
Time per request:       1548.967 [ms] (mean)
Time per request:       15.490 [ms] (mean, across all concurrent requests)
Transfer rate:          2720.18 [Kbytes/sec] received

 

rdp64 intel tbb
Concurrency Level:      100
Time taken for tests:   0.063 seconds
Complete requests:      100
Failed requests:        0
Keep-Alive requests:    0
Total transferred:      4314600 bytes
HTML transferred:       4300800 bytes
Requests per second:    1596.37 [#/sec] (mean)
Time per request:       62.642 [ms] (mean)
Time per request:       0.626 [ms] (mean, across all concurrent requests)
Transfer rate:          67262.80 [Kbytes/sec] received

 

msheap
Concurrency Level:      100
Time taken for tests:   0.070 seconds
Complete requests:      100
Failed requests:        0
Keep-Alive requests:    0
Total transferred:      4314600 bytes
HTML transferred:       4300800 bytes
Requests per second:    1431.02 [#/sec] (mean)
Time per request:       69.880 [ms] (mean)
Time per request:       0.699 [ms] (mean, across all concurrent requests)
Transfer rate:          60295.89 [Kbytes/sec] received

 

fastmm5
Concurrency Level:      100
Time taken for tests:   0.110 seconds
Complete requests:      100
Failed requests:        0
Keep-Alive requests:    0
Total transferred:      4314600 bytes
HTML transferred:       4300800 bytes
Requests per second:    909.90 [#/sec] (mean)
Time per request:       109.902 [ms] (mean)
Time per request:       1.099 [ms] (mean, across all concurrent requests)
Transfer rate:          38338.49 [Kbytes/sec] received

 

The ab bench is not very granular, so I assume that in a single thread all allocators should be close together.

I also did a test on linux ubuntu 22 in the same host and the results are similar to windows with msheap or tbb.

 

kind regards

btw. I used libraries from JsonDataObjects, DataSet.Serialize

 

LinuxSingle.thumb.png.59bac3ade13963264010cc68b95f9eaf.pngLinuxThreads.thumb.jpg.a07d9e4fe2beeb18c1e0b04daec9b13c.jpg

 

TestWebbroker.zip

Share this post


Link to post

look this -> using zlib accelerated deflate (RDPMM64 repo zip.dll)

 

msheap, isapi dll

 

Document Path:          /isapi/testisapi.dll
Document Length:        8416 bytes

Concurrency Level:      100
Time taken for tests:   0.609 seconds
Complete requests:      1000
Failed requests:        0
Total transferred:      8617000 bytes
HTML transferred:       8416000 bytes
Requests per second:    1641.52 [#/sec] (mean)
Time per request:       60.919 [ms] (mean)
Time per request:       0.609 [ms] (mean, across all concurrent requests)
Transfer rate:          13813.49 [Kbytes/sec] received

 

added:

 

uses JsonDataObjects, DataSet.Serialize, RDPWebbroker64;
 

in response method:

Response.ContentType:='application/json; charset="UTF-8"';
Response.ZlibDeflate;

end;

 

response reduced in real time from 43kb to 8kb (thus saving time from server -> to browser and bandwidth cloud cost) while keeping throughput reqs/s unchangediis_deflateac.thumb.png.779f2d6322a5727b825ce84bb3da2875.pngiisdef.thumb.png.a4b3a8e315c28afe6365bdf4a132ed5a.png

Share this post


Link to post

btw. I'll provide intel one api accelerated zlib.so library for linux too

 

Edited by RDP1974

Share this post


Link to post

latest oneapi v.2022

intel tbbmalloc with zlib deflate ac:

https://github.com/RDP1974/Delphi64RTL

 

Server Software:        Microsoft-IIS/10.0
Server Hostname:        192.168.1.110
Server Port:            80

Document Path:          /isapi/testisapi.dll
Document Length:        8416 bytes

Concurrency Level:      100
Time taken for tests:   5.478 seconds
Complete requests:      10000
Failed requests:        0
Total transferred:      86170000 bytes
HTML transferred:       84160000 bytes
Requests per second:    1825.64 [#/sec] (mean)
Time per request:       54.775 [ms] (mean)
Time per request:       0.548 [ms] (mean, across all concurrent requests)
Transfer rate:          15362.84 [Kbytes/sec] received

 

without zlib deflate

Document Path:          /isapi/testisapi.dll
Document Length:        43008 bytes

Concurrency Level:      100
Time taken for tests:   5.236 seconds
Complete requests:      10000
Failed requests:        0
Total transferred:      431740000 bytes
HTML transferred:       430080000 bytes
Requests per second:    1909.82 [#/sec] (mean)
Time per request:       52.361 [ms] (mean)
Time per request:       0.524 [ms] (mean, across all concurrent requests)
Transfer rate:          80522.17 [Kbytes/sec] received

Share this post


Link to post

single request

latest oneapi v.2022

(see first page)

 

Concurrency Level:      1
Time taken for tests:   0.004 seconds
Complete requests:      1
Failed requests:        0
Keep-Alive requests:    0
Total transferred:      43146 bytes
HTML transferred:       43008 bytes
Requests per second:    285.06 [#/sec] (mean)
Time per request:       3.508 [ms] (mean)
Time per request:       3.508 [ms] (mean, across all concurrent requests)
Transfer rate:          12011.05 [Kbytes/sec] received

Share this post


Link to post

please tell me if these test are disturbing or inapropriate 

if so will delete them

Share this post


Link to post

with keep-alive isapi app

 

Concurrency Level:      100
Time taken for tests:   4.763 seconds
Complete requests:      10000
Failed requests:        0
Keep-Alive requests:    10000
Total transferred:      431790000 bytes
HTML transferred:       430080000 bytes
Requests per second:    2099.45 [#/sec] (mean)
Time per request:       47.631 [ms] (mean)
Time per request:       0.476 [ms] (mean, across all concurrent requests)
Transfer rate:          88527.55 [Kbytes/sec] received

 

in project source:

  Application.MaxConnections:=1000;
  Application.CacheConnections:=True;

Edited by RDP1974

Share this post


Link to post

lowering the size of the output to 2.5kB (json blob) instead of 46kB, isapi has this throughput (cpu near old 9th 14nm i9900-kf)

 

Concurrency Level:      100
Time taken for tests:   0.398 seconds
Complete requests:      10000
Failed requests:        0
Keep-Alive requests:    10000
Total transferred:      27800000 bytes
HTML transferred:       26100000 bytes
Requests per second:    25106.45 [#/sec] (mean)
Time per request:       3.983 [ms] (mean)
Time per request:       0.040 [ms] (mean, across all concurrent requests)
Transfer rate:          68160.09 [Kbytes/sec] received

Edited by RDP1974

Share this post


Link to post

@RDP1974 - Please change the title of the post to reflect the content - "new test" does not inform those that read the list of topics

  • Like 1

Share this post


Link to post
46 minutes ago, Lars Fosdal said:

@RDP1974 - Please change the title of the post to reflect the content - "new test" does not inform those that read the list of topics

 how to?

Share this post


Link to post

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×