Great jffs2 speedup

hinko.kocevar at cetrtapot.si hinko.kocevar at cetrtapot.si
Wed Sep 28 05:36:13 EDT 2005


Hi,

We started using new CVS code that provides EBS and fragtree method. 
Below are some measurements of mount times for old and new setup.

NAND partitions size tested were:
flash4 - 4Mb
flash5 - 12Mb
flash6 - 16Mb

OLD setup uses ~April 2005 MTD code, 2.6.11 kernel, no EBS and produces 
following:

Mounting flash4 clean partition	[1]
real	0m 0.83s
user	0m 0.01s
sys	0m 0.83s
-- -- -- -- -- -- -- -- -- --
Mounting flash4 dirty partition	[2]
real	0m 8.37s
user	0m 0.01s
sys	0m 8.35s
-- -- -- -- -- -- -- -- -- --
Mounting flash5 clean partition
real	0m 2.70s
user	0m 0.02s
sys	0m 2.38s
-- -- -- -- -- -- -- -- -- --
Mounting flash5 dirty partition
real	0m 26.42s
user	0m 0.01s
sys	0m 26.40s
-- -- -- -- -- -- -- -- -- --
Mounting flash6 clean partition
real	0m 3.29s
user	0m 0.02s
sys	0m 3.16s
-- -- -- -- -- -- -- -- -- --
Mounting flash6 dirty partition
real	0m 35.81s
user	0m 0.01s
sys	0m 35.77s
-- -- -- -- -- -- -- -- -- --

On new setup - using yesterdays MTD CVS and 2.6.12 kernel with EBS enabled:
Mounting flash4 clean partition	[1]
real    0m 3.75s
user    0m 0.02s
sys     0m 1.17s
-- -- -- -- -- -- -- -- -- --
Mounting flash4 dirty partition	[2]
real    0m 0.75s
user    0m 0.02s
sys     0m 0.73s
-- -- -- -- -- -- -- -- -- --
Mounting flash5 clean partition
real    0m 3.55s
user    0m 0.02s
sys     0m 3.47s
-- -- -- -- -- -- -- -- -- --
Mounting flash5 dirty partition
real    0m 2.12s
user    0m 0.03s
sys     0m 2.08s
-- -- -- -- -- -- -- -- -- --
Mounting flash6 clean partition
real    0m 4.82s
user    0m 0.01s
sys     0m 4.63s
-- -- -- -- -- -- -- -- -- --
Mounting flash6 dirty partition
real    0m 2.82s
user    0m 0.01s
sys     0m 2.80s
-- -- -- -- -- -- -- -- -- --

Compared to old setup this is GREAAAAAT improvment (if my mesurements 
are correct:). Great job!

This holds true /only/ if partition is erased beforehand and then 
mounted, filled with files, umounted and mounted again to mesure mount 
time for dirty partition. Mounting jffs2 partition filled on old setup 
shows no performance improvement.

We found sumtool utility in tools dir and if my understanding is correct 
it is used to convert jffs2 image with no EBS to jffs2 image with EBS.

Is this the only way to upgrade 'old' jffs2 partitions already in place 
(on the nand flash) to use EBS? Thing is, we have several system up and 
running in the wild and would like to upgrade jffs2 partitions 
as-painless-as-possible, preferably without complete reflash of the systems.

I've just ran sumtool on old raw 4Mb mtd char device (containing jffs2 
fs) and it produced 4Mb image on the output. I figure, if I copy this 
image back to flash and test it with EBS supported kernel it should 
recognize it as new jffs2 image and mount it super-fast. I still need to 
erase the nand partition and gather enough ram for temporary EBS image 
on the system and so this could be a problem in our setup.

regards,
hinko

[1] Mounting clean partition means that we erased the partition with 
flash_eraseall and then mounted it. mount time was measured with 'time'.
[2] After cleaning up the partition, then creating, appending, erasing 
several small files on it, we umounted the partition and mounted it 
back. mount time was measured eith 'time'.

All partitions contained 150 - 700 few kbytes sizes files and were ~80 % 
full when dirty.





More information about the linux-mtd mailing list