Github user remkop commented on the issue: https://github.com/apache/logging-log4j2/pull/87 As promised, here are the throughput results on enterprise hardware. Hardware: total 64 cores (4x 16-core) Intel(R) Xeon(R) CPU E5-2697A v4 @ 2.60GHz Java Hotspot 64-bit server 1.8.0_112 Results look good: as soon as we introduce concurrency, the lock-free MMap appender starts outperforming the other file appenders. *1 thread* ``` {code} -sh-4.2$ java -jar benchmarks.jar ".*Log4j2AppenderThroughput.*" -wi 5 -f 1 -i 10 Benchmark (loggerType) (messageSizeBytes) Mode Samples Score Error Units o.a.l.l.p.j.Log4j2AppenderThroughputBenchmark.appender File 150 thrpt 10 1344494.961 ± 221110.545 ops/s o.a.l.l.p.j.Log4j2AppenderThroughputBenchmark.appender RAF 150 thrpt 10 1563396.748 ± 12497.136 ops/s o.a.l.l.p.j.Log4j2AppenderThroughputBenchmark.appender MMap 150 thrpt 10 1223215.440 ± 14661.487 ops/s o.a.l.l.p.j.Log4j2AppenderThroughputBenchmark.end2end File 150 thrpt 10 1008537.505 ± 9213.181 ops/s o.a.l.l.p.j.Log4j2AppenderThroughputBenchmark.end2end RAF 150 thrpt 10 998564.075 ± 12207.661 ops/s o.a.l.l.p.j.Log4j2AppenderThroughputBenchmark.end2end MMap 150 thrpt 10 785114.881 ± 8827.768 ops/s {code} ``` *4 threads* ``` {code} -sh-4.2$ java -jar benchmarks.jar ".*Log4j2AppenderThroughput.*" -wi 5 -f 1 -i 10 -t 4 Benchmark (loggerType) (messageSizeBytes) Mode Samples Score Error Units o.a.l.l.p.j.Log4j2AppenderThroughputBenchmark.appender File 150 thrpt 10 1678485.793 ± 260632.925 ops/s o.a.l.l.p.j.Log4j2AppenderThroughputBenchmark.appender RAF 150 thrpt 10 1412574.559 ± 447410.040 ops/s o.a.l.l.p.j.Log4j2AppenderThroughputBenchmark.appender MMap 150 thrpt 10 1386414.915 ± 333117.992 ops/s o.a.l.l.p.j.Log4j2AppenderThroughputBenchmark.end2end File 150 thrpt 10 959662.994 ± 333541.548 ops/s o.a.l.l.p.j.Log4j2AppenderThroughputBenchmark.end2end RAF 150 thrpt 10 929405.390 ± 66673.436 ops/s o.a.l.l.p.j.Log4j2AppenderThroughputBenchmark.end2end MMap 150 thrpt 10 1013681.438 ± 155916.949 ops/s {code} ``` *8 threads* ``` {code} -sh-4.2$ java -jar benchmarks.jar ".*Log4j2AppenderThroughput.*" -wi 5 -f 1 -i 10 -t 8 Benchmark (loggerType) (messageSizeBytes) Mode Samples Score Error Units o.a.l.l.p.j.Log4j2AppenderThroughputBenchmark.appender File 150 thrpt 10 1164538.492 ± 62482.965 ops/s o.a.l.l.p.j.Log4j2AppenderThroughputBenchmark.appender RAF 150 thrpt 10 1194865.200 ± 72251.118 ops/s o.a.l.l.p.j.Log4j2AppenderThroughputBenchmark.appender MMap 150 thrpt 10 1338960.644 ± 71104.991 ops/s o.a.l.l.p.j.Log4j2AppenderThroughputBenchmark.end2end File 150 thrpt 10 944670.900 ± 69190.255 ops/s o.a.l.l.p.j.Log4j2AppenderThroughputBenchmark.end2end RAF 150 thrpt 10 930248.735 ± 28523.086 ops/s o.a.l.l.p.j.Log4j2AppenderThroughputBenchmark.end2end MMap 150 thrpt 10 998676.286 ± 36327.805 ops/s {code} ``` *16 threads* ``` {code} -sh-4.2$ java -jar benchmarks.jar ".*Log4j2AppenderThroughput.*" -wi 5 -f 1 -i 10 -t 16 Benchmark (loggerType) (messageSizeBytes) Mode Samples Score Error Units o.a.l.l.p.j.Log4j2AppenderThroughputBenchmark.appender File 150 thrpt 10 1214786.965 ± 7217.940 ops/s o.a.l.l.p.j.Log4j2AppenderThroughputBenchmark.appender RAF 150 thrpt 10 1192036.036 ± 13696.830 ops/s o.a.l.l.p.j.Log4j2AppenderThroughputBenchmark.appender MMap 150 thrpt 10 1548961.297 ± 27141.206 ops/s o.a.l.l.p.j.Log4j2AppenderThroughputBenchmark.end2end File 150 thrpt 10 1003235.059 ± 10365.921 ops/s o.a.l.l.p.j.Log4j2AppenderThroughputBenchmark.end2end RAF 150 thrpt 10 994834.287 ± 9057.470 ops/s o.a.l.l.p.j.Log4j2AppenderThroughputBenchmark.end2end MMap 150 thrpt 10 1323043.186 ± 19960.127 ops/s {code} ``` *32 threads* ``` {code} -sh-4.2$ java -jar benchmarks.jar ".*Log4j2AppenderThroughput.*" -wi 5 -f 1 -i 10 -t 32 Benchmark (loggerType) (messageSizeBytes) Mode Samples Score Error Units o.a.l.l.p.j.Log4j2AppenderThroughputBenchmark.appender File 150 thrpt 10 1372729.015 ± 40762.524 ops/s o.a.l.l.p.j.Log4j2AppenderThroughputBenchmark.appender RAF 150 thrpt 10 1185351.707 ± 16992.542 ops/s o.a.l.l.p.j.Log4j2AppenderThroughputBenchmark.appender MMap 150 thrpt 10 1784377.615 ± 179359.793 ops/s o.a.l.l.p.j.Log4j2AppenderThroughputBenchmark.end2end File 150 thrpt 10 918029.971 ± 38434.750 ops/s o.a.l.l.p.j.Log4j2AppenderThroughputBenchmark.end2end RAF 150 thrpt 10 1122310.566 ± 152840.084 ops/s o.a.l.l.p.j.Log4j2AppenderThroughputBenchmark.end2end MMap 150 thrpt 10 1898762.678 ± 81312.274 ops/s {code} ``` *64 threads* ``` {code} -sh-4.2$ java -jar benchmarks.jar ".*Log4j2AppenderThroughput.*" -wi 5 -f 1 -i 10 -t 64 Benchmark (loggerType) (messageSizeBytes) Mode Samples Score Error Units o.a.l.l.p.j.Log4j2AppenderThroughputBenchmark.appender File 150 thrpt 10 1193371.846 ± 32893.485 ops/s o.a.l.l.p.j.Log4j2AppenderThroughputBenchmark.appender RAF 150 thrpt 10 1231136.529 ± 26895.411 ops/s o.a.l.l.p.j.Log4j2AppenderThroughputBenchmark.appender MMap 150 thrpt 10 1409277.639 ± 91900.204 ops/s o.a.l.l.p.j.Log4j2AppenderThroughputBenchmark.end2end File 150 thrpt 10 881261.726 ± 35023.552 ops/s o.a.l.l.p.j.Log4j2AppenderThroughputBenchmark.end2end RAF 150 thrpt 10 929691.738 ± 22616.873 ops/s o.a.l.l.p.j.Log4j2AppenderThroughputBenchmark.end2end MMap 150 thrpt 10 1216108.561 ± 41321.530 ops/s {code} ```
--- If your project is set up for it, you can reply to this email and have your reply appear on GitHub as well. If your project does not have this feature enabled and wishes so, or if the feature is enabled but not working, please contact infrastructure at infrastruct...@apache.org or file a JIRA ticket with INFRA. ---