Write performance issue with cfi_cmdset_0001.c

Nicolas Pitre nico at cam.org
Fri Oct 28 17:34:38 EDT 2005

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?

> Basically, the writing thread was starving kupdated from making any
> progress and since kupdated was never charged with any time, the writing
> thread was always being marked as needing to be scheduled in the wake_up
> code.  This cause it to do a schedule_timeout(1) every buffer write (32
> bytes).  In 2.4, that's approximately 10 milliseconds of wait time
> because it's based on jiffies.

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

> 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?


More information about the linux-mtd mailing list