UBIFS performance

Adrian Hunter ext-adrian.hunter at nokia.com
Wed Nov 26 06:49:43 EST 2008

Brijesh Singh wrote:
>   I am testing UBIFS and JFFS2 performance on OneNand with iozone utility. 
> Interestingly, random read / write performance are slightly better than 
> sequential read / write.
> These results are consistent across multiple versions. And consistent with 
> all different record length sizes.
> Correct me if I am wrong, but shouldn't sequential read/write fair better 
> than random read/write? Is this expected behavior? If yes,why?

For log-structured file systems on flash memory, there should be little
difference between sequential and random access.

That is true for UBIFS, although sequential might be slightly faster,
because it is slightly more likely to find index nodes already cached.

We recently introduced a facility called bulk-read that offers improved
sequential read speed.  It has lower overhead and benefits from OneNAND's
read-while-load operation.

We are thinking about something for writing in bigger chunks that would
benefit from OneNAND's write-while-program operation, but that will be good
for either random or sequential writes.

With regard to iozone, you need to be aware that it hides one of JFFS2's
weaknesses which is how long it takes to open a file.  Unlike UBIFS and
other file systems which just read the inode, JFFS2 has to do lots of work
putting all the file fragments together.  The bigger the file, the longer
it takes to open.  If you compare how long it takes to open a file and
read it, our experience is that UBIFS is faster than JFFS2.  Whereas
if you ignore the open time, JFFS2 is faster that UBIFS.

In mtd-utils there is a simple performance test program called perf
which includes the open time in calculations.  It is in the
tests/fs-tests/simple directory.

Also, if you want to exclude the effects of caching you may want to use
the -e and -U options for iozone.

More information about the linux-mtd mailing list