I found a comment somewhere (probably an old comment) that asked why Log4j
2 even exists when you could just use JUL. I feel like maybe we should make
a JSR/JEP/whatever to deprecate JUL entirely.

On 12 February 2017 at 08:54, Remko Popma <remko.po...@gmail.com> wrote:

> #FriendsDontLetFriendsUseJavaUtilLogging
>
> On Sun, Feb 12, 2017 at 11:41 PM, Remko Popma <remko.po...@gmail.com>
> wrote:
>
>> But I agree it is interesting to see that a simple (RAF)FileAppender will
>> outperform async logging if the sustained logging rate is faster than the
>> appender can handle for long enough to fill up the queue. I've heard people
>> in the high performance computing world mention this but I hadn't seen
>> actual numbers until now.
>>
>> It is good to gain an intuition on these things. Async Loggers (with LMAX
>> Disruptor) performance is worse than a plain File but not terrible either.
>> Interesting how LogbackAsyncFile seems to suffer more than
>> log4j2AsyncAppender.
>>
>> And yes, JUL is so bad it is not funny any more. We did document that
>> <https://logging.apache.org/log4j/2.x/performance.html#fileLoggingComparison>
>> but perhaps we need to evangelize it more...
>>
>>
>> On Sun, Feb 12, 2017 at 4:59 PM, Remko Popma <remko.po...@gmail.com>
>> wrote:
>>
>>> The queue is bigger but still fills up quickly because all the
>>> benchmarks do is add events as quickly as possible and the FileAppender
>>> can't keep up with that rate.
>>>
>>> Sent from my iPhone
>>>
>>> On Feb 12, 2017, at 16:19, Apache <ralph.go...@dslextreme.com> wrote:
>>>
>>> I added the tests so you guys could run them and take a look. I have no
>>> problem with the changes being reverted.
>>>
>>> As I think I said, I expected most of the async appenders to back up. I
>>> expected them to be a bit slower, but I didn’t expect them to be as slow as
>>> they are when the queue is full. I also don’t understand why AsyncLogger is
>>> slower as it should have a large ring buffer if I understand correctly.
>>>
>>> Ralph
>>>
>>> On Feb 11, 2017, at 4:36 PM, Remko Popma <remko.po...@gmail.com> wrote:
>>>
>>> I don't think it is a good idea to mix async tests with sync tests.
>>>
>>> We already have separate benchmarks for the various ways to log
>>> asynchronously, if you want to compare them just run those also.
>>>
>>> JMH makes it super easy to build benchmarks but we have to be very
>>> careful that the test really measures what we want to measure.
>>>
>>> Asynchronous logging has two "states", queue full and space available.
>>> Do we want to measure the queue full state or the space available state (or
>>> the transition between the two)?
>>>
>>> With a normal FileAppender JMH will iterate so fast that the queue
>>> immediately fills up. This will likely happen during the warmup iterations
>>> (no guarantee of course).
>>>
>>> What actually happens in that state? We used to block until space
>>> becomes available in the queue. What we do now depends on the configured
>>> AsyncQueueFullPolicy. Because blocking caused deadlocks in some scenarios,
>>> our current default is to bypass the queue and log to the FileAppender
>>> directly. I expect that to be slower than the simple FileAppender because
>>> of the additional lock contention on the tail of the queue during the
>>> attempted thread handover.
>>>
>>> The "queue full" state is not the normal logging state for an
>>> application. If we want to measure this we should move these tests to a
>>> separate benchmark that is clearly marked "QueueFullAsyncBenchmark" or
>>> something like that.
>>> Otherwise people reading these benchmark results will misinterpret them
>>> and get confused.
>>>
>>> The existing Async benchmarks ensure they measure the "queue space
>>> available" state.
>>>
>>> Remko
>>>
>>> Sent from my iPhone
>>>
>>> On Feb 12, 2017, at 4:37, Apache <ralph.go...@dslextreme.com> wrote:
>>>
>>> Just for fun I decided to add some more tests to the file appender
>>> benchmark. I’ve checked them in. Please review them to see if everything is
>>> configured so the tests make sense.
>>>
>>> Note that I would expect the async appenders to reduce to the speed of
>>> the file appender, since once the queue fills up that is what they are
>>> waiting on. But I didn’t set a buffer size for the disruptor or async
>>> logger tests so I would have expected those to be quite a bit faster than
>>> the regular file test.
>>>
>>> The one thing that is definitely worth noting is how truly terrible the
>>> JUL file appender is. I have to assume that it must be doing an immediate
>>> flush on every write.
>>>
>>> This is on my MacBook Pro - what Ceki would call Fast CPU/Fast SSD
>>>
>>> Benchmark                                                  Mode  Samples
>>>     Score     Error   Units
>>> o.a.l.l.p.j.FileAppenderBenchmark.julFile                 thrpt
>>> 10    69.546 ±   2.635  ops/ms
>>> o.a.l.l.p.j.FileAppenderBenchmark.log4j1File              thrpt
>>> 10   783.006 ±  28.138  ops/ms
>>> o.a.l.l.p.j.FileAppenderBenchmark.log4j2AsyncAppender     thrpt
>>> 10   939.605 ±  38.655  ops/ms
>>> o.a.l.l.p.j.FileAppenderBenchmark.log4j2AsyncDisruptor    thrpt
>>> 10  1446.522 ±  45.485  ops/ms
>>> o.a.l.l.p.j.FileAppenderBenchmark.log4j2AsyncLogger       thrpt
>>> 10  1269.014 ±  27.236  ops/ms
>>> o.a.l.l.p.j.FileAppenderBenchmark.log4j2File              thrpt
>>> 10  1475.605 ±  74.675  ops/ms
>>> o.a.l.l.p.j.FileAppenderBenchmark.log4j2MMF               thrpt
>>> 10  2131.240 ± 114.184  ops/ms
>>> o.a.l.l.p.j.FileAppenderBenchmark.log4j2RAF               thrpt
>>> 10  1499.667 ±  39.668  ops/ms
>>> o.a.l.l.p.j.FileAppenderBenchmark.logbackAsyncFile        thrpt
>>> 10   326.969 ±   2.690  ops/ms
>>> o.a.l.l.p.j.FileAppenderBenchmark.logbackFile             thrpt
>>> 10   940.527 ±  34.090  ops/ms
>>>
>>> And this is on my old MacBook Pro - it uses a hard drive so isn’t very
>>> fast.
>>>
>>> Benchmark                                                  Mode  Samples
>>>     Score     Error   Units
>>> o.a.l.l.p.j.FileAppenderBenchmark.julFile                 thrpt
>>> 10    15.722 ±  15.557  ops/ms
>>> o.a.l.l.p.j.FileAppenderBenchmark.log4j1File              thrpt
>>> 10   530.668 ±  54.193  ops/ms
>>> o.a.l.l.p.j.FileAppenderBenchmark.log4j2AsyncAppender     thrpt
>>> 10   498.620 ± 178.693  ops/ms
>>> o.a.l.l.p.j.FileAppenderBenchmark.log4j2AsyncDisruptor    thrpt
>>> 10   454.541 ± 145.505  ops/ms
>>> o.a.l.l.p.j.FileAppenderBenchmark.log4j2AsyncLogger       thrpt
>>> 10   527.784 ± 150.269  ops/ms
>>> o.a.l.l.p.j.FileAppenderBenchmark.log4j2File              thrpt
>>> 10   587.605 ±  97.769  ops/ms
>>> o.a.l.l.p.j.FileAppenderBenchmark.log4j2MMF               thrpt
>>> 10  1966.092 ± 431.196  ops/ms
>>> o.a.l.l.p.j.FileAppenderBenchmark.log4j2RAF               thrpt
>>> 10   364.694 ±  34.602  ops/ms
>>> o.a.l.l.p.j.FileAppenderBenchmark.logbackAsyncFile        thrpt
>>> 10   258.220 ±   1.936  ops/ms
>>> o.a.l.l.p.j.FileAppenderBenchmark.logbackFile             thrpt
>>> 10   560.958 ±  36.982  ops/ms
>>>
>>> Ralph
>>>
>>> On Feb 9, 2017, at 1:39 PM, Matt Sicker <boa...@gmail.com> wrote:
>>>
>>> Also, there are some potential issues with logback-perf:
>>>
>>> * JMH is way out of date (1.11.3 versus 1.17.4)
>>> * Less warmup iterations than we do
>>>
>>> Anyways, results for 32 threads (8 core environment):
>>>
>>> Benchmark                           Mode  Cnt     Score    Error   Units
>>> FileAppenderBenchmark.log4j1File   thrpt   10   695.774 ±  9.567  ops/ms
>>> FileAppenderBenchmark.log4j2File   thrpt   10  1300.091 ± 17.579  ops/ms
>>> FileAppenderBenchmark.log4j2RAF    thrpt   10  1365.118 ± 17.656  ops/ms
>>> FileAppenderBenchmark.logbackFile  thrpt   10   766.294 ± 10.121  ops/ms
>>>
>>> On 9 February 2017 at 14:37, Matt Sicker <boa...@gmail.com> wrote:
>>>
>>>> That value does look messed up. I'll re-run the 32 thread tests. Also,
>>>> I'm not on the logback lists yet, so I'll sign up this afternoon.
>>>>
>>>> On 9 February 2017 at 14:35, Apache <ralph.go...@dslextreme.com> wrote:
>>>>
>>>>> What is up with that score for 32 threads?  That can’t possibly be
>>>>> correct.
>>>>>
>>>>> Ralph
>>>>>
>>>>> On Feb 9, 2017, at 12:45 PM, Matt Sicker <boa...@gmail.com> wrote:
>>>>>
>>>>> I ran the logback-perf repo on the same AWS instance. Here's the CSV
>>>>> data. It appears as soon as more than one thread comes into play, log4j2
>>>>> has better scores.
>>>>>
>>>>> "Benchmark","Mode","Threads","Samples","Score","Score Error
>>>>> (99.9%)","Unit"
>>>>> "ch.qos.logback.perf.FileAppenderBenchmark.log4j1File","thrp
>>>>> t",1,10,964.600470,279.139021,"ops/ms"
>>>>> "ch.qos.logback.perf.FileAppenderBenchmark.log4j2File","thrp
>>>>> t",1,10,1274.682156,6.179197,"ops/ms"
>>>>> "ch.qos.logback.perf.FileAppenderBenchmark.log4j2RAF","thrpt
>>>>> ",1,10,1257.026405,32.898682,"ops/ms"
>>>>> "ch.qos.logback.perf.FileAppenderBenchmark.logbackFile","thr
>>>>> pt",1,10,1363.683525,41.884725,"ops/ms"
>>>>> "Benchmark","Mode","Threads","Samples","Score","Score Error
>>>>> (99.9%)","Unit"
>>>>> "ch.qos.logback.perf.FileAppenderBenchmark.log4j1File","thrp
>>>>> t",2,10,687.304803,13.266922,"ops/ms"
>>>>> "ch.qos.logback.perf.FileAppenderBenchmark.log4j2File","thrp
>>>>> t",2,10,1386.596198,207.305249,"ops/ms"
>>>>> "ch.qos.logback.perf.FileAppenderBenchmark.log4j2RAF","thrpt
>>>>> ",2,10,1579.884762,24.098318,"ops/ms"
>>>>> "ch.qos.logback.perf.FileAppenderBenchmark.logbackFile","thr
>>>>> pt",2,10,953.138212,99.156775,"ops/ms"
>>>>> "Benchmark","Mode","Threads","Samples","Score","Score Error
>>>>> (99.9%)","Unit"
>>>>> "ch.qos.logback.perf.FileAppenderBenchmark.log4j1File","thrp
>>>>> t",4,10,670.442970,15.049614,"ops/ms"
>>>>> "ch.qos.logback.perf.FileAppenderBenchmark.log4j2File","thrp
>>>>> t",4,10,1218.543593,18.234077,"ops/ms"
>>>>> "ch.qos.logback.perf.FileAppenderBenchmark.log4j2RAF","thrpt
>>>>> ",4,10,1309.092881,31.547936,"ops/ms"
>>>>> "ch.qos.logback.perf.FileAppenderBenchmark.logbackFile","thr
>>>>> pt",4,10,845.168355,24.547390,"ops/ms"
>>>>> "Benchmark","Mode","Threads","Samples","Score","Score Error
>>>>> (99.9%)","Unit"
>>>>> "ch.qos.logback.perf.FileAppenderBenchmark.log4j1File","thrp
>>>>> t",8,10,689.805339,7.415023,"ops/ms"
>>>>> "ch.qos.logback.perf.FileAppenderBenchmark.log4j2File","thrp
>>>>> t",8,10,1196.396592,19.360776,"ops/ms"
>>>>> "ch.qos.logback.perf.FileAppenderBenchmark.log4j2RAF","thrpt
>>>>> ",8,10,1319.477318,10.601260,"ops/ms"
>>>>> "ch.qos.logback.perf.FileAppenderBenchmark.logbackFile","thr
>>>>> pt",8,10,816.608726,25.603234,"ops/ms"
>>>>> "Benchmark","Mode","Threads","Samples","Score","Score Error
>>>>> (99.9%)","Unit"
>>>>> "ch.qos.logback.perf.FileAppenderBenchmark.log4j1File","thrp
>>>>> t",16,10,687.623660,16.114008,"ops/ms"
>>>>> "ch.qos.logback.perf.FileAppenderBenchmark.log4j2File","thrp
>>>>> t",16,10,1203.649145,8.835115,"ops/ms"
>>>>> "ch.qos.logback.perf.FileAppenderBenchmark.log4j2RAF","thrpt
>>>>> ",16,10,1266.241778,7.564414,"ops/ms"
>>>>> "ch.qos.logback.perf.FileAppenderBenchmark.logbackFile","thr
>>>>> pt",16,10,789.507183,9.866592,"ops/ms"
>>>>> "Benchmark","Mode","Threads","Samples","Score","Score Error
>>>>> (99.9%)","Unit"
>>>>> "ch.qos.logback.perf.FileAppenderBenchmark.log4j1File","thrp
>>>>> t",32,10,690.252411,11.587858,"ops/ms"
>>>>> "ch.qos.logback.perf.FileAppenderBenchmark.log4j2File","thrp
>>>>> t",32,10,1514185.478492,126804.168771,"ops/ms"
>>>>> "ch.qos.logback.perf.FileAppenderBenchmark.log4j2RAF","thrpt
>>>>> ",32,10,1264.049209,28.309088,"ops/ms"
>>>>> "ch.qos.logback.perf.FileAppenderBenchmark.logbackFile","thr
>>>>> pt",32,10,754.828687,14.865909,"ops/ms"
>>>>> "Benchmark","Mode","Threads","Samples","Score","Score Error
>>>>> (99.9%)","Unit"
>>>>> "ch.qos.logback.perf.FileAppenderBenchmark.log4j1File","thrp
>>>>> t",64,10,670.498518,11.147198,"ops/ms"
>>>>> "ch.qos.logback.perf.FileAppenderBenchmark.log4j2File","thrp
>>>>> t",64,10,1293.301940,22.687086,"ops/ms"
>>>>> "ch.qos.logback.perf.FileAppenderBenchmark.log4j2RAF","thrpt
>>>>> ",64,10,1380.527892,14.907542,"ops/ms"
>>>>> "ch.qos.logback.perf.FileAppenderBenchmark.logbackFile","thr
>>>>> pt",64,10,750.528159,11.356281,"ops/ms"
>>>>>
>>>>> On 9 February 2017 at 13:02, Apache <ralph.go...@dslextreme.com>
>>>>> wrote:
>>>>>
>>>>>> You might try running Ceki’s benchmark project on AWS and publish
>>>>>> those numbers here. He also asked people to publish numbers on the 
>>>>>> Logback
>>>>>> user’s list so he can add them to his spreadsheet.
>>>>>>
>>>>>> From your numbers and the numbers I’ve been getting, it is clear to
>>>>>> me that the SSDs in Apple’s MacBook’s are pretty awesome. From the 
>>>>>> hardware
>>>>>> Remko is listing I’d say his machine is about as old as my other MacBook
>>>>>> except that he has an SSD that is slightly faster than my hard drive.
>>>>>>
>>>>>> Ralph
>>>>>>
>>>>>> On Feb 9, 2017, at 11:12 AM, Matt Sicker <boa...@gmail.com> wrote:
>>>>>>
>>>>>> Ran on an AWS instance (CentOS 7.2), cpuinfo says 8-core Intel(R)
>>>>>> Xeon(R) CPU E5-2666 v3 @ 2.90GHz, not super sure about all the params
>>>>>> involved in making the instance, but here's some data (same strangeness
>>>>>> with MMF):
>>>>>>
>>>>>> Benchmark                                         Mode  Samples
>>>>>> Score     Error   Units
>>>>>> o.a.l.l.p.j.FileAppenderBenchmark.julFile        thrpt       10
>>>>>>  86.867 ±   4.502  ops/ms
>>>>>> o.a.l.l.p.j.FileAppenderBenchmark.log4j1File     thrpt       10
>>>>>> 671.156 ±   7.099  ops/ms
>>>>>> o.a.l.l.p.j.FileAppenderBenchmark.log4j2File     thrpt       10
>>>>>>  1221.814 ±  22.130  ops/ms
>>>>>> o.a.l.l.p.j.FileAppenderBenchmark.log4j2MMF      thrpt       10
>>>>>>  1178.407 ± 960.141  ops/ms
>>>>>> o.a.l.l.p.j.FileAppenderBenchmark.log4j2RAF      thrpt       10
>>>>>>  1220.746 ±  34.421  ops/ms
>>>>>> o.a.l.l.p.j.FileAppenderBenchmark.logbackFile    thrpt       10
>>>>>> 898.122 ±   8.128  ops/ms
>>>>>>
>>>>>> On 9 February 2017 at 12:02, Matt Sicker <boa...@gmail.com> wrote:
>>>>>>
>>>>>>> Run on a MacBook Pro (Retina, 15-inch, Mid 2015) 2.5 GHz Intel Core
>>>>>>> i7. Can find out more hardware specs if needed. I also noticed that the
>>>>>>> memory mapped file starts out fast and slows down over time (somewhat 
>>>>>>> seen
>>>>>>> by the error value here).
>>>>>>>
>>>>>>> Benchmark                                         Mode  Samples
>>>>>>> Score     Error   Units
>>>>>>> o.a.l.l.p.j.FileAppenderBenchmark.julFile        thrpt       10
>>>>>>>  96.540 ±   7.875  ops/ms
>>>>>>> o.a.l.l.p.j.FileAppenderBenchmark.log4j1File     thrpt       10
>>>>>>> 766.286 ±  11.461  ops/ms
>>>>>>> o.a.l.l.p.j.FileAppenderBenchmark.log4j2File     thrpt       10
>>>>>>>  1787.620 ±  36.695  ops/ms
>>>>>>> o.a.l.l.p.j.FileAppenderBenchmark.log4j2MMF      thrpt       10
>>>>>>>  1506.588 ± 956.354  ops/ms
>>>>>>> o.a.l.l.p.j.FileAppenderBenchmark.log4j2RAF      thrpt       10
>>>>>>>  1934.966 ±  50.089  ops/ms
>>>>>>> o.a.l.l.p.j.FileAppenderBenchmark.logbackFile    thrpt       10
>>>>>>>  1285.066 ±  12.674  ops/ms
>>>>>>>
>>>>>>> On 9 February 2017 at 11:44, Remko Popma <remko.po...@gmail.com>
>>>>>>> wrote:
>>>>>>>
>>>>>>>> My results on Windows 10 64-bit laptop (java 1.8.0_51 64bit),
>>>>>>>> i5-3317u CPU @ 1.70GHz (dual core with hyperthreading for 4 virtual 
>>>>>>>> cores),
>>>>>>>> SSD hard disk:
>>>>>>>>
>>>>>>>> java -jar log4j-perf/target/benchmarks.jar
>>>>>>>> ".*FileAppenderBenchmark.*" -f 1 -wi 10 -i 20 -t 4 -tu ms
>>>>>>>>
>>>>>>>> # Run complete. Total time: 00:03:58
>>>>>>>>
>>>>>>>> Benchmark                                         Mode  Samples
>>>>>>>> Score     Error   Units
>>>>>>>> o.a.l.l.p.j.FileAppenderBenchmark.julFile        thrpt       20
>>>>>>>>  37.646 ±   0.876  ops/ms
>>>>>>>> o.a.l.l.p.j.FileAppenderBenchmark.log4j1File     thrpt       20
>>>>>>>> 405.305 ±   6.596  ops/ms
>>>>>>>> o.a.l.l.p.j.FileAppenderBenchmark.log4j2File     thrpt       20
>>>>>>>> 751.949 ±  16.055  ops/ms
>>>>>>>> o.a.l.l.p.j.FileAppenderBenchmark.log4j2MMF      thrpt       20
>>>>>>>>  1250.666 ± 168.757  ops/ms
>>>>>>>> o.a.l.l.p.j.FileAppenderBenchmark.log4j2RAF      thrpt       20
>>>>>>>> 728.743 ±  23.909  ops/ms
>>>>>>>> o.a.l.l.p.j.FileAppenderBenchmark.logbackFile    thrpt       20
>>>>>>>> 676.926 ±  19.518  ops/ms
>>>>>>>>
>>>>>>>> --------------------
>>>>>>>> Logback config without immediateFlush=false:
>>>>>>>>
>>>>>>>> # Run complete. Total time: 00:03:44
>>>>>>>>
>>>>>>>> Benchmark                                         Mode  Samples
>>>>>>>> Score     Error   Units
>>>>>>>> o.a.l.l.p.j.FileAppenderBenchmark.julFile        thrpt       20
>>>>>>>>  37.949 ±   1.220  ops/ms
>>>>>>>> o.a.l.l.p.j.FileAppenderBenchmark.log4j1File     thrpt       20
>>>>>>>> 404.042 ±   8.450  ops/ms
>>>>>>>> o.a.l.l.p.j.FileAppenderBenchmark.log4j2File     thrpt       20
>>>>>>>> 690.393 ± 115.537  ops/ms
>>>>>>>> o.a.l.l.p.j.FileAppenderBenchmark.log4j2MMF      thrpt       20
>>>>>>>>  1221.681 ±  82.205  ops/ms
>>>>>>>> o.a.l.l.p.j.FileAppenderBenchmark.log4j2RAF      thrpt       20
>>>>>>>> 823.059 ±  41.512  ops/ms
>>>>>>>> o.a.l.l.p.j.FileAppenderBenchmark.logbackFile    thrpt       20
>>>>>>>>  83.352 ±  11.911  ops/ms
>>>>>>>>
>>>>>>>>
>>>>>>>> On Fri, Feb 10, 2017 at 1:05 AM, Mikael Ståldal <
>>>>>>>> mikael.stal...@magine.com> wrote:
>>>>>>>>
>>>>>>>>> I guess that with a memory mapped file, you leave it to the OS to
>>>>>>>>> do the best it can, and you lose any direct control over how it is 
>>>>>>>>> actually
>>>>>>>>> done.
>>>>>>>>>
>>>>>>>>> On Thu, Feb 9, 2017 at 4:52 PM, Apache <ralph.go...@dslextreme.com
>>>>>>>>> > wrote:
>>>>>>>>>
>>>>>>>>>> On my Mac Pro with the slower external SSD I now got:
>>>>>>>>>>
>>>>>>>>>> Benchmark                                         Mode  Samples
>>>>>>>>>>   Score     Error   Units
>>>>>>>>>> o.a.l.l.p.j.FileAppenderBenchmark.julFile        thrpt       10
>>>>>>>>>>   73.739 ±   0.740  ops/ms
>>>>>>>>>> o.a.l.l.p.j.FileAppenderBenchmark.log4j1File     thrpt       10
>>>>>>>>>>   683.129 ±   9.407  ops/ms
>>>>>>>>>> o.a.l.l.p.j.FileAppenderBenchmark.log4j2File     thrpt       10
>>>>>>>>>>   991.293 ± 193.049  ops/ms
>>>>>>>>>> o.a.l.l.p.j.FileAppenderBenchmark.log4j2MMF      thrpt       10
>>>>>>>>>> 3072.250 ±  63.475  ops/ms
>>>>>>>>>> o.a.l.l.p.j.FileAppenderBenchmark.log4j2RAF      thrpt       10
>>>>>>>>>> 1056.256 ± 137.673  ops/ms
>>>>>>>>>> o.a.l.l.p.j.FileAppenderBenchmark.logbackFile    thrpt       10
>>>>>>>>>>   784.723 ± 153.226  ops/ms
>>>>>>>>>>
>>>>>>>>>> and on the same machine with the faster internal SSD I got:
>>>>>>>>>>
>>>>>>>>>> Benchmark                                         Mode  Samples
>>>>>>>>>>   Score     Error   Units
>>>>>>>>>> o.a.l.l.p.j.FileAppenderBenchmark.julFile        thrpt       10
>>>>>>>>>>   74.661 ±   0.232  ops/ms
>>>>>>>>>> o.a.l.l.p.j.FileAppenderBenchmark.log4j1File     thrpt       10
>>>>>>>>>>   647.041 ±   2.994  ops/ms
>>>>>>>>>> o.a.l.l.p.j.FileAppenderBenchmark.log4j2File     thrpt       10
>>>>>>>>>> 1333.887 ±  13.921  ops/ms
>>>>>>>>>> o.a.l.l.p.j.FileAppenderBenchmark.log4j2MMF      thrpt       10
>>>>>>>>>> 3025.726 ± 210.414  ops/ms
>>>>>>>>>> o.a.l.l.p.j.FileAppenderBenchmark.log4j2RAF      thrpt       10
>>>>>>>>>> 1433.620 ±  11.194  ops/ms
>>>>>>>>>> o.a.l.l.p.j.FileAppenderBenchmark.logbackFile    thrpt       10
>>>>>>>>>> 1026.319 ±  13.347  ops/ms
>>>>>>>>>>
>>>>>>>>>> I will continue to run this on a few other configurations. I
>>>>>>>>>> think I would also like to add the async appenders/loggers to this 
>>>>>>>>>> test so
>>>>>>>>>> that one can see all the various options.
>>>>>>>>>>
>>>>>>>>>> It is really quite interesting to me to see how the memory mapped
>>>>>>>>>> appender behaves so differently from one machine to another. I don’t 
>>>>>>>>>> know
>>>>>>>>>> under what circumstances I would recommend using it though.
>>>>>>>>>>
>>>>>>>>>> Ralph
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> On Feb 9, 2017, at 7:03 AM, Apache <ralph.go...@dslextreme.com>
>>>>>>>>>> wrote:
>>>>>>>>>>
>>>>>>>>>> After modifying the configuration the new results on my laptop
>>>>>>>>>> are:
>>>>>>>>>>
>>>>>>>>>> Benchmark                                         Mode  Samples
>>>>>>>>>>   Score      Error   Units
>>>>>>>>>> o.a.l.l.p.j.FileAppenderBenchmark.julFile        thrpt       10
>>>>>>>>>>   92.580 ±    3.698  ops/ms
>>>>>>>>>> o.a.l.l.p.j.FileAppenderBenchmark.log4j1File     thrpt       10
>>>>>>>>>>   828.707 ±   55.006  ops/ms
>>>>>>>>>> o.a.l.l.p.j.FileAppenderBenchmark.log4j2File     thrpt       10
>>>>>>>>>> 1647.230 ±  125.682  ops/ms
>>>>>>>>>> o.a.l.l.p.j.FileAppenderBenchmark.log4j2MMF      thrpt       10
>>>>>>>>>> 1465.002 ± 1284.943  ops/ms
>>>>>>>>>> o.a.l.l.p.j.FileAppenderBenchmark.log4j2RAF      thrpt       10
>>>>>>>>>> 1765.340 ±  149.707  ops/ms
>>>>>>>>>> o.a.l.l.p.j.FileAppenderBenchmark.logbackFile    thrpt       10
>>>>>>>>>> 1192.594 ±   57.777  ops/ms
>>>>>>>>>>
>>>>>>>>>> I will try the other machines later and post those results.
>>>>>>>>>>
>>>>>>>>>> Ralph
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> On Feb 9, 2017, at 5:22 AM, Apache <ralph.go...@dslextreme.com>
>>>>>>>>>> wrote:
>>>>>>>>>>
>>>>>>>>>> Ceki replied on twitter that the immediateFlush option is now a
>>>>>>>>>> parameter of the appended, not the encoder, so it looks like the 
>>>>>>>>>> confit
>>>>>>>>>> needs to be changed and the test rerun.
>>>>>>>>>>
>>>>>>>>>> Ralph
>>>>>>>>>>
>>>>>>>>>> On Feb 9, 2017, at 3:08 AM, Remko Popma <remko.po...@gmail.com>
>>>>>>>>>> wrote:
>>>>>>>>>>
>>>>>>>>>> FYI, The write and flush methods in BufferedOutputStream are also
>>>>>>>>>> synchronized, so we won't be able to do away with synchronization
>>>>>>>>>> completely.
>>>>>>>>>>
>>>>>>>>>> In OutputStreamManager we synchronize multiple methods but these
>>>>>>>>>> are nested calls. I thought reentrant synchronization had negligible
>>>>>>>>>> overhead but I haven't measured this myself.
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> Sent from my iPhone
>>>>>>>>>>
>>>>>>>>>> On Feb 9, 2017, at 2:31, Apache <ralph.go...@dslextreme.com>
>>>>>>>>>> wrote:
>>>>>>>>>>
>>>>>>>>>> I’m pretty sure the problem we have is that a) we are
>>>>>>>>>> synchronizing many methods and b) we are synchronizing more than 
>>>>>>>>>> just the
>>>>>>>>>> write. Unfortunately, I can’t figure out how to reduce that based on 
>>>>>>>>>> how
>>>>>>>>>> dispersed the code has gotten.
>>>>>>>>>>
>>>>>>>>>> Ralph
>>>>>>>>>>
>>>>>>>>>> On Feb 8, 2017, at 10:14 AM, Apache <ralph.go...@dslextreme.com>
>>>>>>>>>> wrote:
>>>>>>>>>>
>>>>>>>>>> I tried to modify FileManager to just use a BufferedOutputStream
>>>>>>>>>> but discovered I couldn’t as the layouts now require the ByteBuffer.
>>>>>>>>>>
>>>>>>>>>> Ralph
>>>>>>>>>>
>>>>>>>>>> On Feb 8, 2017, at 12:14 AM, Apache <ralph.go...@dslextreme.com>
>>>>>>>>>> wrote:
>>>>>>>>>>
>>>>>>>>>> The append method isn’t synchronized but the writeBytes method
>>>>>>>>>> acquires a lock. His code is actually a lot simpler than ours in 
>>>>>>>>>> that it
>>>>>>>>>> just uses a BufferedOutputStream and he only obtains the lock when 
>>>>>>>>>> he is
>>>>>>>>>> writing to it.
>>>>>>>>>>
>>>>>>>>>> Ralph
>>>>>>>>>>
>>>>>>>>>> On Feb 6, 2017, at 5:23 PM, Matt Sicker <boa...@gmail.com> wrote:
>>>>>>>>>>
>>>>>>>>>> I'm not sure if I'm looking in the right place, but a major
>>>>>>>>>> difference now between Logback's appenders and Log4j's is that 
>>>>>>>>>> Logback
>>>>>>>>>> isn't synchronized on the append method.
>>>>>>>>>>
>>>>>>>>>> On 6 February 2017 at 18:18, Matt Sicker <boa...@gmail.com>
>>>>>>>>>> wrote:
>>>>>>>>>>
>>>>>>>>>>> Is this something we can improve performance on by implementing
>>>>>>>>>>> a file appender based on FileChannel or AsynchronousFileChannel 
>>>>>>>>>>> instead of
>>>>>>>>>>> OutputStream?
>>>>>>>>>>>
>>>>>>>>>>> On 6 February 2017 at 17:50, Apache <ralph.go...@dslextreme.com>
>>>>>>>>>>> wrote:
>>>>>>>>>>>
>>>>>>>>>>>> Ceki has updated his numbers to include those reported on the
>>>>>>>>>>>> mailing list. https://docs.google.com/
>>>>>>>>>>>> spreadsheets/d/1cpb5D7qnyye4W0RTlHUnXedYK98catNZytYIu5D91m0/
>>>>>>>>>>>> edit#gid=0
>>>>>>>>>>>>
>>>>>>>>>>>> I haven’t run the tests with Logback 1.2-SNAPSHOT but my
>>>>>>>>>>>> numbers for my two MacBooks are at
>>>>>>>>>>>> https://docs.google.com/spreadsheets/d/1L67IhmUVvyLBWtC6iq0T
>>>>>>>>>>>> Mj-j0vrbKsUKWuZV0Nlqisk/edit?usp=sharing.
>>>>>>>>>>>>
>>>>>>>>>>>> Ralph
>>>>>>>>>>>>
>>>>>>>>>>>> On Feb 6, 2017, at 9:33 AM, Apache <ralph.go...@dslextreme.com>
>>>>>>>>>>>> wrote:
>>>>>>>>>>>>
>>>>>>>>>>>> Yes, that is still the standard approach most people use and is
>>>>>>>>>>>> the only way to provide a head-to-head comparison against the 
>>>>>>>>>>>> logging
>>>>>>>>>>>> frameworks.
>>>>>>>>>>>>
>>>>>>>>>>>> Ralph
>>>>>>>>>>>>
>>>>>>>>>>>> On Feb 6, 2017, at 8:02 AM, Matt Sicker <boa...@gmail.com>
>>>>>>>>>>>> wrote:
>>>>>>>>>>>>
>>>>>>>>>>>> This is all in a synchronous appender, right? Either way,
>>>>>>>>>>>> that's rather interesting.
>>>>>>>>>>>>
>>>>>>>>>>>> On 6 February 2017 at 07:54, Apache <ralph.go...@dslextreme.com
>>>>>>>>>>>> > wrote:
>>>>>>>>>>>>
>>>>>>>>>>>>> Someone posted numbers on the Logback user’s list that match
>>>>>>>>>>>>> mine.  It shows Logback 1.1.9 was pretty terrible, 1.1.10 is 
>>>>>>>>>>>>> somewhat
>>>>>>>>>>>>> better and 1.2-SNAPSHOT is on par or slightly better than Log4j 2.
>>>>>>>>>>>>>
>>>>>>>>>>>>> Ralph
>>>>>>>>>>>>>
>>>>>>>>>>>>> On Feb 5, 2017, at 3:25 PM, Matt Sicker <boa...@gmail.com>
>>>>>>>>>>>>> wrote:
>>>>>>>>>>>>>
>>>>>>>>>>>>> I think we need some comparisons on the log4j side: file
>>>>>>>>>>>>> appender with 256k buffer size, random access file appender with 
>>>>>>>>>>>>> 256k
>>>>>>>>>>>>> buffer size (which appears to be the default), and memory mapped 
>>>>>>>>>>>>> file
>>>>>>>>>>>>> appender. It'd be cool to see how these compose with async 
>>>>>>>>>>>>> logging enabled
>>>>>>>>>>>>> in both log4j and logback.
>>>>>>>>>>>>>
>>>>>>>>>>>>> On 5 February 2017 at 16:06, Apache <
>>>>>>>>>>>>> ralph.go...@dslextreme.com> wrote:
>>>>>>>>>>>>>
>>>>>>>>>>>>>> You should run the code at https://github.com/ceki/logbac
>>>>>>>>>>>>>> k-perf to compare your results to Ceki’s.  You also should
>>>>>>>>>>>>>> capture the cpubenchmark speed of your processor and get the 
>>>>>>>>>>>>>> speed of your
>>>>>>>>>>>>>> hard drive. I used Blackmagic speed test on my Mac. I am 
>>>>>>>>>>>>>> capturing my
>>>>>>>>>>>>>> results in a Google spreadsheet. I will post the like once I 
>>>>>>>>>>>>>> have it.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Ralph
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> On Feb 5, 2017, at 1:48 PM, Gary Gregory <
>>>>>>>>>>>>>> garydgreg...@gmail.com> wrote:
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> If you want, I can run tests on Windows once the build works
>>>>>>>>>>>>>> on Windows again.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Let me know what args/command line...
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Gary
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> On Feb 5, 2017 11:58 AM, "Apache" <ralph.go...@dslextreme.com>
>>>>>>>>>>>>>> wrote:
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> I guess my MacBook Pro must fit in the Slow CPU/Fast Hard
>>>>>>>>>>>>>>> drive category. With Logback 1.10 and -t 4  now get
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Benchmark                                         Mode
>>>>>>>>>>>>>>> Samples        Score       Error  Units
>>>>>>>>>>>>>>> o.a.l.l.p.j.FileAppenderBenchmark.julFile        thrpt
>>>>>>>>>>>>>>>   20    98187.673 ±  4935.712  ops/s
>>>>>>>>>>>>>>> o.a.l.l.p.j.FileAppenderBenchmark.log4j1File     thrpt
>>>>>>>>>>>>>>>   20   842374.496 ±  6762.712  ops/s
>>>>>>>>>>>>>>> o.a.l.l.p.j.FileAppenderBenchmark.log4j2File     thrpt
>>>>>>>>>>>>>>>   20  1853062.583 ± 67032.225  ops/s
>>>>>>>>>>>>>>> o.a.l.l.p.j.FileAppenderBenchmark.log4j2RAF      thrpt
>>>>>>>>>>>>>>>   20  2036011.226 ± 53208.281  ops/s
>>>>>>>>>>>>>>> o.a.l.l.p.j.FileAppenderBenchmark.logbackFile    thrpt
>>>>>>>>>>>>>>>   20   999667.438 ± 12074.003  ops/s
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> I’ll have to try this on one my VMs at work. We don’t run
>>>>>>>>>>>>>>> anything directly on bare metal any more.
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Ralph
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> On Feb 5, 2017, at 9:40 AM, Apache <
>>>>>>>>>>>>>>> ralph.go...@dslextreme.com> wrote:
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Ceki finally fixed some of the performance problems in the
>>>>>>>>>>>>>>> FileAppender. See https://logback.qos.ch/news.html and
>>>>>>>>>>>>>>> https://docs.google.com/spreadsheets/d/1cpb5D7qny
>>>>>>>>>>>>>>> ye4W0RTlHUnXedYK98catNZytYIu5D91m0/edit#gid=0. I suspect we
>>>>>>>>>>>>>>> have a few optimizations we can make.
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Ralph
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> --
>>>>>>>>>>>>> Matt Sicker <boa...@gmail.com>
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> --
>>>>>>>>>>>> Matt Sicker <boa...@gmail.com>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> --
>>>>>>>>>>> Matt Sicker <boa...@gmail.com>
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> --
>>>>>>>>>> Matt Sicker <boa...@gmail.com>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> --
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> *Mikael Ståldal*
>>>>>>>>> Senior software developer
>>>>>>>>>
>>>>>>>>> *Magine TV*
>>>>>>>>> mikael.stal...@magine.com
>>>>>>>>> Grev Turegatan 3  | 114 46 Stockholm, Sweden  |   www.magine.com
>>>>>>>>>
>>>>>>>>> Privileged and/or Confidential Information may be contained in
>>>>>>>>> this message. If you are not the addressee indicated in this message
>>>>>>>>> (or responsible for delivery of the message to such a person), you
>>>>>>>>> may not copy or deliver this message to anyone. In such case,
>>>>>>>>> you should destroy this message and kindly notify the sender by
>>>>>>>>> reply email.
>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> --
>>>>>>> Matt Sicker <boa...@gmail.com>
>>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> --
>>>>>> Matt Sicker <boa...@gmail.com>
>>>>>>
>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> Matt Sicker <boa...@gmail.com>
>>>>>
>>>>>
>>>>>
>>>>
>>>>
>>>> --
>>>> Matt Sicker <boa...@gmail.com>
>>>>
>>>
>>>
>>>
>>> --
>>> Matt Sicker <boa...@gmail.com>
>>>
>>>
>>>
>>>
>>
>


-- 
Matt Sicker <boa...@gmail.com>

Reply via email to