Bug 64558 - Improve performances of ResultCollector
Summary: Improve performances of ResultCollector
Status: NEW
Alias: None
Product: JMeter
Classification: Unclassified
Component: Main (show other bugs)
Version: 5.3
Hardware: All All
: P2 enhancement (vote)
Target Milestone: JMETER_5.4
Assignee: JMeter issues mailing list
URL:
Keywords: PatchAvailable
Depends on:
Blocks:
 
Reported: 2020-06-24 14:44 UTC by UbikLoadPack support
Modified: 2020-07-01 08:23 UTC (History)
0 users



Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description UbikLoadPack support 2020-06-24 14:44:02 UTC
Hello Team,
We have noticed a major contention in JMeter that becomes a major problem at high scale.
The issue is related to the PrintWriter in ResultCollector.
In tests with high throughput (> 100 req/s), the lock taken by PrintWriter#println() will lead many threads to block waiting for the lock to be released (even with the underlying buffer).

We implemented a fix based on LMAX-Disruptor library:

    https://github.com/LMAX-Exchange/disruptor


You can review the current PR on our repository and give your feedback for the upcoming PR:

    https://github.com/ubikloadpack/jmeter/pull/61/files?w=1

You'll find in the PR and ODS document showing some results.
The best ones made with dev/test.jmx being :

BlockingWaitStrategy 	
Threads \ Ring buffer size 	0 	1024 	65536 	131072 	262144 	524288 	Max. gain
90 	131580918 	144970934 	161682916 	178337178 	N/A 	N/A 	35.53 %
500 	129404418 	8589281 	186455414 	183922157 	N/A 	N/A 	44.09 %
3000 	125778729 	23311727 	11658406 	25689004 	174138609 	174434147 	38.68 %

Please note it is critical to disable the Summariser during the test as it degrades throughput (we'll provide a future patch for this), using:

    -Jsummariser.name=
Comment 1 UbikLoadPack support 2020-06-24 15:55:51 UTC
See: 

https://github.com/apache/jmeter/pull/601/
Comment 2 UbikLoadPack support 2020-06-27 17:11:23 UTC
(In reply to UbikLoadPack support from comment #1)
> See: 
> 
> https://github.com/apache/jmeter/pull/601/

See:

https://github.com/apache/jmeter/pull/602/
Comment 3 UbikLoadPack support 2020-07-01 08:23:27 UTC
(In reply to UbikLoadPack support from comment #2)
> (In reply to UbikLoadPack support from comment #1)
> > See: 
> > 
> > https://github.com/apache/jmeter/pull/601/
> 
> See:
> 
> https://github.com/apache/jmeter/pull/602/

See:
https://github.com/apache/jmeter/pull/603/