Flash Filesystem Benchmarks

From eLinux.org
Revision as of 08:54, 30 June 2011 by Deubeuliou (talk | contribs) (Add a link to the test protocol)
Jump to: navigation, search

Free Electrons has performed flash filesystem benchmarks, with funding from the CE Linux Forum , and presented the results at ELC Europe 2010.

Test methodology

See our ELCE 2010 presentation for complete details and benchmark results.

Test automation scripts

Free Electrons created Python scripts that automate the execution of commands through a serial line (including bootloader and kernel booting), and measure the time taken to execute these commands. The scripts were designed to be generic, and support for new boards can easily be added by creating board specific Python definitions.

A first version of these scripts can be found on [1], and are released under the terms of the GPLv2 license. Working board automation files are provided for the CALAO USB-A9263-C02, Beagle and IGEPv2 boards. An ARM root filesystem containing all the filesystem utilities is also given in the same location.

A description of what these scripts measure, and how, is available here.

Tested filesystems

At the time of these tests (Linux 2.6.36), only the jffs2, yaffs2 and ubifs filesystems were available for testing. Logfs, even though it is supported in mainline Linux, could not be tested because it segfaulted at unmount time.

Partition sizes

The same tests were performed on various MTD partition sizes: 8 MB, 32 MB, 128 MB and 252 MB. We used 252 MB instead of 256 MB because some of the boards need to keep a few MBs of NAND space for the bootloader and kernel.

These multiple partition sizes allow to see how the filesystems scale, and allow to predict the behavior with even bigger partitions.

Individual tests

  • init_time: time taken to load the filesystem driver, and initialize it. In particular for ubifs, this includes the ubi_attach operation.
  • mount_time: time taken to mount the filesystem in the partition.
  • used_space: the amount of spaced used by the filesystem, as reported by the df utility. This shows how well data are packed in the filesystem.
  • read_time: time taken to read all the files in the mounted filesystem
  • remove_time: time taken to remove all these files. This reflects the performance modifying directories.
  • write_time: time taken to write a number of compressible data files.
  • video_write_time: time taken to write a number of copies of files that cannot be compressed any further. This mimics what happens in a digital camera, for example.

Linux 2.6.36 results

These results were obtained on a CALAO Systems USB-A9263-C02 board.

See our ELCE 2010 presentation for complete details and graphical representations of results.

Test: init_time (s)
size	 ubifs   jffs2   yaffs2
8	 0.34	 0.12	 0.07
32	 0.78	 0.39	 0.25
128	 1	 0.41	 0.26
252	 1.17	 0.42	 0.26
Test: init_mem (KB)
size	 ubifs   jffs2   yaffs2
8	 888	 444	 96
32	 916	 464	 96
128	 956	 576	 88
252	 988	 436	 80
Test: mount_time (s)
size	 ubifs   jffs2   yaffs2
8	 0.14	 0.11	 0.03
32	 0.36	 0.48	 0.34
128	 0.43	 1.38	 0.51
252	 0.33	 2.08	 0.96
Test: mount_mem (KB)
size	 ubifs   jffs2   yaffs2
8	 544	 184	 8
32	 532	 316	 20
128	 548	 712	 664
252	 540	 1540	 2336
Test: init_time + mount_time (s)
size	 ubifs   jffs2   yaffs2
8	 0.48	 0.23	 0.1
32	 1.14	 0.87	 0.59
128	 1.43	 1.79	 0.77
252	 1.5	 2.5	 1.22
Test: init_mem + mount_mem (MB)
size	 ubifs   jffs2   yaffs2
8	 1432	 628	 104
32	 1448	 780	 116
128	 1504	 1288	 752
252	 1528	 1976	 2416
Test: used_space (KB)
size	 ubifs   jffs2   yaffs2
8	 4520	 4196	 8000
32	 16164   13940   30204
128	 64748   54028   117428
252	 127192  109880  233676
Test: read_time (s)
size	 ubifs   jffs2   yaffs2
8	 4.46	 1.48	 1.18
32	 1.84	 5.46	 1.8
128	 4.86	 19.53   4.81
252	 11.59   43.97   11.51
Test: remove_time (s)
size	 ubifs   jffs2   yaffs2
8	 7.4	 5.76	 9.52
32	 6.93	 5.11	 7.77
128	 10.16   8.97	 16.42
252	 17.26   9.82	 37.56
Test: write_time (s)
size	 ubifs   jffs2   yaffs2
8	 4.83	 15.97   4.31
32	 16.47   60.83   11.14
128	 61.41   236.96  37.09
252	 118.38  459.58  70.56
Test: video_write_time (s)
size	 ubifs   jffs2   yaffs2
8	 -	 16.06   3.69
32	 19.03   60.92   8.45
128	 72.76   238.99  28.85
252	 140.16  461.35  55.16