Hello,
This is a call to jffs2 experts, any help is welcome.
I have 2 performance problems with JFFS2, my platform is a da850 with linux 3.2 and a 1GB nand device from Micron (MT29F8G...).
I create my images like that (with summary) :
- mkfs.jffs2 --no-cleanmarkers -e 128KiB -s 2048 --little-endian -o /tmp/rootfs.img -d $(ROOTFS)
- sumtool -e 128KiB -n -l -i /tmp/rootfs.img -o $(IMAGES_PATH)/rootfs.img
The padding is done by nandwrite with -p.
The first performance problem is the access time of large files at startup, first open() or fopen() calls take a really long time on these files, approx 10s for 20MB, 60s for 90MB. Next to that, all open take few ms, even if droping caches (echo 3 > /proc/sys/vm/drop_caches). Remount the mtd partition and it bugs again. I have runned jffs2 in debug lvl=1 (15 min instead of 60s), here is the log of last 2min (I have no more): http://pastebin.com/hMKYY9HN. The only thing I see in log is that it start doing something after the trace "jffs2_flush_wbuf_gc() ends..."
The second performance problem is with the jffs2 gc daemon, it use a lot of cpu for several minutes at each mount, For faster boot I delayed the start by waiting a SIGCONT in the daemon, but I have no idea if that time is normal or not. Tested with really large files ~600MB.
If it helps :
- some mtd-tools failed on the MEMGETOOBSEL syscall, so my kernel & mtd-utils have a modified struct nand_oobinfo>eccpos size (40)
- problem 1 & 2 does not seems to be linked, problem 1 is reproductible whatever gcd state
Thanks