[ https://issues.apache.org/jira/browse/TS-3178?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14201307#comment-14201307 ]
Cynthia Gu commented on TS-3178: -------------------------------- I've got one data point with the command: ab -n 10000 -c 100 http://xxx.xxx.xxx.xxx:8080/ remap.config: regex_map http://.*:8080/ http://www.google.com The QPS increases to 104.62 [#/sec] (mean) vs. 78.74 [#/sec] (mean) before the change. Observed in top, memory usage is 1/3 less than before the change. Bare in mind that more data points can eliminate error noises and make the result more close to the truth I copy the full report from ab as below: //---------------------------------- // after the change //---------------------------------- This is ApacheBench, Version 2.3 <$Revision: 655654 $> Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Licensed to The Apache Software Foundation, http://www.apache.org/ Benchmarking xxx.xxx.xxx.xxx (be patient) Completed 1000 requests Completed 2000 requests Completed 3000 requests Completed 4000 requests Completed 5000 requests Completed 6000 requests Completed 7000 requests Completed 8000 requests Completed 9000 requests Completed 10000 requests Finished 10000 requests Server Software: ATS/5.2.0 Server Hostname: xxx.xxx.xxx.xxx Server Port: 8080 Document Path: / Document Length: 333 bytes Concurrency Level: 100 Time taken for tests: 95.582 seconds Complete requests: 10000 Failed requests: 4342 (Connect: 0, Receive: 0, Length: 4342, Exceptions: 0) Write errors: 0 Non-2xx responses: 10000 Total transferred: 10800078 bytes HTML transferred: 7007674 bytes Requests per second: 104.62 [#/sec] (mean) Time per request: 955.823 [ms] (mean) Time per request: 9.558 [ms] (mean, across all concurrent requests) Transfer rate: 110.34 [Kbytes/sec] received Connection Times (ms) min mean[+/-sd] median max Connect: 2 24 154.9 3 1589 Processing: 271 926 353.0 852 2426 Waiting: 271 913 347.2 841 2269 Total: 274 950 384.2 862 3225 Percentage of the requests served within a certain time (ms) 50% 862 66% 1034 75% 1193 80% 1296 90% 1496 95% 1650 98% 1846 99% 2048 100% 3225 (longest request) //-------------------------------------- // before the change //-------------------------------------- This is ApacheBench, Version 2.3 <$Revision: 655654 $> Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Licensed to The Apache Software Foundation, http://www.apache.org/ Benchmarking xxx.xxx.xxx.xxx (be patient) Completed 1000 requests Completed 2000 requests Completed 3000 requests Completed 4000 requests Completed 5000 requests Completed 6000 requests Completed 7000 requests Completed 8000 requests Completed 9000 requests Completed 10000 requests Finished 10000 requests Server Software: ATS/5.2.0 Server Hostname: 172.21.70.29 Server Port: 8080 Document Path: / Document Length: 1180 bytes Concurrency Level: 100 Time taken for tests: 126.997 seconds Complete requests: 10000 Failed requests: 0 Write errors: 0 Non-2xx responses: 10000 Total transferred: 13680000 bytes HTML transferred: 11800000 bytes Requests per second: 78.74 [#/sec] (mean) Time per request: 1269.966 [ms] (mean) Time per request: 12.700 [ms] (mean, across all concurrent requests) Transfer rate: 105.19 [Kbytes/sec] received Connection Times (ms) min mean[+/-sd] median max Connect: 2 36 186.9 3 1600 Processing: 498 1220 310.6 1229 2242 Waiting: 498 1212 307.3 1223 2107 Total: 501 1256 356.8 1254 3238 Percentage of the requests served within a certain time (ms) 50% 1254 66% 1408 75% 1492 80% 1540 90% 1675 95% 1799 98% 2132 99% 2312 100% 3238 (longest request) > ProxyAllocator improvements > --------------------------- > > Key: TS-3178 > URL: https://issues.apache.org/jira/browse/TS-3178 > Project: Traffic Server > Issue Type: Improvement > Components: Core > Reporter: Brian Geffon > Assignee: Cynthia Gu > Attachments: patch.diff > > > Currently when a ProxyAllocator (Thread Local) has more than a > configurable number of elements it will return them one-by-one to a > ClassAllocator (Global Freelist). Returning every item in this fashion is > inefficient as we'll likely need more items in the future. Therefore we > should maintain a low watermark (a minimum number) of items that should be in > a ProxyAllocator at any one time. When the number of elements reaches high > watermark, the free up is triggers to keep it below the low > watermark. Additionally, the free should be a block free instead of > one-by-one as we can reduce several hundred compare-and-swap operations to a > single CAS -- This message was sent by Atlassian JIRA (v6.3.4#6332)