logging-log4j-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Matt Sicker <boa...@gmail.com>
Subject Re: Are we using spin loops anywhere?
Date Sun, 18 Dec 2016 17:32:17 GMT
I see they're using spin locks in Conversant Disruptor: <
https://github.com/conversant/disruptor/blob/master/src/main/java/com/conversantmedia/util/concurrent/AbstractSpinningCondition.java>.
I'd imagine something similar is in JCTools and LMAX, so it would be useful
to request support for this upstream.

>From what I can tell, LinkedTransferQueue in JDK9 doesn't rely on spin
locks as it's using an interesting algorithm whose documentation is
literally half the source file. I see that they've updated it to use
VarHandles instead of Unsafe, though, so there's that, too.

On 18 December 2016 at 06:43, Remko Popma <remko.popma@gmail.com> wrote:

>
>
>
> Sent from my iPhone
> On 18 Dec 2016, at 13:05, Remko Popma <remko.popma@gmail.com> wrote:
>
> I don't think we use spin locks in production code anywhere.
>
> The latency test has a wait strategy interface and one of the
> implementations is spinning. I need to check the comments but not sure if I
> used that strategy for the latency tests for the garbage free performance
> page.
>
>
> I just noticed that Gil Tene authored JEP 285. He is also the author of
> the Pacer class used in our latency test (https://github.com/apache/
> logging-log4j2/blob/master/log4j-core/src/test/java/org/
> apache/logging/log4j/core/async/perftest/ResponseTimeTest.java)
>
> Our test checks the number of cores, and if sufficient, it uses the NoOpIdleStrategy
> (spin wait). The alternative is yielding the thread, but who knows when the
> thread gets scheduled again (and on which core - a different core means the
> cache is cold). For latency measurements of short duration, the hope is
> that a spinning wait introduces less noise.
>
>
>
> Sent from my iPhone
>
> On 18 Dec 2016, at 10:10, Matt Sicker <boards@gmail.com> wrote:
>
> I thought we were using it in AppenderControlArraySet for example, but it
> doesn't look like it really matches the idea. I've been reading through all
> the JEPs in JDK9 to see if there's anything else useful we haven't already
> marked in our epic <https://issues.apache.org/jira/browse/LOG4J2-1564>,
> and I found Thread.onSpinWait() <http://openjdk.java.net/jeps/285> which
> looked useful, but I'm not sure of anywhere we could use it.
>
> --
> Matt Sicker <boards@gmail.com>
>
>


-- 
Matt Sicker <boards@gmail.com>

Mime
View raw message