jffs2 vs ubifs - 2net.co.uk · 5 10 15 20 25 30 35 mount time empty large files seconds small...

26
Linux flash file systems JFFS2 vs UBIFS Chris Simmonds 2net Limited Embedded Systems Conference UK. 2009 Copyright © 2009, 2net Limited

Upload: others

Post on 17-Oct-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

26Chris Simmonds 2net Ltd

References

The Linux MTD, JFFS2 and UBI project http://www.linux-mtd.infradead.org/index.html