[http://free-electrons.com Free Electrons] has performed flash filesystem benchmarks, with funding from the [http://www.celinuxforum.org/ CE Linux Forum] , and presented the results at [http://www.embeddedlinuxconference.com/elc_europe10/index.html ELC Europe 2010].

+

[http://free-electrons.com Free Electrons] has performed flash filesystem benchmarks, with funding from the [http://www.celinuxforum.org/ CE Linux Forum]. This page is the starting page to present the methodology and the results of these benchmarks.

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. The complete details of what tests are performed and how measurements are made are available in the [[Flash Filesystem Benchmarks Protocol]] page.

−

=== Test automation scripts ===

+

The current version of these scripts can be found in a Git repository on [https://gitorious.org/ffs-benchmarks/ffs-benchmarks gitorious], and are released under the terms of the GPLv2 license. Working board automation files are provided for the [http://www.calao-systems.com/articles.php?lng=en&pg=5932 CALAO USB-A9263-C02] and [http://www.igep.es/index.php?option=com_content&view=article&id=46&Itemid=55 IGEPv2 boards]. You will need to build a root filesystem to run the tests on and create filesystems of different sizes (8, 32, 252 and 508 MB) to be tested ; both of which that have been used by Free Electrons will be available soon.

−

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.

+

== Results ==

−

A first version of these scripts can be found on [http://free-electrons.com/pub/utils/board-automation/], 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.

+

=== Comparison of different versions of the Kernel ===

−

A description of what these scripts measure, and how, is available [[Flash Filesystem Benchmarks Protocol|here]].

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.

+

=== Linux 3.1 results ===

+

See [[Flash Filesystem Benchmarks 3.1]] for the results

−

=== Partition sizes ===

+

=== Linux 3.0 results ===

+

See [[Flash Filesystem Benchmarks 3.0]] for the results

−

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.

+

=== Linux 2.6.39 results ===

+

See [[Flash Filesystem Benchmarks 2.6.39]] for the results

−

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

+

=== Linux 2.6.38 results ===

+

See [[Flash Filesystem Benchmarks 2.6.38]] for the results

−

=== Individual tests ===

+

=== Linux 2.6.36 results ===

+

See [[Flash Filesystem Benchmarks 2.6.36]] for the results

−

* init_time: time taken to load the filesystem driver, and initialize it. In particular for ubifs, this includes the ubi_attach operation.

+

== Presentations of the results ==

−

* 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 <tt>df</tt> 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 [http://www.calao-systems.com/articles.php?lng=en&pg=5932 CALAO Systems USB-A9263-C02] board.

+

Previous results of those benchmarks were presented:

+

* At [http://www.embeddedlinuxconference.com/elc_europe10/index.html ELC Europe 2010], the [[Media:elce2010-flash-filesystems.pdf | slides (PDF)]] are available

+

* At [http://www.embeddedlinuxconference.com/elc_europe08/index.html ELC Europe 2008], the [[Media:Flash-filesystems.pdf|slides (PDF)]] are available

Test methodology

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. The complete details of what tests are performed and how measurements are made are available in the Flash Filesystem Benchmarks Protocol page.

The current version of these scripts can be found in a Git repository on gitorious, and are released under the terms of the GPLv2 license. Working board automation files are provided for the CALAO USB-A9263-C02 and IGEPv2 boards. You will need to build a root filesystem to run the tests on and create filesystems of different sizes (8, 32, 252 and 508 MB) to be tested ; both of which that have been used by Free Electrons will be available soon.