You are viewing a plain text version of this content. The canonical link for it is here.
Posted to log4j-dev@logging.apache.org by "John Cairns (JIRA)" <ji...@apache.org> on 2016/07/12 20:01:20 UTC

[jira] [Commented] (LOG4J2-1430) Add optional support for Conversant DisruptorBlockingQueue in AsyncAppender

    [ https://issues.apache.org/jira/browse/LOG4J2-1430?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15373594#comment-15373594 ] 

John Cairns commented on LOG4J2-1430:
-------------------------------------

Here is the actual data I collected:

Intel(R) Xeon(R) CPU E5-2680 v3 @ 2.50GHz
24 cores - hyperthreading disabled

2 thread:
o.a.l.l.p.j.AsyncAppenderLog4j2Benchmark.throughputSimple    perf5AsyncApndDsrptrNoLoc-noOpAppender.xml  thrpt       10  1696620.726 ± 650776.577  ops/s
o.a.l.l.p.j.AsyncAppenderLog4j2Benchmark.throughputSimple     perf5AsyncApndMpscQNoLoc-noOpAppender.xml  thrpt       10  1857956.303 ± 229077.731  ops/s

3 thread:
o.a.l.l.p.j.AsyncAppenderLog4j2Benchmark.throughputSimple    perf5AsyncApndDsrptrNoLoc-noOpAppender.xml  thrpt       10  2617984.622 ±  13343.976  ops/s
o.a.l.l.p.j.AsyncAppenderLog4j2Benchmark.throughputSimple     perf5AsyncApndMpscQNoLoc-noOpAppender.xml  thrpt       10  2791841.273 ± 384054.383  ops/s

4 thread:
o.a.l.l.p.j.AsyncAppenderLog4j2Benchmark.throughputSimple    perf5AsyncApndDsrptrNoLoc-noOpAppender.xml  thrpt       10  3049289.872 ± 84247.960  ops/s
o.a.l.l.p.j.AsyncAppenderLog4j2Benchmark.throughputSimple     perf5AsyncApndMpscQNoLoc-noOpAppender.xml  thrpt       10  2552907.350 ± 72146.621  ops/s

5 thread:
o.a.l.l.p.j.AsyncAppenderLog4j2Benchmark.throughputSimple    perf5AsyncApndDsrptrNoLoc-noOpAppender.xml  thrpt       10  3027603.165 ± 31798.646  ops/s
o.a.l.l.p.j.AsyncAppenderLog4j2Benchmark.throughputSimple     perf5AsyncApndMpscQNoLoc-noOpAppender.xml  thrpt       10  2770962.194 ± 65659.289  ops/s

6 thread:
o.a.l.l.p.j.AsyncAppenderLog4j2Benchmark.throughputSimple    perf5AsyncApndDsrptrNoLoc-noOpAppender.xml  thrpt       10  2963524.783 ± 48958.375  ops/s
o.a.l.l.p.j.AsyncAppenderLog4j2Benchmark.throughputSimple     perf5AsyncApndMpscQNoLoc-noOpAppender.xml  thrpt       10  2741728.798 ± 43767.165  ops/s


7 thread:
o.a.l.l.p.j.AsyncAppenderLog4j2Benchmark.throughputSimple    perf5AsyncApndDsrptrNoLoc-noOpAppender.xml  thrpt       10  2226923.278 ± 67272.401  ops/s
o.a.l.l.p.j.AsyncAppenderLog4j2Benchmark.throughputSimple     perf5AsyncApndMpscQNoLoc-noOpAppender.xml  thrpt       10  1815899.328 ± 91079.403  ops/s

8 thread:
o.a.l.l.p.j.AsyncAppenderLog4j2Benchmark.throughputSimple    perf5AsyncApndDsrptrNoLoc-noOpAppender.xml  thrpt       10  2498785.188 ± 54002.525  ops/s
o.a.l.l.p.j.AsyncAppenderLog4j2Benchmark.throughputSimple     perf5AsyncApndMpscQNoLoc-noOpAppender.xml  thrpt       10  2407604.284 ± 79145.961  ops/s

9 thread:
o.a.l.l.p.j.AsyncAppenderLog4j2Benchmark.throughputSimple    perf5AsyncApndDsrptrNoLoc-noOpAppender.xml  thrpt       10  2182057.870 ± 175238.533  ops/s
o.a.l.l.p.j.AsyncAppenderLog4j2Benchmark.throughputSimple     perf5AsyncApndMpscQNoLoc-noOpAppender.xml  thrpt       10  2614756.139 ±  15393.854  ops/s

10 thread:
o.a.l.l.p.j.AsyncAppenderLog4j2Benchmark.throughputSimple    perf5AsyncApndDsrptrNoLoc-noOpAppender.xml  thrpt       10  2174825.507 ± 22335.915  ops/s
o.a.l.l.p.j.AsyncAppenderLog4j2Benchmark.throughputSimple     perf5AsyncApndMpscQNoLoc-noOpAppender.xml  thrpt       10  2882521.436 ± 11394.649  ops/s

15 thread:
o.a.l.l.p.j.AsyncAppenderLog4j2Benchmark.throughputSimple    perf5AsyncApndDsrptrNoLoc-noOpAppender.xml  thrpt       10  2181973.945 ±  29673.652  ops/s
o.a.l.l.p.j.AsyncAppenderLog4j2Benchmark.throughputSimple     perf5AsyncApndMpscQNoLoc-noOpAppender.xml  thrpt       10  2739778.681 ± 130812.015  ops/s

20 thread:
o.a.l.l.p.j.AsyncAppenderLog4j2Benchmark.throughputSimple    perf5AsyncApndDsrptrNoLoc-noOpAppender.xml  thrpt       10  1990073.042 ± 370165.515  ops/s
o.a.l.l.p.j.AsyncAppenderLog4j2Benchmark.throughputSimple     perf5AsyncApndMpscQNoLoc-noOpAppender.xml  thrpt       10  2954562.222 ±  13491.607  ops/s

25 thread:
o.a.l.l.p.j.AsyncAppenderLog4j2Benchmark.throughputSimple    perf5AsyncApndDsrptrNoLoc-noOpAppender.xml  thrpt       10  1606942.759 ±  19518.832  ops/s
o.a.l.l.p.j.AsyncAppenderLog4j2Benchmark.throughputSimple     perf5AsyncApndMpscQNoLoc-noOpAppender.xml  thrpt       10  2769796.044 ± 623809.181  ops/s


> Add optional support for Conversant DisruptorBlockingQueue in AsyncAppender
> ---------------------------------------------------------------------------
>
>                 Key: LOG4J2-1430
>                 URL: https://issues.apache.org/jira/browse/LOG4J2-1430
>             Project: Log4j 2
>          Issue Type: New Feature
>          Components: Appenders
>    Affects Versions: 2.6.1
>            Reporter: Matt Sicker
>            Assignee: Matt Sicker
>             Fix For: 2.7
>
>         Attachments: AsyncAppenderPerf01.txt, conversantvsjctoolsnumthreads.jpg, jctools-vs-conversant-service-time.png, log4j2-1430-jctools-tmp-patch.txt
>
>
> [Conversant Disruptor|https://github.com/conversant/disruptor] works as an implementation of BlockingQueue that is much faster than ArrayBlockingQueue. I did some benchmarks earlier and found it to be a bit faster:
> h3. AsyncAppender/ArrayBlockingQueue
> {code}
> Benchmark                                                       Mode  Samples        Score       Error  Units
> o.a.l.l.p.j.AsyncAppenderLog4j2Benchmark.throughput10Params    thrpt       20  1101267.173 ± 17583.204  ops/s
> o.a.l.l.p.j.AsyncAppenderLog4j2Benchmark.throughput11Params    thrpt       20  1128269.255 ± 12188.910  ops/s
> o.a.l.l.p.j.AsyncAppenderLog4j2Benchmark.throughput1Param      thrpt       20  1525470.805 ± 56515.933  ops/s
> o.a.l.l.p.j.AsyncAppenderLog4j2Benchmark.throughput2Params     thrpt       20  1789434.196 ± 42733.475  ops/s
> o.a.l.l.p.j.AsyncAppenderLog4j2Benchmark.throughput3Params     thrpt       20  1803276.278 ± 34938.176  ops/s
> o.a.l.l.p.j.AsyncAppenderLog4j2Benchmark.throughput4Params     thrpt       20  1468550.776 ± 26402.286  ops/s
> o.a.l.l.p.j.AsyncAppenderLog4j2Benchmark.throughput5Params     thrpt       20  1322304.349 ± 22417.997  ops/s
> o.a.l.l.p.j.AsyncAppenderLog4j2Benchmark.throughput6Params     thrpt       20  1179756.489 ± 16502.276  ops/s
> o.a.l.l.p.j.AsyncAppenderLog4j2Benchmark.throughput7Params     thrpt       20  1324660.677 ± 18893.944  ops/s
> o.a.l.l.p.j.AsyncAppenderLog4j2Benchmark.throughput8Params     thrpt       20  1309365.962 ± 19602.489  ops/s
> o.a.l.l.p.j.AsyncAppenderLog4j2Benchmark.throughput9Params     thrpt       20  1422144.180 ± 20815.042  ops/s
> o.a.l.l.p.j.AsyncAppenderLog4j2Benchmark.throughputSimple      thrpt       20  1247862.372 ± 18300.764  ops/s
> {code}
> h3. AsyncAppender/DisruptorBlockingQueue
> {code}
> Benchmark                                                       Mode  Samples        Score        Error  Units
> o.a.l.l.p.j.AsyncAppenderLog4j2Benchmark.throughput10Params    thrpt       20  3704735.586 ±  59766.253  ops/s
> o.a.l.l.p.j.AsyncAppenderLog4j2Benchmark.throughput11Params    thrpt       20  3622175.410 ±  31975.353  ops/s
> o.a.l.l.p.j.AsyncAppenderLog4j2Benchmark.throughput1Param      thrpt       20  6862480.428 ± 121473.276  ops/s
> o.a.l.l.p.j.AsyncAppenderLog4j2Benchmark.throughput2Params     thrpt       20  6193288.988 ±  93545.144  ops/s
> o.a.l.l.p.j.AsyncAppenderLog4j2Benchmark.throughput3Params     thrpt       20  5715621.712 ± 131878.581  ops/s
> o.a.l.l.p.j.AsyncAppenderLog4j2Benchmark.throughput4Params     thrpt       20  5745187.005 ± 213854.016  ops/s
> o.a.l.l.p.j.AsyncAppenderLog4j2Benchmark.throughput5Params     thrpt       20  5307137.396 ±  88135.709  ops/s
> o.a.l.l.p.j.AsyncAppenderLog4j2Benchmark.throughput6Params     thrpt       20  4953015.419 ±  72100.403  ops/s
> o.a.l.l.p.j.AsyncAppenderLog4j2Benchmark.throughput7Params     thrpt       20  4833836.418 ±  52919.314  ops/s
> o.a.l.l.p.j.AsyncAppenderLog4j2Benchmark.throughput8Params     thrpt       20  4353791.507 ±  79047.812  ops/s
> o.a.l.l.p.j.AsyncAppenderLog4j2Benchmark.throughput9Params     thrpt       20  4136761.624 ±  67804.253  ops/s
> o.a.l.l.p.j.AsyncAppenderLog4j2Benchmark.throughputSimple      thrpt       20  6719456.722 ± 187433.301  ops/s
> {code}
> h3. AsyncLogger
> {code}
> Benchmark                                                Mode  Samples         Score        Error  Units
> o.a.l.l.p.j.AsyncLoggersBenchmark.throughput10Params    thrpt       20   5075883.371 ± 180465.316  ops/s
> o.a.l.l.p.j.AsyncLoggersBenchmark.throughput11Params    thrpt       20   4867362.030 ± 193909.465  ops/s
> o.a.l.l.p.j.AsyncLoggersBenchmark.throughput1Param      thrpt       20  10294733.024 ± 226536.965  ops/s
> o.a.l.l.p.j.AsyncLoggersBenchmark.throughput2Params     thrpt       20   9021650.667 ± 351102.255  ops/s
> o.a.l.l.p.j.AsyncLoggersBenchmark.throughput3Params     thrpt       20   8079337.905 ± 115824.975  ops/s
> o.a.l.l.p.j.AsyncLoggersBenchmark.throughput4Params     thrpt       20   7347356.788 ±  66598.738  ops/s
> o.a.l.l.p.j.AsyncLoggersBenchmark.throughput5Params     thrpt       20   6930636.174 ± 150072.908  ops/s
> o.a.l.l.p.j.AsyncLoggersBenchmark.throughput6Params     thrpt       20   6309567.300 ± 293709.787  ops/s
> o.a.l.l.p.j.AsyncLoggersBenchmark.throughput7Params     thrpt       20   6051997.196 ± 268405.087  ops/s
> o.a.l.l.p.j.AsyncLoggersBenchmark.throughput8Params     thrpt       20   5273376.623 ±  99168.461  ops/s
> o.a.l.l.p.j.AsyncLoggersBenchmark.throughput9Params     thrpt       20   5091137.594 ± 150617.444  ops/s
> o.a.l.l.p.j.AsyncLoggersBenchmark.throughputSimple      thrpt       20  11136623.731 ± 400350.272  ops/s
> {code}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

---------------------------------------------------------------------
To unsubscribe, e-mail: log4j-dev-unsubscribe@logging.apache.org
For additional commands, e-mail: log4j-dev-help@logging.apache.org