Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 18 Feb 2002 12:32:31 -0800 (PST)
From:      Matthew Dillon <dillon@apollo.backplane.com>
To:        Bosko Milekic <bmilekic@unixdaemons.com>
Cc:        "David O'Brien" <obrien@FreeBSD.ORG>, current@FreeBSD.ORG
Subject:   Re: Patch to improve mutex collision performance
Message-ID:  <200202182032.g1IKWVS36193@apollo.backplane.com>
References:  <200202181912.g1IJCGK32122@apollo.backplane.com> <20020218114326.A98974@dragon.nuxi.com> <200202181951.g1IJpip33604@apollo.backplane.com> <20020218150355.A21615@unixdaemons.com>

next in thread | previous in thread | raw e-mail | index | archive | help

:  I've looked at it and I think it's OK. There are a few minor things I
:could think of, but they are only related to the context-borrowing
:interrupt stuff I'm working on in parallel (notably, when it goes in,
:I'll modify the "if ()" statement in there to add a check and only
:perform the lazy spin if we're not borrowing context).

    Yah, I saw the not-yet code just below it.  At worst we would simply
    not optimize for the borrowing case, or move the optimization to just
    below it (or move the interrupt borrowing code to above it, i.e. before
    we mess with the CONTESTED bit stuff, which may be better).

:  This only to say that I'm glad that you at least posted it for review,
:as it allowed me to make a quick note of this.
:  The only other issue has to do with you getting pre-empted by, say, an
:interrupt after dropping sched_lock and then, should the lock you're
:trying to get become contested while the handler is running, have
:relatively weak priority on it after you iret and continue iterating.
:However, the odds of this happening are not only weak but this small
:loss of priority already exists in the locking code anyway (think of
:when we're trying to get a lock and get pre-empted right after failing
:to get it but before grabbing sched_lock and putting ourselves to
:sleep). So, in effect, it's a non-issue.
:
:-- 
:Bosko Milekic

    The simple stuff I like to just commit... like instrumenting something
    like getuid() which makes no actual change to the way Giant operates in
    the system unless you play with the sysctl.  The more complex stuff
    I throw up as a notice of intent or to support test results.  The really
    complex stuff I get an actual review for.

    ---

    People like to bitch and moan about my commits but, frankly, there isn't
    much to really bitch and moan about if you actually look at the commits.
    None of this stuff is not rocket science.

    -current has been broken half a dozen times in the last month and not
    a single one of those breakages has been due to me, so people should bitch
    and moan and someone else.  I suppose I am just a convenient punching bag.

    (And, as a side note to the bozos on IRC that complained about my
    kern.giant.ucred commit I will note that I was the person who CREATED
    the instrumented giant code in the first place.  If code could be
    said to be owned by anyone that code could be said to be owned by me.
    That code exists precisely to allow incremental Giant pushdown
    commits to -current without blowing up other developers, which is
    precisely what I am doing).

					-Matt
					Matthew Dillon 
					<dillon@backplane.com>


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-current" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200202182032.g1IKWVS36193>