All of lore.kernel.org
 help / color / mirror / Atom feed
From: Steven Rostedt <rostedt@goodmis.org>
To: Mike Galbraith <efault@gmx.de>
Cc: Chris Mason <chris.mason@fusionio.com>,
	"Chris L. Mason" <clmason@fusionio.com>,
	"linux-rt-users@vger.kernel.org" <linux-rt-users@vger.kernel.org>,
	LKML <linux-kernel@vger.kernel.org>,
	linux-fsdevel <linux-fsdevel@vger.kernel.org>,
	Thomas Gleixner <tglx@linutronix.de>
Subject: Re: 3.4.4-rt13: btrfs + xfstests 006 = BOOM..  and a bonus rt_mutex deadlock report for absolutely free!
Date: Mon, 16 Jul 2012 12:02:27 -0400	[thread overview]
Message-ID: <1342454547.5410.3.camel@gandalf.stny.rr.com> (raw)
In-Reply-To: <1342404140.7659.27.camel@marge.simpson.net>

On Mon, 2012-07-16 at 04:02 +0200, Mike Galbraith wrote:

> > Great, thanks!  I got stuck in bug land on Friday.  You mentioned
> > performance problems earlier on Saturday, did this improve performance?
> 
> Yeah, the read_trylock() seems to improve throughput.  That's not
> heavily tested, but it certainly looks like it does.  No idea why.

Ouch, you just turned the rt_read_lock() into a spin lock. If a higher
priority process preempted a lower priority process that holds the same
lock, it will deadlock.

I'm not sure why you would get a performance benefit from this, as the
mutex used is an adaptive one (failure to acquire the lock will only
sleep if preempted or if the owner is not running).

We should look at why this performs better (if it really does).

-- Steve

> 
> WRT performance, dbench isn't thrilled, but btrfs seems to work just
> fine for my routine usage, and spinning rust bucket is being all it can
> be.  I hope I don't have to care overly much about dbench's opinon.  It
> doesn't make happy multi-thread numbers with btrfs, but those numbers
> suddenly look great if you rebase relative to xfs -rt throughput :)
> 
> > One other question:
> > 
> > >  again:
> > > +#ifdef CONFIG_PREEMPT_RT_BASE
> > > +	while (atomic_read(&eb->blocking_readers))
> > > +		cpu_chill();
> > > +	while(!read_trylock(&eb->lock))
> > > +		cpu_chill();
> > > +	if (atomic_read(&eb->blocking_readers)) {
> > > +		read_unlock(&eb->lock);
> > > +		goto again;
> > > +	}
> > 
> > Why use read_trylock() in a loop instead of just trying to take the
> > lock?  Is this an RTism or are there other reasons?
> 
> First stab paranoia.  It worked, so I removed it.  It still worked but
> lost throughput, removed all my bits leaving only the lockdep bits, it
> still worked.
> 
> -Mike



  reply	other threads:[~2012-07-16 16:02 UTC|newest]

Thread overview: 39+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-07-12  5:47 3.4.4-rt13: btrfs + xfstests 006 = BOOM.. and a bonus rt_mutex deadlock report for absolutely free! Mike Galbraith
2012-07-12  8:44 ` Mike Galbraith
2012-07-12  9:53   ` Mike Galbraith
2012-07-12 11:43     ` Thomas Gleixner
2012-07-12 11:57       ` Mike Galbraith
2012-07-12 13:31         ` Thomas Gleixner
2012-07-12 13:37           ` Mike Galbraith
2012-07-12 13:43             ` Thomas Gleixner
2012-07-12 13:48               ` Mike Galbraith
2012-07-12 13:51                 ` Mike Galbraith
2012-07-13  6:31           ` Mike Galbraith
2012-07-13  9:52             ` Thomas Gleixner
2012-07-13 10:14               ` Mike Galbraith
2012-07-13 10:26                 ` Thomas Gleixner
2012-07-13 10:47                   ` Chris Mason
2012-07-13 12:50                     ` Mike Galbraith
2012-07-12 11:07 ` Thomas Gleixner
2012-07-12 17:09   ` Chris Mason
2012-07-13 10:04     ` Thomas Gleixner
2012-07-13 12:50 ` Chris Mason
2012-07-13 14:47   ` Thomas Gleixner
2012-07-14 10:14   ` Mike Galbraith
2012-07-15 17:56     ` Chris Mason
2012-07-16  2:02       ` Mike Galbraith
2012-07-16 16:02         ` Steven Rostedt [this message]
2012-07-16 16:26           ` Mike Galbraith
2012-07-16 16:35             ` Chris Mason
2012-07-16 16:36             ` Mike Galbraith
2012-07-16 17:03               ` Steven Rostedt
2012-07-17  4:18                 ` Mike Galbraith
2012-07-17  4:27                   ` Steven Rostedt
2012-07-17  4:34                     ` Steven Rostedt
2012-07-17  4:46                       ` Mike Galbraith
2012-07-17  4:44                     ` Mike Galbraith
2012-07-17 12:54                   ` Mike Galbraith
2012-07-16 10:55     ` Mike Galbraith
2012-07-16 15:43       ` Chris Mason
2012-07-16 16:16         ` Mike Galbraith
2012-07-14 13:38   ` Mike Galbraith

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1342454547.5410.3.camel@gandalf.stny.rr.com \
    --to=rostedt@goodmis.org \
    --cc=chris.mason@fusionio.com \
    --cc=clmason@fusionio.com \
    --cc=efault@gmx.de \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-rt-users@vger.kernel.org \
    --cc=tglx@linutronix.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.