Uploaded image for project: 'Log4j 2'
  1. Log4j 2
  2. LOG4J2-1430

Add optional support for Conversant DisruptorBlockingQueue in AsyncAppender

    Details

    • Type: New Feature
    • Status: Resolved
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: 2.6.1
    • Fix Version/s: 2.7
    • Component/s: Appenders
    • Labels:
      None

      Description

      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:

      AsyncAppender/ArrayBlockingQueue

      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
      

      AsyncAppender/DisruptorBlockingQueue

      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
      

      AsyncLogger

      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
      

        Attachments

        1. AsyncAppenderPerf01.txt
          6 kB
          Matt Sicker
        2. AsyncLogBenchmarks.log
          21 kB
          John Cairns
        3. conversantvsjctoolsnumthreads.jpg
          47 kB
          John Cairns
        4. jctools-vs-conversant-service-time.png
          47 kB
          Anthony Maire
        5. log4j2-1430-jctools-tmp-patch.txt
          5 kB
          Anthony Maire
        6. log4jHaswell1cpu12core.jpg
          56 kB
          John Cairns
        7. log4jHaswell2cpu2core.jpg
          60 kB
          John Cairns
        8. log4jHaswell2cpu4core.jpg
          57 kB
          John Cairns
        9. log4jperfnumactl.log
          32 kB
          John Cairns
        10. log4jrafile.log
          6 kB
          John Cairns
        11. log4jthread2cpu2core.log
          62 kB
          John Cairns
        12. log4jthread2cpu4core.log
          65 kB
          John Cairns

          Activity

            People

            • Assignee:
              jvz Matt Sicker
              Reporter:
              jvz Matt Sicker
            • Votes:
              0 Vote for this issue
              Watchers:
              6 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: