JFFS2 vs UBIFS - 2net.co.uk · 5 10 15 20 25 30 35 Mount time empty large files Seconds small...
Transcript of JFFS2 vs UBIFS - 2net.co.uk · 5 10 15 20 25 30 35 Mount time empty large files Seconds small...
![Page 1: JFFS2 vs UBIFS - 2net.co.uk · 5 10 15 20 25 30 35 Mount time empty large files Seconds small files. Chris Simmonds 2net Ltd 23 Mount time conclusions](https://reader033.fdocuments.net/reader033/viewer/2022060603/60585cbdd468521c8313b12c/html5/thumbnails/1.jpg)
Linux flash file systemsJFFS2 vs UBIFS
Chris Simmonds2net Limited
Embedded Systems Conference UK. 2009
Copyright © 2009, 2net Limited
![Page 2: JFFS2 vs UBIFS - 2net.co.uk · 5 10 15 20 25 30 35 Mount time empty large files Seconds small files. Chris Simmonds 2net Ltd 23 Mount time conclusions](https://reader033.fdocuments.net/reader033/viewer/2022060603/60585cbdd468521c8313b12c/html5/thumbnails/2.jpg)
2Chris Simmonds 2net Ltd
Overview
Many embedded systems use raw flash chips JFFS2 has been the main choice for almost 10
years As flash sizes increase the scalability problems
of JFFS2 become more obvious UBIFS is being talked about as the next flash
file system How does it compare?
![Page 3: JFFS2 vs UBIFS - 2net.co.uk · 5 10 15 20 25 30 35 Mount time empty large files Seconds small files. Chris Simmonds 2net Ltd 23 Mount time conclusions](https://reader033.fdocuments.net/reader033/viewer/2022060603/60585cbdd468521c8313b12c/html5/thumbnails/3.jpg)
3Chris Simmonds 2net Ltd
Types of flash memory
NOR NAND
Erase blocke.g. 128 KiB
Pagee.g. 2112 B
Out Of Bandarea (64 B)
Erase blocke.g. 128 KiB
Data area(2048 B)
Max erase cycles: 100K to 1Mper erase block
Max erase cycles: 10K to 100Kper erase block
![Page 4: JFFS2 vs UBIFS - 2net.co.uk · 5 10 15 20 25 30 35 Mount time empty large files Seconds small files. Chris Simmonds 2net Ltd 23 Mount time conclusions](https://reader033.fdocuments.net/reader033/viewer/2022060603/60585cbdd468521c8313b12c/html5/thumbnails/4.jpg)
4Chris Simmonds 2net Ltd
NAND flash
Bit errors Need ECC stored in OOB area to detect & correct ECC may be handled in hardware or software
Bad blocks Up to 2% erase blocks bad in new chips Blocks may go bad during normal operation Bad block marked with a flag on OOB
Multi-Level Cell (MLC) NAND High storage density; high bit error rate; few erase
cycles (10 K)
![Page 5: JFFS2 vs UBIFS - 2net.co.uk · 5 10 15 20 25 30 35 Mount time empty large files Seconds small files. Chris Simmonds 2net Ltd 23 Mount time conclusions](https://reader033.fdocuments.net/reader033/viewer/2022060603/60585cbdd468521c8313b12c/html5/thumbnails/5.jpg)
5Chris Simmonds 2net Ltd
Flash translation layers
Sub allocation within erase block Garbage collection to coalesce & free obsolete
data Wear leveling Bad block handling (NAND)
Includes ECC generation & checking
Avoid data corruption when powered down
![Page 6: JFFS2 vs UBIFS - 2net.co.uk · 5 10 15 20 25 30 35 Mount time empty large files Seconds small files. Chris Simmonds 2net Ltd 23 Mount time conclusions](https://reader033.fdocuments.net/reader033/viewer/2022060603/60585cbdd468521c8313b12c/html5/thumbnails/6.jpg)
6Chris Simmonds 2net Ltd
Commodity flash devices
For example SD, Compact Flash, USB storage Flash translation layer implemented in firmware
on the device Appears to operating system like a hard drive
Very limited reliability data from manufacturers Some have known problems with wear leveling and
corruption at power off
Alternative: use raw flash with translation in the file system That is what JFFS2 and UBIFS do!
![Page 7: JFFS2 vs UBIFS - 2net.co.uk · 5 10 15 20 25 30 35 Mount time empty large files Seconds small files. Chris Simmonds 2net Ltd 23 Mount time conclusions](https://reader033.fdocuments.net/reader033/viewer/2022060603/60585cbdd468521c8313b12c/html5/thumbnails/7.jpg)
7Chris Simmonds 2net Ltd
Flash file systems
JFFS2
MTD
UBI
MTD
UBIFS
Raw flash Raw flash
![Page 8: JFFS2 vs UBIFS - 2net.co.uk · 5 10 15 20 25 30 35 Mount time empty large files Seconds small files. Chris Simmonds 2net Ltd 23 Mount time conclusions](https://reader033.fdocuments.net/reader033/viewer/2022060603/60585cbdd468521c8313b12c/html5/thumbnails/8.jpg)
8Chris Simmonds 2net Ltd
Memory Technology Device layer
MTD core
NOR SLC NAND MLC NAND
Character/dev/mtd
Block dev/dev/mtdblock
MTD is the lowest level for accessing flash chips Presents flash as one or more partitions of erase blocks
![Page 9: JFFS2 vs UBIFS - 2net.co.uk · 5 10 15 20 25 30 35 Mount time empty large files Seconds small files. Chris Simmonds 2net Ltd 23 Mount time conclusions](https://reader033.fdocuments.net/reader033/viewer/2022060603/60585cbdd468521c8313b12c/html5/thumbnails/9.jpg)
9Chris Simmonds 2net Ltd
JFFS2
MTDpartition Free erase blocks
Data nodes Summary node
Erase block
Used erase blocks
File data and meta data stored as nodes
No index stored on-chip: have to re-create from
summary nodes at mount: mount is slow
Bad block handling (NAND)
Optional data compression - zlib default
![Page 10: JFFS2 vs UBIFS - 2net.co.uk · 5 10 15 20 25 30 35 Mount time empty large files Seconds small files. Chris Simmonds 2net Ltd 23 Mount time conclusions](https://reader033.fdocuments.net/reader033/viewer/2022060603/60585cbdd468521c8313b12c/html5/thumbnails/10.jpg)
10Chris Simmonds 2net Ltd
UBI
UBI = Unsorted Block Image Maps Physical Erase Blocks in an MTD partition
to Logical Erase Blocks Adds
Bad block handling Volumes Wear leveling within a volume
Introduced in Linux 2.6.22
![Page 11: JFFS2 vs UBIFS - 2net.co.uk · 5 10 15 20 25 30 35 Mount time empty large files Seconds small files. Chris Simmonds 2net Ltd 23 Mount time conclusions](https://reader033.fdocuments.net/reader033/viewer/2022060603/60585cbdd468521c8313b12c/html5/thumbnails/11.jpg)
11Chris Simmonds 2net Ltd
UBI - erase block mapping
MTD partitionPEBs
UBI: LEBs
Bad block
Vol 1 Vol 2
PEB = Physical Erase BlockLEB = Logical Erase Block
![Page 12: JFFS2 vs UBIFS - 2net.co.uk · 5 10 15 20 25 30 35 Mount time empty large files Seconds small files. Chris Simmonds 2net Ltd 23 Mount time conclusions](https://reader033.fdocuments.net/reader033/viewer/2022060603/60585cbdd468521c8313b12c/html5/thumbnails/12.jpg)
12Chris Simmonds 2net Ltd
UBIFS Journal
Robust on power fail
Write-back cache Faster writes (see next slide)
On-chip index Fast mount
Compression: lzo or zlib More data on your chip!
Introduced in Linux 2.6.27
![Page 13: JFFS2 vs UBIFS - 2net.co.uk · 5 10 15 20 25 30 35 Mount time empty large files Seconds small files. Chris Simmonds 2net Ltd 23 Mount time conclusions](https://reader033.fdocuments.net/reader033/viewer/2022060603/60585cbdd468521c8313b12c/html5/thumbnails/13.jpg)
13Chris Simmonds 2net Ltd
Consequences of write-back cache
Write-through cache (e.g. JFFS2) All writes are synchronous
Write-back cache Writes are completed later by pdflush daemon
To avoid loss of data need to do one of Call fsync() after critical writes Open files with O_SYNC flag Mount ubifs with -o sync
![Page 14: JFFS2 vs UBIFS - 2net.co.uk · 5 10 15 20 25 30 35 Mount time empty large files Seconds small files. Chris Simmonds 2net Ltd 23 Mount time conclusions](https://reader033.fdocuments.net/reader033/viewer/2022060603/60585cbdd468521c8313b12c/html5/thumbnails/14.jpg)
14Chris Simmonds 2net Ltd
Device used for testing
ARM 926 SoC @ 155 Mhz 64 MiB RAM 1 x 1Gib (128 MiB) ST/Numonyx NAND flash
128 KiB erase block 2 KiB page Software ECC Programmed i/o
2.6.27 kernel
![Page 15: JFFS2 vs UBIFS - 2net.co.uk · 5 10 15 20 25 30 35 Mount time empty large files Seconds small files. Chris Simmonds 2net Ltd 23 Mount time conclusions](https://reader033.fdocuments.net/reader033/viewer/2022060603/60585cbdd468521c8313b12c/html5/thumbnails/15.jpg)
15Chris Simmonds 2net Ltd
Write test
Write 10 MiB random data in block sizes 4KiB, 64KiB and 1MiB to Raw device: /dev/mtdblock5 JFFS2 file UBIFS file
Write 10 MiB zeros to JFFS2 file UBIFS file
![Page 16: JFFS2 vs UBIFS - 2net.co.uk · 5 10 15 20 25 30 35 Mount time empty large files Seconds small files. Chris Simmonds 2net Ltd 23 Mount time conclusions](https://reader033.fdocuments.net/reader033/viewer/2022060603/60585cbdd468521c8313b12c/html5/thumbnails/16.jpg)
16Chris Simmonds 2net Ltd
Write speed
4K 64KB 1MB0.000
1.000
2.000
3.000
4.000
5.000
6.000
rawJFFS2/rndJFFS2/zeroUBIFS/rndUBIFS/zero
MB
/s
![Page 17: JFFS2 vs UBIFS - 2net.co.uk · 5 10 15 20 25 30 35 Mount time empty large files Seconds small files. Chris Simmonds 2net Ltd 23 Mount time conclusions](https://reader033.fdocuments.net/reader033/viewer/2022060603/60585cbdd468521c8313b12c/html5/thumbnails/17.jpg)
17Chris Simmonds 2net Ltd
Write speed conclusions
Raw speed is 0.7 MiB/s JFFS2
Random data: 0.2 MiB/s− Compression slows it down
Zeros: 0.7 MiB/s− Compression fast, approaches raw speed
UBIFS Random data: 0.8 MiB/s Zeros: 5 MiB/s
− Write-back cache speeds up in both cases
![Page 18: JFFS2 vs UBIFS - 2net.co.uk · 5 10 15 20 25 30 35 Mount time empty large files Seconds small files. Chris Simmonds 2net Ltd 23 Mount time conclusions](https://reader033.fdocuments.net/reader033/viewer/2022060603/60585cbdd468521c8313b12c/html5/thumbnails/18.jpg)
18Chris Simmonds 2net Ltd
Read speed test
Read 10 MiB random data in block sizes 4KiB, 64KiB and 1MiB from Raw device: /dev/mtdblock5 JFFS2 file UBIFS file
Measure JFFS2 and UBIFS times Immediately after mount (no data cached) Again, with cache fully primed
![Page 19: JFFS2 vs UBIFS - 2net.co.uk · 5 10 15 20 25 30 35 Mount time empty large files Seconds small files. Chris Simmonds 2net Ltd 23 Mount time conclusions](https://reader033.fdocuments.net/reader033/viewer/2022060603/60585cbdd468521c8313b12c/html5/thumbnails/19.jpg)
19Chris Simmonds 2net Ltd
Read speed results
4K 64KB 1MB0.000
2.000
4.000
6.000
8.000
10.000
12.000
14.000
16.000
18.000
rawJFFS2 firstJFFS2 againUBIFS firstUBIFS again
MiB
/s
![Page 20: JFFS2 vs UBIFS - 2net.co.uk · 5 10 15 20 25 30 35 Mount time empty large files Seconds small files. Chris Simmonds 2net Ltd 23 Mount time conclusions](https://reader033.fdocuments.net/reader033/viewer/2022060603/60585cbdd468521c8313b12c/html5/thumbnails/20.jpg)
20Chris Simmonds 2net Ltd
Read speed conclusions
Raw speed: 1.1 MiB/s Immediately after mount
JFFS2: 0.87 MiB/s UBIFS: 1.0 MiB/s
Subsequently Both ~15 MiB/s
Not much difference between JFFS2 and UBIFS
![Page 21: JFFS2 vs UBIFS - 2net.co.uk · 5 10 15 20 25 30 35 Mount time empty large files Seconds small files. Chris Simmonds 2net Ltd 23 Mount time conclusions](https://reader033.fdocuments.net/reader033/viewer/2022060603/60585cbdd468521c8313b12c/html5/thumbnails/21.jpg)
21Chris Simmonds 2net Ltd
Mount time
Mount a file system containing No files 10 files of 8MiB (partition 80% full) 10,000 files of 8KiB (partition 80% full)
![Page 22: JFFS2 vs UBIFS - 2net.co.uk · 5 10 15 20 25 30 35 Mount time empty large files Seconds small files. Chris Simmonds 2net Ltd 23 Mount time conclusions](https://reader033.fdocuments.net/reader033/viewer/2022060603/60585cbdd468521c8313b12c/html5/thumbnails/22.jpg)
22Chris Simmonds 2net Ltd
Mount speed
JFFS2 UBIFS0
5
10
15
20
25
30
35
Mount time
emptylarge filessmall files
Sec
onds
![Page 23: JFFS2 vs UBIFS - 2net.co.uk · 5 10 15 20 25 30 35 Mount time empty large files Seconds small files. Chris Simmonds 2net Ltd 23 Mount time conclusions](https://reader033.fdocuments.net/reader033/viewer/2022060603/60585cbdd468521c8313b12c/html5/thumbnails/23.jpg)
23Chris Simmonds 2net Ltd
Mount time conclusions
UBIFS mount time is constant at 0.5s JFFS2 mount time increases dramatically
Empty: 1.98s 10K small files: 30s
The JFFS2 garbage collector thread runs for up to 90s after mount Some file operations (e.g. ls *) will be blocked until
it completes
![Page 24: JFFS2 vs UBIFS - 2net.co.uk · 5 10 15 20 25 30 35 Mount time empty large files Seconds small files. Chris Simmonds 2net Ltd 23 Mount time conclusions](https://reader033.fdocuments.net/reader033/viewer/2022060603/60585cbdd468521c8313b12c/html5/thumbnails/24.jpg)
24Chris Simmonds 2net Ltd
Space efficiency
JFFS2 % overhead UBIFS % overhead106624 2.46% 98004 11.54%
Empty partition with initial size 109312 blocks of 1 KiB
Space taken by a file containing 1 MiB random data when written many small pieces and one large piece
JFFS2 UBIFSWrite size Blocks used % overhead Blocks used % overhead16 bytes 1468 43.36% 1364 33.20%1MiB 1048 2.34% 1365 33.30%
![Page 25: JFFS2 vs UBIFS - 2net.co.uk · 5 10 15 20 25 30 35 Mount time empty large files Seconds small files. Chris Simmonds 2net Ltd 23 Mount time conclusions](https://reader033.fdocuments.net/reader033/viewer/2022060603/60585cbdd468521c8313b12c/html5/thumbnails/25.jpg)
25Chris Simmonds 2net Ltd
Summary
UBIFS is faster than JFFS2 in all cases Overwhelmingly so during mount
JFFS2 makes more efficient use of space Conclusion:
Use JFFS2 on small partitions (< 16 MiB) Use UBIFS in other cases
![Page 26: JFFS2 vs UBIFS - 2net.co.uk · 5 10 15 20 25 30 35 Mount time empty large files Seconds small files. Chris Simmonds 2net Ltd 23 Mount time conclusions](https://reader033.fdocuments.net/reader033/viewer/2022060603/60585cbdd468521c8313b12c/html5/thumbnails/26.jpg)
26Chris Simmonds 2net Ltd
References
The Linux MTD, JFFS2 and UBI project http://www.linux-mtd.infradead.org/index.html