Write performance issue with cfi_cmdset_0001.c

Josh Boyer jdub at us.ibm.com
Fri Oct 28 17:50:20 EDT 2005


On Fri, 2005-10-28 at 17:34 -0400, Nicolas Pitre wrote:
> On Fri, 28 Oct 2005, Josh Boyer wrote:
> 
> > I'll preface this with a disclaimer that we saw this on 2.4, however the
> > same general issue still seems to be present in MTD CVS.
> 
> For 2.6.x? Are you sure?

Apparently not.

> 
> In 2.6 there is no schedule_timeout() anywhere in the MTD code.

Yeah, nevermind.  I forgot that cfi_udelay no longer does that.  In our
kernel, cfi_udelay has:

if (current->need_resched)
	schedule_timeout(us);
else
	udelay(us);

Seems current CVS no longer does that in cfi_udelay.

> 
> > For a fix, we added a conditional reschedule in the loop that calls
> > do_write_buffer in the cfi_intelext_write_buffers function.  This made
> > write times of 256KiB go from 20-50 seconds to 1-6 seconds on average.
> 
> I still can't figure out the linear sequence of events that can lead to 
> the behavior you're seeing.
> 
> Mind re-doing your explanation in pseudocode-like form to help my poor 
> brain please?

I could if you'd like, but since I just realized the code doesn't have
the problem it's probably not worth it.  Sorry for the false alarm.

josh





More information about the linux-mtd mailing list