[U-Boot] [PATCH RFC] NAND: Improve read performance from Large Page NAND devices

Josh Gelinske
2010-01-18T15:16:21Z

I hadn't dug into it yet to find the polling behavior but like you said
with no idle the CPU. It was just different behavior from what I see
with the SD which is some CPU time spent waiting on I/O (maybe because
of the DMA vs polling).

I did find a few of simple optimizations that gained me ~1MBs increase
on NAND and SD as well.
- /proc/sys/vm/dirty_expire_centiseconds = 2
- /proc/sys/vm/dirty_background_ratio = 5
- Unchecked KConfig "Optimize for size" which was enabled by default.

Thanks for your feedback.

Appareo Systems, LLC
1810 NDSU Research Circle N
Fargo, ND 58102

JOSH GELINSKE
FIRMWARE ENGINEERING MANAGER

Appareo Systems, LLC
1810 NDSU Research Circle N
Fargo, ND 58102
P: (701) 356-2200 Ext 251
C: (701) 306-0899
F: (701) 356-3157

http://www.appareo.com
jgelinske at appareo.com

NOTICE: This message (including attachments) is covered by the Electronic Communication Privacy Act, 18 U.S.C. sections 2510-2521, is CONFIDENTIAL and may also be protected by ATTORNEY-CLIENT OR OTHER PRIVILEGE. If you believe that it has been sent to you in error, do not read it. If you are not the intended recipient, you are hereby notified that any retention, dissemination, distribution, or copying of this communication is strictly prohibited. Please reply to the sender that you have received the message in error and then delete it.

-----Original Message-----
From: Nick Thompson [mailto:nick.thompson at ge.com]
Sent: Monday, January 18, 2010 6:48 AM
To: Josh Gelinske
Cc: u-boot at lists.denx.de
Subject: Re: [U-Boot] [PATCH RFC] NAND: Improve read performance from
Large Page NAND devices

On 16/01/10 01:51, Josh Gelinske wrote:
>
> What kind of CPU usage are you seeing? I am throughput of ~1.9MBs for
writes
> on a Samsung K9WBG08U1M 4GB with 4K page but with high cpu usage.
>

I'm not sure what you are asking here. There is no idle loop to measure
so
CPU is running at 100%.

The code does poll the NAND device for data ready, but in my case the
NAND
loads its cache faster than the CPU can finish sorting out ECC checks
(despite ECC H/W assistance). The result is the CPU never actually on
the
NAND.

This patch (not yet formally submitted) removes this potential waiting
time
that was present - plus some redundant command sequences due to
incorrect
function levelling. Most of my performance gain comes from optimising
the
data transfer (to and) from the NAND - see
drivers/mtd/nand/davinci_nand.c
- which is already in the mainline.

Apologies if that doesn't answer your question.

Nick.