Home $5K RTOS Bundle Technical Support The Blunk Difference Contact Us

Embedded File Systems for Linux

TargetFS-LKMô vs. EXT4/UBIFS/JFFS2 Benchmarks

Table Of Contents:

Introduction:

TargetFS-LKMô (TFS-LKM), Blunk's best-in-class, high performance, full storage embedded Linux solution is a viable alternative to the default file systems available under Linux. TFS-LKM works well with eMMC and SD cards as well as raw flash - both NOR and NAND. For raw flash, our solution comprises not only our generic, high performance file system, TargetXFS (TXFS), but also our best-in-class flash translation layers for both NOR and NAND flash.

To showcase its capabilities, Blunk has run the following well-known file system benchmarks:

TFS-LKM is versatile in its support of storage media. The above benchmarks have been run on three different types of memory - eMMC, raw NAND flash and raw NOR flash.

For the eMMC benchmarks, TFS-LKM has been run against the EXT4 file system. For the raw flash benchmarks, TFS-LKM has been run against the UBIFS and JFFS2 flash centric file systems.

FFSB Benchmark

The measurements used for the FFSB benchmarks are:

  • metaop - a combination of several directory operations (two directory creates, one directory remove and one directory rename)
  • read - random file reads
  • read all - full/sequential file reads
  • write - random file overwrites
  • write all - full/sequential file writes

FileBench Benchmark

The FileBench benchmark uses profiles to measure certain aspects of a file system functionality. The following profiles were used for the benchmark:

  • Five Stream Direct Write 3.0 - sequential 1MB writes to five 1GB files, each in its own thread, using the O_DIRECT open() flag
  • Single Stream Direct Write 3.0 - sequential 1MB writes to single 1GB file using the O_DIRECT open() flag
  • Five Stream Direct Read 3.0 - sequential 1MB reads from five 1GB files, each in its own thread, using the O_DIRECT open() flag
  • Single Stream Direct Read 3.0 - sequential 1MB reads from single 1GB file using the O_DIRECT open() flag
  • File Micro-ReadRand 2.2 - single threaded random 2KB reads from a single 1GB file
  • File Micro-SeqRead 2.1 - single threaded sequential 1MB reads from a single 1GB file
  • File Stream Read 3.0 - sequential 1MB reads from five 1GB files, each in its own thread
  • RandomRead 3.0 - single threaded random 8KB reads from a single 5GB file
  • SingleStreamRead 3.0 - single threaded sequential 1MB reads from a single 5GB file
  • RandomWrite 3.0 - single threaded random 8KB overwrites to a single pre-allocated 5GB file
  • FileMicro-WriteRand 2.1 - single threaded asynchronous random 2KB writes to single 1GB file
  • FileMicro-SeqWrite 2.2 - single threaded asynchronous sequential 1MB writes to 1GB single file
  • FileMicro-SeqWriteRand 2.2 - single threaded random sized appends/writes (1B to 8KB) to 1GB single file
  • FileMicro-SeqWriteRandVarGam 1.1 - single threaded random sized appends/writes (1B to 8KB) to 1GB single file
  • FileMicro-SeqWriteRandVarTab 1.1 - sequential writes to 1GB single file (1KB to 64KB - mean 5.5KB), followed by close()
  • Five Stream Write 3.0 - sequential 1MB writes of five 64MB files, each in its own thread
  • Single Stream Write 3.0 - sequential 1MB writes to single file for 1s
  • FileMicro-WriteRandDsync 2.1 - single threaded synchronous (O_DSYNC open() flag) 2KB writes to single 1GB file
  • FileMicro-WriteRandFsync 2.1 - single threaded asynchronous random 8KB writes to single 1GB file, with fsync() calls after every 16KB writes
  • FileMicro-WriteFsync 2.1 - single threaded 8KB appens/writes to single 1GB file, with fsync() after every 1250 append calls
  • FileMicro-CreateRand 2.1 - single threaded asynchronous random appends (1B to 1MB) to a single 1KB file, with fsync() after every 10 append calls
  • FileMicro-Delete 2.4 - create 50000 files with sizes based on gamma distribution of median size 16KB, then create 16 threads, each deleting 1000 files
  • Copyfiles 3.0 - copy directory tree with 1000 files to new destination directory via single thread
  • Createfiles 3.0 - create 15000 files in directory tree with file sizes based on gamma distribution of median size 16KB using 16 threads
  • Stat File 1.0 - create 10000 files, then loop through them via 20 threads, calling stat() on each file
  • ListDirs 1.0 - create deep directory tree with 50000 files, then list contents via readdir()
  • MakeDirs 1.0 - create 10000 leaf directories in directory tree
  • Openfiles 1.0 - create 50000 empty files, then open()/close() each
  • RemoveDir 1.0 - remove 10000 empty directories from an already created directory tree
  • FileMicro-Createfiles - create 20000 files via 1MB writes
  • Random RW Version 3.0 - random 8KB reads/writes on single, existing 5GB file via two threads, one for reads, one for writes
  • Eventgen rate - compound profile
  • CompFlow_Demo Version 1.1 - compound profile
  • NetworkServer Version 1.1 - compound profile

FIO Benchmark

The FIO benchmark performs 4KB reads and writes on a large file. The measurements used for the benchmark are:

  • seq-read - sequential file reads
  • rand-read - random file reads
  • seq-write - sequential file writes
  • rand-write - random file writes

IOZone Benchmark

The IOZone benchmark performs various read/write measurements on a large file using I/O requests in the range 4KB to 16MB. The measurements used for the benchmark are:

  • Writer - write a new file
  • Re-Writer - write a file that already exists
  • Reader - read a file for the first time
  • Re-Reader - read a file that was recently read
  • Random Write - write to random locations in a file
  • Random Read - read from random locations in a file
  • Fwrite - write to a new file using fwrite()
  • Fread - read a file for the first time using fread()
  • Re-Fwrite - write to an exiting file using fwrite()
  • Re-Fread - read a file that was recently read using fread()
  • Backward Read - read a file backwards from the end to the front
  • Record Rewrite - continuous writes to same hot spot location inside a file
  • Stride Read - read a file with strided access behavior (access pattern is read X bytes, seek Y bytes)


eMMC Benchmarks

eMMC benchmarks were performed on the following cards:

  • Toshiba 16GB - THGBMBG7D2KBAIL
  • Micron 16GB - MTFC16GAKAECN-2M

The board used for the benchmarks is the ZC702 evaluation kit from Xilinx.

In all the eMMC benchmarks below, TargetXFS values are in blue, EXT4 values are in red.

FFSB Benchmark

Toshiba eMMC results in Transactions/sec:

Toshiba eMMC FFSB Benchmarks

Micron eMMC results in Transactions/sec:

Micron eMMC FFSB Benchmarks

FileBench Benchmark

Toshiba eMMC results in Operations/sec:

Toshiba eMMC FileBench Benchmarks

Micron eMMC results in either MB/s or Operations/sec depending on the functionality being measured:

Micron eMMC FileBench Benchmarks

FIO Benchmark

We used 256MB files for the FIO benchmarks.

Toshiba eMMC results in IOPS:

Toshiba eMMC FIO Benchmarks

Micron eMMC results in IOPS:

Micron eMMC FIO Benchmarks

IOZone Benchmark

We used 256MB files for the IOZone benchmarks.

Toshiba eMMC results in KB/s:

Toshiba eMMC IOZone Benchmarks

Micron eMMC results in KB/s:

Micron eMMC IOZone Benchmarks

NOR SPI Benchmarks

NOR SPI benchmarks were performed on the Micron N25Q128A11ESF40G quad-spi flash.

The board used for the benchmarks is the ZC702 evaluation kit from Xilinx.

The size of the volumes being tested was set to 11MB.

In all the NOR SPI benchmarks below, TargetXFS values are in blue, JFFS2 values are in red, and UBIFS values are in green.

FFSB Benchmark

NOR SPI results in Transactions/sec:

NOR-SPI FFSB Benchmarks

FileBench Benchmark

NOR SPI results in either MB/s or Operations/sec(Ops/s) depending on the functionality being measured:

NOR-SPI FileBench Benchmarks

FIO Benchmark

We used two measurements for the FIO benchmarks. One used 4MB files, the other 8MB ones.

NOR SPI 4MB files results in IOPS:

NOR-SPI 4M FIO Benchmarks

NOR SPI 8MB files results in IOPS:

NOR-SPI 8M FIO Benchmarks

IOZone Benchmark

We used two measurements for the IOZone benchmarks. One used 4MB files, the other 8MB ones.

NOR SPI 4MB files results in KB/s:

NOR-SPI 4MB IOZone Benchmarks

NOR SPI 8MB files results in KB/s:

NOR-SPI 8MB IOZone Benchmarks

NAND Benchmarks

NAND benchmarks were performed on the Samsung K9F1G08UA-P flash.

The board used for the benchmarks is the ea3250 evaluation kit from Embedded Artists.

The size of the volumes being tested was set to 122MB.

In all the NAND benchmarks below, TargetXFS values are in blue, JFFS2 values are in red, and UBIFS values are in green.

FFSB Benchmark

NAND results in Transactions/sec:

NAND FFSB Benchmarks

FIO Benchmark

NAND results in IOPS:

NAND 4M FIO Benchmarks

IOZone Benchmark

We used two measurements for the IOZone benchmarks. One used 4MB files, the other 8MB ones.

NAND 4MB files results in KB/s:

NAND 4MB IOZone Benchmarks

NAND 8MB files results in KB/s:

NAND 8MB IOZone Benchmarks