Re: MMC quirks relating to performance/lifetime.

Andrei Warkentin
2011-02-22T06:43:04Z

[-- Attachment #1: Type: text/plain, Size: 1409 bytes --]

On Sun, Feb 20, 2011 at 9:03 AM, Arnd Bergmann <arnd@arndb.de> wrote:
>
> From your flashbench -a run, I would guess that it uses
> 8 MB allocation units, although the data is not 100% conclusive
> there.
>

Because the 8MB aligned write time is significantly faster, right?

>
> My interpretation is that it uses 16 KB pages, but can do two page-sized
> writes in a single access (multi-plane write). Anything smaller than
> a page goes to a temporary buffer first (like the Toshiba chip), but
> gets flushed when the next one is not contiguous. If you manage to fill
> the entire 16 KB page using small contiguous writes, it can do a single
> efficient write access instead.
>
> To confirm that 16 KB is the page size, you can try
>
> flashbench -s --scatter-span=1 --scatter-order=10 -o plot.data \
>        /dev/mmcblk1 -c 32 --blocksize=16384
> gnuplot -p -e 'plot "plot.data" '
>
> On most MLC flashes, this will show a pattern alternating between slow
> and fast pages like the one from https://lwn.net/Articles/428836/

Cool.

I am attaching some graphs. The 16k sandisk shows the slow and fast
page parallel lines, as does the 8k toshiba (but we knew it for the
toshiba case), but the boundaries are strange for the sandisk case,
and there an interesting 2mb variation in the toshiba 8k graph. What
is the correct way to interpret graphs with other block sizes?

A

[-- Attachment #2: scatter_8k_read_ts.png --]
[-- Type: image/png, Size: 11238 bytes --]

[-- Attachment #3: scatter_8k_sandisk.png --]
[-- Type: image/png, Size: 8964 bytes --]

[-- Attachment #4: scatter_16k_sandisk.png --]
[-- Type: image/png, Size: 6853 bytes --]

[-- Attachment #5: scatter_32k_read_ts.png --]
[-- Type: image/png, Size: 9471 bytes --]

[-- Attachment #6: scatter_32k_sandisk.png --]
[-- Type: image/png, Size: 6790 bytes --]

[-- Attachment #7: scatter_16k_read_ts.png --]
[-- Type: image/png, Size: 9040 bytes --]