Thanks Remko for the valuable insight on queue size and ring buffer size in log4j and logback. I will make adjustments to the settings and run the test again.
On Tue, Oct 1, 2013 at 10:02 AM, Remko Popma <remko.po...@gmail.com> wrote: > Michael, > > I finally got around to looking at the test results you posted on Github ( > https://github.com/michaelzhou999/logging-profiling). > > Very extensive testing, I can tell you put a lot of work into it! > > I was initially a bit surprised by your Log4J2 finding that at ten threads > or more, synchronous logging with RandomAccessFile is even faster than > async logging with RandomAccessFile. But I believe this is because the > performance test logs 500,000 events, and the async logger ring buffer by > default only has 256*1024 slots. When the ring buffer is full the test can > only put new log events into the ring buffer when previous events have been > taken out, so essentially it will be running at the speed of the > RandomAccessFile appender with the additional overhead of going through the > ring buffer. > > To be honest I am not sure why this effect does not occur with 1 - 5 > threads. > > Also interesting to see a similar phenomenon with LogBack: > async appender is faster with 1 - 5 threads, but from 10 threads and up, > synchronous logging is faster than asynchrous logging. > > In this case, the LogBack default queue size is only 256, and it is a > fixed-size queue, so it is basically full all the way through the test. So > I think what we're seeing here is the throughput of the underlying appender > plus the contention of the multiple threads trying to add to the queue. > Again unsure about the difference between 10+ threads and 1 - 5 threads... > (I noticed you correctly set the "discardingThreshold" to zero for LogBack > so it won't start dropping trace/debug/info events when the queue is 80% > full. Well-spotted! Don't allow LogBack to cheat! :-) ) > > But to make the test fair the LogBack queue size should really be the same > as the Log4J2 async logger queue size (256*1024). > > Actually, I would recommend making the queues large enough to contain all > events. If you want to log 500,000 in the test, the queues should be at > least that size. Otherwise the async test will actually be measuring a > partially async and partially synchronous logging. > > One final note: are you aware that Log4J2 natively supports SLF4J-style > formatting? e.g. logger.info("hi {}", "world!"); > > Overall, I was happy to see that your results are similar to the results I > reported in the performance section of the Async Loggers page. > > Best regards, > Remko > > > > > On Sun, Sep 29, 2013 at 9:59 PM, Michael Zhou <michael.z...@gmail.com > >wrote: > > > Hi Remko, > > > > You can find the micro-benchmarking tool I wrote on Github: > > https://github.com/michaelzhou999/logging-profiling > > > > Drop me a message if you have any questions. Thanks > > > > Michael > > > > > > On Sat, Sep 28, 2013 at 9:34 PM, Remko Popma <remko.po...@gmail.com> > > wrote: > > > > > Michael, > > > > > > I'd be interested to see your benchmarking code and results. Is it > > > possible for you to share them? > > > > > > Remko > > > > > > Sent from my iPhone > > > > > > > On 2013/09/29, at 7:58, Michael Zhou <michael.z...@gmail.com> wrote: > > > > > > > > The micro-benchmark testing I wrote to compare Log4j 1 and 2 shows > > > > considerable performance gain in favor of Log4j 2. I have only one > > > request > > > > for your consideration: simplifying the way to get all loggers in the > > > > system and set/reset logging levels for certain loggers. This is > very > > > easy > > > > to do in Log4j 1, but thanks to the rewrite of API and implementation > > in > > > > Log4j 2, it becomes complicated. I did search and read previous > > > > discussions (in August and May) on this topic, and consider this a > much > > > > needed feature request. Thanks > > > > > > > > > > > > On Sat, Sep 28, 2013 at 2:44 AM, Ralph Goers < > > ralph.go...@dslextreme.com > > > >wrote: > > > > > > > >> I'd prefer to turn this around and ask a couple of questions: > > > >> > > > >> 1. Why do you need to know the "official release" date? Is > something > > > >> blocking you from using Log4j 2? > > > >> 2. Are you currently using the beta releases? Are you satisfied > that > > it > > > >> is production ready in your environment? > > > >> > > > >> The answers to the questions above are important for us as that is > the > > > >> basis for us labeling the release 2.0 GA vs 2.0 beta10 (or 2.0 RC1). > > > >> > > > >> Ralph > > > >> > > > >>> On Sep 27, 2013, at 8:07 AM, Jingdong Sun wrote: > > > >>> > > > >>> Can anyone tell me when the log4j 2 official release will be > > available? > > > >>> > > > >>> Thanks. > > > >>> Jingdong Sun > > > >>> InfoSphere Streams Development > > > >>> Phone 507 253-5958 (T/L 553-5958) > > > >>> jind...@us.ibm.com > > > >> > > > >> > > > >> > --------------------------------------------------------------------- > > > >> To unsubscribe, e-mail: log4j-user-unsubscr...@logging.apache.org > > > >> For additional commands, e-mail: log4j-user-h...@logging.apache.org > > > > > > > > > > > > -- > > > > Michael > > > > > > --------------------------------------------------------------------- > > > To unsubscribe, e-mail: log4j-user-unsubscr...@logging.apache.org > > > For additional commands, e-mail: log4j-user-h...@logging.apache.org > > > > > > > > > > > > -- > > Michael > > > -- Michael