Re: ubi/ubifs performance comparison on two NAND devices

Richard Weinberger
2019-02-27T22:13:16Z

On Wed, Feb 27, 2019 at 9:39 PM Tim Harvey <tharvey@gateworks.com> wrote:
>
> Greetings,
>
> I've got two embedded boards (IMX6 using gpmi-nand driver) that are
> identical except for the NAND FLASH and am trying to understand why
> I'm seeing a massive performance difference when it comes to ubi and
> ubifs (in particular ubi scanning and UBIFS resizing).
>
> Micron MT29F16G08ADACAH4:
> - page size: 4320 bytes (4096 + 224 bytes)
> - block size: 64 pages (256K + 14K bytes)
> - device size: 16Gb
> - 30ns per-block read
> - 300us per-block program
> - 2.0ms per-block erase
>
> Cypress S34ML16G202BHI000
> - page size: 2176 bytes (2048+128)
> - block size: 64 pages (128K + 8K)
> - device size: 16Gb
> - 25ns per-block read
> - 300us per-block program
> - 3.5ms per-block erase
>
> The parts are relatively close in per-block performance but because
> the Micron has twice the block size I think of it being twice as fast
> on a per-byte basis compared to the Cypress and I do see this relative
> performance when testing read/write/erase both in modern U-Boot and
> latest Linux. What doesn't add up is that the Cypress part takes about
> 7x longer to complete the ubi attach (between 'attaching mtd' and
> 'scanning is finished' and about 100x longer to complete the UBIFS
> free space fixup (between 'start fixing up free space' and 'free space
> fixup complete') performed on the first mount of a ubifs filesystem
> that was created with auto-resize enabled.
>
> Both parts are 2GiB and the ubi scanning on attach in the kernel goes
> from ~4s on Micron to ~28s on Cypress and the UBIFS free space fixup
> goes from 0.5s on Micron to a whopping 56s on Cypress.
>
> Any ideas why would I be seeing this kind of performance difference
> when the raw erase/read/write performance is (both datasheet and Linux
> tests) only 2x slower? Anywhere I can look to improve performance of
> the Cypress part?

Let's focus as first step on UBI attach by scanning. Here UBI reads
the first two
(sub)pages of each block.

Please figure whether in both setup subpages are used or not. Then
measure how long
it takes to read a single page.
Given this numbers we can start with the detective work.

Did you also check what timings both NANDs are using?

--
Thanks,
//richard