Re: [PATCH] md - 2 of 10 - Don't allow raid5 rebuild to swamp raid5 stripe cache

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Neil Brown <neilb@cse.unsw.edu.au> wrote:
>
> On Thursday January 15, akpm@osdl.org wrote:
> > NeilBrown <neilb@cse.unsw.edu.au> wrote:
> > >
> > > +	if (sh == NULL) {
> > > +		sh = get_active_stripe(conf, sector_nr, pd_idx, 0);
> > > +		/* make sure we don't swamp the stripe cache if someone else
> > > +		 * is trying to get access 
> > > +		 */
> > > +		yield();
> > > +	}
> > 
> > In 2.6, yield() has utterly awful behaviour when there are a lot of other
> > runnable tasks.
> > 
> > Have you tested this when the kernel is busy doing other stuff, like a
> > `make -j2' or a few busywait loops?  You might find that rebuild simply
> > stops.
> > 
> 
> No I haven't, and I'm not near my test box today, so it would be
> awkward. 

OK.  We had a yeild like that in ext3 for a while.  The CPU scheduler
changes killed it stone dead.  I ended up just making it a schedule(),
which is too weak and probably broke the transaction batching speedup :(

> No other patches are dependant on that one so you can just leave it
> out if you like.

OK.  It'll take a few days after Linus gets back from .au to get all this
stuff flushed out anyway.   I'll probably have >700 patches by then.

> I just want to wait until every other runnable process has had a
> turn.  Maybe cond_resched() would be better??  I try some things out.

There isn't an equivalent, really.  We could add one to the CPU scheduler.

With HZ=1000 you'll probably find that a brief schedule_timeout() is OK. 
blk_congestion_wait() probably does the wrong thing too.

-
To unsubscribe from this list: send the line "unsubscribe linux-raid" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux RAID Wiki]     [ATA RAID]     [Linux SCSI Target Infrastructure]     [Linux Block]     [Linux IDE]     [Linux SCSI]     [Linux Hams]     [Device Mapper]     [Device Mapper Cryptographics]     [Kernel]     [Linux Admin]     [Linux Net]     [GFS]     [RPM]     [git]     [Yosemite Forum]


  Powered by Linux