Great jffs2 speedup

Peter Grayson pgrayson at realmsys.com
Fri Sep 30 16:25:16 EDT 2005


On Fri, 2005-09-30 at 12:58 +0400, Artem B. Bityutskiy wrote:
> Could you please create a 200MB file 'dedekind' (or larger, the larger -
> the better), mount your FS, run 'time stat dedekind' and report how much
> time did that command stat took.

# time dd if=/dev/zero of=/mnt/mtdb2/dedekind bs=1M count=300
300+0 records in
300+0 records out
real    1m 37.08s
user    0m 0.01s
sys     0m 40.64s

# time umount /mnt/mtdb2
real    0m 0.45s
user    0m 0.00s
sys     0m 0.33s

# time mount /mnt/mtdb2 && time stat /mnt/mtdb2/dedekind
real    0m 0.18s
user    0m 0.00s
sys     0m 0.14s
  File: `/mnt/mtdb2/dedekind'
  Size: 314572800       Blocks: 614400     IO Block: 4096   regular file
Device: 1f02h/7938d     Inode: 2           Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 1969-12-31 17:01:29.000000000 -0700
Modify: 1969-12-31 17:03:06.000000000 -0700
Change: 1969-12-31 17:03:06.000000000 -0700
real    0m 9.50s
user    0m 0.00s
sys     0m 4.47s

And again with a bigger file:

# time dd if=/dev/zero of=/mnt/mtdb2/dedekind bs=1M count=600
600+0 records in
600+0 records out
real    3m 6.93s
user    0m 0.02s
sys     1m 19.27s

# time umount /mnt/mtdb2
real    0m 0.81s
user    0m 0.00s
sys     0m 0.58s

# time mount /mnt/mtdb2 && time stat /mnt/mtdb2/dedekind
real    0m 0.32s
user    0m 0.00s
sys     0m 0.26s
  File: `/mnt/mtdb2/dedekind'
  Size: 629145600       Blocks: 1228800    IO Block: 4096   regular file
Device: 1f02h/7938d     Inode: 3           Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 1969-12-31 17:19:56.000000000 -0700
Modify: 1969-12-31 17:19:56.000000000 -0700
Change: 1969-12-31 17:19:56.000000000 -0700
real    0m 18.72s
user    0m 0.00s
sys     0m 8.40s

Yet bigger:

# time dd if=/dev/zero of=/mnt/mtdb2/dedekind bs=1M count=900
900+0 records in
900+0 records out
real    5m 28.55s
user    0m 0.02s
sys     1m 55.58s

# time umount /mnt/mtdb2
real    0m 1.17s
user    0m 0.00s
sys     0m 0.83s

# time mount /mnt/mtdb2 && time stat /mnt/mtdb2/dedekind
real    0m 0.45s
user    0m 0.00s
sys     0m 0.36s
  File: `/mnt/mtdb2/dedekind'
  Size: 943718400       Blocks: 1843200    IO Block: 4096   regular file
Device: 1f02h/7938d     Inode: 4           Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 1969-12-31 17:30:46.000000000 -0700
Modify: 1969-12-31 17:30:46.000000000 -0700
Change: 1969-12-31 17:30:46.000000000 -0700
real    0m 28.31s
user    0m 0.00s
sys     0m 12.93s

So, there seems to be a linear relationship between the time-to-stat and
the file size.

> Also, just after mount of a fully filled FS (again, the larger is your
> FS, the better), run top, and look how much time your cpu is busy by
> executing the GC thread. Basically, you can start writing only after the
> GC thread has stopped working.

I do not have the time to do this test right now.

> I am really curious about the results. 

Me too!

> And another fun is to create a directory with thousands of small (or
> empty) files, remount the FS and run stat on the directory or enter it.
> But this is not that fundamental problem and may be fixed.

I'll try to make some time to do these tests next week.

Pete





More information about the linux-mtd mailing list