> If we would move the appender performance aside, am I right to conclude
> that the entire complex async. framework built atop Disruptor with all its
> whistles and bells is yielding a diminishing performance gain compared to a
> simple off the shelf blocking queue?

I haven't seen any data that would give me such an impression -- the file 
appender
itself is slower than the thread producing events, which appears to limit our 
throughput.
Even then, log4j2 does much better in my testing on a linux workstation with 
20+ producer
threads compared to logback.
Any time the queue is constantly full, performance will suffer (and this 
applies to standard
blocking queues as well as disruptor, however disruptor will fare worse when 
the queue
is full).
The results using a single thread are roughly reproducible on the non-async 
test, so I think
the problem is somewhere between the layout, and appender/manager.

Results running locally with no-op appender implementations:

1 thread:

Benchmark                                        Mode  Cnt     Score     Error  
 Units
AsyncWithFileAppenderBenchmark.log4j2AsyncFile  thrpt    4  3285.743 ± 427.963  
ops/ms
AsyncWithFileAppenderBenchmark.logbackFile      thrpt    4  2383.532 ± 136.034  
ops/ms

20 threads:

Benchmark                                        Mode  Cnt     Score     Error  
 Units
AsyncWithFileAppenderBenchmark.log4j2AsyncFile  thrpt    4  1177.746 ± 919.560  
ops/ms
AsyncWithFileAppenderBenchmark.logbackFile      thrpt    4   602.614 ±  47.485  
ops/ms

Reply via email to