[Yaffs] YAFFS2 Development
Jon Masters
jonathan at jonmasters.org
Tue Dec 6 16:10:48 GMT 2005
Hi folks,
I've been doing some work with very large MTD devices (many GB) and also
with improving YAFFS2 performance on those. There are some MTD patches
which will be forthcoming for 64-bit MTD (for which I needed to use a
few do_div operations as YAFFS2/MTD code can't use convenient shifts)
but in the meantime, here are some notes that I have on YAFFS2 -
these are from my experiences on a custom backport to
Montavista Linux Pro 3.1 (kernel 2.4.20).
None of this is meant to criticise - I think YAFFS2 is amasingly cool -
but here are some comments based on a particular effort.
* YAFFS2 should not use any shortopcaches when on Linux. It seems to
make little difference to performance (only negative).
* YAFFS2 memory allocation using kmalloc does not work on very large
devices and needs to use vmalloc instead in those cases (>2GB devices).
The lack of checking for success proves to be a problem.
* YAFFS2 has various internal usage of types which makes it difficult to
scale to >2GB devices. We have to divide up into multiple partitions.
* Andre Renaud latched onto a problem which I then rediscovered in
performance testing. Having chunk groups of 16 reduces performance by
at least 50% but in practice can be much higher. By applying a version
of his patch, I was able ot reduce read time for a 50MB file from 27
seconds to around 15 seconds and have achieved sustained reads at
22.2Mbit/s on multi-GB devices reading many hundred MBs.
* YAFFS2 makes use of some additional reads and memcpy's which don't
seem entirely necessary - by combining and changing some of the logic
it looks like we could get another 10% performance gain.
Jon.
More information about the yaffs
mailing list