Guido, Make sure you test/develop with Git master (which should depend on the latest LMAX D 3.3.4)
Gary On Mon, Jan 25, 2016 at 2:50 PM, Guido Medina <[email protected]> wrote: > @Gary > > I will checkout log4j2 and try to build a version with JCtools as > dependency and run some benchmarks, plug-able? maybe is not worth the > effort as the user would have to somehow specify which implementation will > use, and changing the whole thing from LMAX to JCtools will require changes > on the documentation which isn't ideas TBH, let me first try and benchmark > and then we can discuss more. > > @Remko, > > Mpsc = Multiple Producer - Single Consumer > > MpscLinkedQueue is the unbounded version which isn't exactly the > counterpart of LMAX, in that case it would be MpscArrayQueue which is a > circular buffer (same as LMAX) with the lock free algorithm of Lamport, > JCTools is just one proper implementation I have found of *Lamport *which > as JCtools states it is used at RxJava, Netty and Akka > > I spelled Lamport wrongly in the subject my bad. > > To be honest I didn't research much, I had issues specifically with my > akka LMAX mailbox implementation, Java 8 and akka dispatchers which are > mostly fork-join executors. > > I found JCtools less confusing than LMAX and more a straight forward Java > Queue implementation, LMAX I have only heard good things about it but > unfortunately for my project in Akka, Java 8 and Debian 7, 8 wasn't working > as it should, maybe I need to research more. > > Regards, > > Guido. > > On Mon, Jan 25, 2016 at 10:19 PM, Remko Popma <[email protected]> > wrote: > >> Guido, >> >> Interesting. Can you provide more detail on the CPU problem you were >> seeing and the environment it happened in? >> Also interested to hear more about your research and why you concluded >> that MpscLinkedQueue is preferable to the LMAX Disruptor for >> inter-thread communication. >> >> Remko >> >> >> On Tue, Jan 26, 2016 at 7:03 AM, Gary Gregory <[email protected]> >> wrote: >> >>> Hi Guido, >>> >>> This is not on our radar AFAIK. >>> >>> Your best bet would be to create a patch that makes that part of the >>> code pluggable with LMAX vs. Lampart, and then add to the benchmark module >>> to show the difference. >>> >>> This is not a trivial task. >>> >>> What we could discuss though is whether it is worth it for Log4j itself >>> to make this pluggable, in which case you contribution would be very >>> helpful! >>> >>> Cheers, >>> Gary >>> On Jan 25, 2016 9:00 AM, "Guido Medina" <[email protected]> wrote: >>> >>>> I'm wondering if anyone would be willing to test the current LMAX >>>> implementation vs JCTools specifically using the following class: >>>> >>>> I currently use them with Akka mailboxes, I tried LMAX once but with >>>> some CPUs LMAX disruptor was behaving a bit weird which is why I prefer >>>> Lamport's implementations of circular buffers that are very well known and >>>> in use by Netty, Akka, etc. >>>> >>>> Or I could try and contribute by changing the LMAX for JCTools: >>>> >>>> JCtools-core dependency: >>>> >>>> <dependency> >>>> <groupId>org.jctools</groupId> >>>> <artifactId>jctools-core</artifactId> >>>> <version>1.1</version> >>>> </dependency> >>>> >>>> Specific class that would replace LMAX disruptor: >>>> https://github.com/JCTools/JCTools/blob/master/jctools-core/src/main/java/org/jctools/queues/MpscArrayQueue.java >>>> >>>> Best regards, >>>> >>>> Guido. >>>> >>> >> > -- E-Mail: [email protected] | [email protected] Java Persistence with Hibernate, Second Edition <http://www.manning.com/bauer3/> JUnit in Action, Second Edition <http://www.manning.com/tahchiev/> Spring Batch in Action <http://www.manning.com/templier/> Blog: http://garygregory.wordpress.com Home: http://garygregory.com/ Tweet! http://twitter.com/GaryGregory
