Difference between revisions of "Flash Filesystem Benchmarks"

From eLinux.org
Jump to: navigation, search
(Presentations of the results: fix slides links)
 
(19 intermediate revisions by 4 users not shown)
Line 1: Line 1:
[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.
  
 
== Test methodology ==
 
== Test methodology ==
  
See our [http://elinux.org/images/d/d7/Elce2010-flash-filesystems.pdf ELCE 2010 presentation] for complete details and benchmark results.
+
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]].
+
See [[Flash Filesystem Benchmarks Kernel Evolution]] to find possible regressions
 
=== 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.
+
=== 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.39 results ==
 
See [[Flash Filesystem Benchmarks 2.6.39|this page]] for the results
 
  
== Linux 2.6.36 results ==
+
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
  
These results were obtained on a [http://www.calao-systems.com/articles.php?lng=en&pg=5932 CALAO Systems USB-A9263-C02] board.
+
== Details on the hardware platforms used ==
  
See our [http://elinux.org/images/d/d7/Elce2010-flash-filesystems.pdf ELCE 2010 presentation] for complete details and graphical representations of results.
+
* [http://www.calao-systems.com/articles.php?lng=en&pg=5932 CALAO USB-A9263-C02]
 +
** AT91SAM9263 processor at 200 Mhz
 +
** 64 MB of RAM
 +
** 256 MB of NAND Flash from Samsung K9F2G08U0A
 +
* [http://www.igep.es/index.php?option=com_content&view=article&id=46&Itemid=55 IGEPv2 boards]
 +
** DM3730 processor at 1 Ghz
 +
** 512 MB of RAM
 +
** 512 MB of dual-plane SLC OneNAND Flash from Numonyx NAND04GR4E1A
  
Test: init_time (s)
+
[[Category:Flash Filesystem Benchmarks]]
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
 

Latest revision as of 12:24, 12 October 2012

Free Electrons has performed flash filesystem benchmarks, with funding from the CE Linux Forum. This page is the starting page to present the methodology and the results of these benchmarks.

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.

Results

Comparison of different versions of the Kernel

See Flash Filesystem Benchmarks Kernel Evolution to find possible regressions

Linux 3.1 results

See Flash Filesystem Benchmarks 3.1 for the results

Linux 3.0 results

See Flash Filesystem Benchmarks 3.0 for the results

Linux 2.6.39 results

See Flash Filesystem Benchmarks 2.6.39 for the results

Linux 2.6.38 results

See Flash Filesystem Benchmarks 2.6.38 for the results

Linux 2.6.36 results

See Flash Filesystem Benchmarks 2.6.36 for the results

Presentations of the results

Previous results of those benchmarks were presented:

Details on the hardware platforms used

  • CALAO USB-A9263-C02
    • AT91SAM9263 processor at 200 Mhz
    • 64 MB of RAM
    • 256 MB of NAND Flash from Samsung K9F2G08U0A
  • IGEPv2 boards
    • DM3730 processor at 1 Ghz
    • 512 MB of RAM
    • 512 MB of dual-plane SLC OneNAND Flash from Numonyx NAND04GR4E1A