Evaluation of Flash File Systems for Large NAND Flash Memory

Similar documents
Linux flash file systems JFFS2 vs UBIFS

UBIFS file system. Adrian Hunter (Адриан Хантер) Artem Bityutskiy (Битюцкий Артём)

Update on filesystems for flash storage

UBI with Logging. Brijesh Singh Samsung, India Rohit Vijay Dongre Samsung, India

Update on filesystems for flash storage

On Benchmarking Embedded Linux Flash File Systems

There are various types of NAND Flash available. Bare NAND chips, SmartMediaCards, DiskOnChip.

File Systems for Flash Memories. Marcela Zuluaga Sebastian Isaza Dante Rodriguez

Survey of Filesystems for Embedded Linux. Presented by Gene Sally CELF

Flash Memory. Jian-Jia Chen (Slides are based on Yuan-Hao Chang) TU Dortmund Informatik 12 Germany 2015 年 01 月 27 日. technische universität dortmund

Indexing on Solid State Drives based on Flash Memory

Flash-Friendly File System (F2FS)

EUDAR Technology Inc. Rev USB 2.0 Flash Drive. with Card Reader. Datasheet. Rev. 1.0 December 2008 EUDAR 1

Flashmon V2: Monitoring Raw NAND Flash Memory I/O Requests on Embedded Linux

Design of a NAND Flash Memory File System to Improve System Boot Time

NAND Flash & Storage Media

Accelerating Server Storage Performance on Lenovo ThinkServer

Flash for Databases. September 22, 2015 Peter Zaitsev Percona

An Overview of Flash Storage for Databases

Embedded Operating Systems in a Point of Sale Environment. White Paper

Industrial Flash Storage Module

A PRAM and NAND Flash Hybrid Architecture for High-Performance Embedded Storage Subsystems

Managing the evolution of Flash : beyond memory to storage

NAND Flash FAQ. Eureka Technology. apn5_87. NAND Flash FAQ

Linux File System Analysis for IVI Systems

SATA SSD Series. InnoDisk. Customer. Approver. Approver. Customer: Customer. InnoDisk. Part Number: InnoDisk. Model Name: Date:

760 Veterans Circle, Warminster, PA Technical Proposal. Submitted by: ACT/Technico 760 Veterans Circle Warminster, PA

Best Practices for Optimizing SQL Server Database Performance with the LSI WarpDrive Acceleration Card

Effects of Memory Randomization, Sanitization and Page Cache on Memory Deduplication

Flash Memory Basics for SSD Users

Data Node Encrypted File System: Efficient Secure Deletion for Flash Memory

Configuring ThinkServer RAID 500 and RAID 700 Adapters. Lenovo ThinkServer

Configuring ThinkServer RAID 100 on the Lenovo TS430

Embedded Linux Platform Developer

Solid State Drive Architecture

COS 318: Operating Systems. Storage Devices. Kai Li and Andy Bavier Computer Science Department Princeton University

Caching Mechanisms for Mobile and IOT Devices

Computers. Hardware. The Central Processing Unit (CPU) CMPT 125: Lecture 1: Understanding the Computer

Embedded Display Module EDM6070

How to Run the MQX RTOS on Various RAM Memories for i.mx 6SoloX

Comparison of NAND Flash Technologies Used in Solid- State Storage

Technical Note. Micron NAND Flash Controller via Xilinx Spartan -3 FPGA. Overview. TN-29-06: NAND Flash Controller on Spartan-3 Overview

VoIP Laboratory B How to re flash an IP04

HTTP-FUSE PS3 Linux: an internet boot framework with kboot

The Linux Virtual Filesystem

Mini PCIe SSD - mpdm. RoHS Compliant. Product Specifications. August 15 th, Version 1.0

NAND Flash Memories. Using Linux MTD compatible mode. on ELNEC Universal Device Programmers. (Quick Guide)

Debugging A MotoHawk Application using the Application Monitor

A+ Guide to Software: Managing, Maintaining, and Troubleshooting, 5e. Chapter 3 Installing Windows

Two Parts. Filesystem Interface. Filesystem design. Interface the user sees. Implementing the interface

Speeding Up Cloud/Server Applications Using Flash Memory

AN10860_1. Contact information. NXP Semiconductors. LPC313x NAND flash data and bad block management

A Data De-duplication Access Framework for Solid State Drives

Samsung Solid State Drive RAPID mode

COS 318: Operating Systems. Storage Devices. Kai Li Computer Science Department Princeton University. (

How To Write On A Flash Memory Flash Memory (Mlc) On A Solid State Drive (Samsung)

Configuring CoreNet Platform Cache (CPC) as SRAM For Use by Linux Applications

SALSA Flash-Optimized Software-Defined Storage

io3 Enterprise Mainstream Flash Adapters Product Guide

Contents. Overview. Drive Policy RAID 500 features. Disable BGI RAID 700 features. Management Tasks Choosing the RAID Level.

QuickSpecs. PCIe Solid State Drives for HP Workstations

HP 80 GB, 128 GB, and 160 GB Solid State Drives for HP Business Desktop PCs Overview. HP 128 GB Solid State Drive (SSD)

GraySort on Apache Spark by Databricks

Maximizing Your Server Memory and Storage Investments with Windows Server 2012 R2

File System Management

Windows NT File System. Outline. Hardware Basics. Ausgewählte Betriebssysteme Institut Betriebssysteme Fakultät Informatik

A Simple Virtual FAT File System for Wear-Leveling Onboard NAND Flash Memory

Lecture 16: Storage Devices

Nasir Memon Polytechnic Institute of NYU

NAND Flash Architecture and Specification Trends

SSDs tend to be more rugged than hard drives with respect to shock and vibration because SSDs have no moving parts.

Chapter 13 Embedded Operating Systems

Data Storage Framework on Flash Memory using Object-based Storage Model

Outline. Windows NT File System. Hardware Basics. Win2K File System Formats. NTFS Cluster Sizes NTFS

File System & Device Drive. Overview of Mass Storage Structure. Moving head Disk Mechanism. HDD Pictures 11/13/2014. CS341: Operating System

Flash 101. Violin Memory Switzerland. Violin Memory Inc. Proprietary 1

Fiery Clone Tool For Embedded Servers User Guide

On Benchmarking Popular File Systems

Implementation and Challenging Issues of Flash-Memory Storage Systems

How To Test Readahead On Linux (Amd64)

Deep Dive: Maximizing EC2 & EBS Performance

Buffer-Aware Garbage Collection for NAND Flash Memory-Based Storage Systems

Embedded Multi-Media Card Specification (e MMC 4.5)

Eureka Technology. Understanding SD, SDIO and MMC Interface. by Eureka Technology Inc. May 26th, Copyright (C) All Rights Reserved

DFS: A File System for Virtualized Flash Storage

USB Flash Memory TransMemory-EX II TM

Evaluating effects of memory compressed usage on MeeGo

hybridfs: Integrating NAND Flash-Based SSD and HDD for Hybrid File System

Algorithms and Methods for Distributed Storage Networks 3. Solid State Disks Christian Schindelhauer

Solid State Drive (SSD) FAQ

ADVANCED PROCESSOR ARCHITECTURES AND MEMORY ORGANISATION Lesson-17: Memory organisation, and types of memory

SSDs tend to be more rugged than hard drives with respect to shock and vibration because SSDs have no moving parts.

ELCE Secure Embedded Linux Product (A Success Story)

USB Flash Drive. RoHS Compliant. AH321 Specifications. June 4 th, Version 1.4. Apacer Technology Inc.

Accessing I2C devices with Digi Embedded Linux 5.2 example on Digi Connect ME 9210

Transcription:

Evaluation of Flash File Systems for Large NAND Flash Memory TOSHIBA CORPORATION Embedded System Technology Development Dept. Core Technology Center Toru Homma 4/6/29 CELF Embedded Linux Conference Copyright 29, Toshiba Corporation.

Agenda Background Purpose File system software block Overview of the different Flash file systems Testing environment Benchmark result Summary References Evaluation of Flash File Systems for Large NAND Flash Memory 2

Background NAND flash memory is commonly used in embedded systems. The falling price of NAND device encourages us to use large memories (e.g. Larger than 128MB). Limitations of bare NAND flash memory devices Block erasure finite number of erase- cycles (~1K cycles and MLC is less) Normal operations Bit flip possibilities Important to use suitable file system There are some cases for previous file systems that do not fit large NAND systems. Defining system requirements and then breaking them down to individual benchmark items. Comparing each file system. Evaluation of Flash File Systems for Large NAND Flash Memory 3

Purpose System requirements for digital consumer products Flash file system benchmark items 1. Fast boot time 2. High I/O performance 3. Low memory consumption 4. Long NAND device life expectancy 5. Tolerance for unexpected power loss a. Mounting time b. tiobench c. Module size d. RAM consumption e. Actual storage capacity f. Wear-leveling g. Recoverability for unexpected power loss Evaluation of Flash File Systems for Large NAND Flash Memory 4

Flash file system software block System Call I/F VFS ext2 / FAT JFFS2 YAFFS2 LogFS UBIFS UBI Block Device HDD MTD device, MTD API NAND NOR DataFlash AG-AND OneNAND ECC d NOR Flash memory VFS: Virtual File System MTD: Memory Technology Device Evaluation of Flash File Systems for Large NAND Flash Memory 5

Overview of the different Flash file systems JFFS2 : Journaling Flash File System version 2 (David Woodhouse) Has been integrated in Linux kernel since 21. Commonly used for low volume flash devices. Compression is supported. YAFFS2 : Yet Another Flash File System version 2 (Charles Manning) YAFFS is the first file system designed specifically for NAND (since 21). Version 2 supports 2KB large page NAND (since 25). Compression is not supported. LogFS : Log Flash File System (Jörn Engel) Mounting time is short (since 25) Under development (Needs more testing on large devices) User data is not compressed, while meta data is compressed. (Jörn said that user data is also compressed in ELC29, but we could not see it in our testing. We used the default settings.) UBIFS : Unsorted Block Image File System (Artem Bityutskiy, Adrian Hunter) Mainlined in 2.6.27 in Oct 28. Works on top of UBI volumes. Compression is supported. Evaluation of Flash File Systems for Large NAND Flash Memory 6

Testing environment Software Vanilla kernel + Original patch for embedded systems Linux kernel : 2.6.27.9 (JFFS2, YAFFS2, UBIFS), 2.6.25.1 (LogFS) NAND driver : ECC is done by software. Hardware Board : Digital product development board CPU MIPS 327 MHz (I$/D$ : 64 KB/64 KB) RAM (Kernel) 256 MB (32MB) Bus 8 bit NAND NAND performance (MTD character device direct access) Erase 1.61 Regions Data Out of band Total size 256 MB 8 MB Erasing block 128 KB 4 KB Page 2 KB 64 B Sub-page 512 B 16 B Read 2.5 Write 2. [MB/s] Evaluation of Flash File Systems for Large NAND Flash Memory 7

Benchmark result Fast boot time (a) Mounting time Mounting time is important for boot time. Comparing the NAND device iness Time taken from device mount to completion of ls command. Comparing 4 patterns of NAND device used % (MB), 25% (64MB), 5% (128MB), 75% (192MB) One file is stored for each case. Configurations Following settings are used for making the same conditions: JFFS2 YAFFS2 LogFS UBIFS No compression Default Default No compression Evaluation of Flash File Systems for Large NAND Flash Memory 8

Benchmark result Fast boot time (cnt d) (a) Mounting time (cnt d) Mounting time [sec] 2 15 1 5 JFFS2 YAFFS2 LogFS UBIFS JFFS2 YAFFS2 LogFS UBIFS JFFS2 YAFFS2 LogFS UBIFS JFFS2 YAFFS2 LogFS UBIFS ls mount Scan takes time for JFFS2 mounting time. It takes 18sec for the 75% case. YAFFS2, LogFS, and UBIFS are within.4 sec. YAFFS2 mounting time increases linearly in terms of the capacity of NAND device used. Better % 25% 5% 75% Capacity of NAND device used LogFS stores the tree structure in the flash device so that mounting time does not depend on the used capacity. UBIFS mounting time is not affected by the used capacity. UBI initialization time linearly depends on the number of PEB, which does not affect on this testing. Mounting time [sec].5.4.3.2.1 Better JFFS2 YAFFS2 LogFS UBIFS JFFS2 YAFFS2 LogFS UBIFS JFFS2 YAFFS2 LogFS UBIFS JFFS2 YAFFS2 LogFS UBIFS % 25% 5% 75% Capacity of NAND device used ls mount Evaluation of Flash File Systems for Large NAND Flash Memory 9

Benchmark result I/O performance (b) Tiobench Read/ throughput w/ 128KB block size Tiobench parameters : 1 th, no sync, 192MB for sequential 64MB for. UBIFS has the highest throughput because of -back caching support. LogFS was unstable the system froze sometimes. Read/Write throuput [MB/s] Better 16 14 12 1 8 6 4 2 JFFS2 YAFFS2 LogFS UBIFS configurations JFFS2 YAFFS2 LogFS UBIFS Compression Default Default Compression Evaluation of Flash File Systems for Large NAND Flash Memory 1

Benchmark result I/O performance (cnt d) (b) Tiobench Read/ throughput w/ 256B block size Setting I/O block size to a half of NAND sub-page. The throughput is lower in general. UBIFS is good for sequential / due to -back caching support. YAFFS2 is good for sequential / because of the local buffer. Read/ Rate throughput [MB/s] [MB/s] Better 1 9 8 7 6 5 4 3 2 1 JFFS2 YAFFS2 LogFS UBIFS configurations JFFS2 YAFFS2 LogFS UBIFS Compression Default Default Compression Evaluation of Flash File Systems for Large NAND Flash Memory 11

Benchmark result I/O performance (cnt d) (b) Tiobench Read/ latency w/ 128KB block size UBIFS has the lowest latency for average case. UBIFS has high latency for max case because of flushing cached data. LogFS has the highest latency for max case because of error. 6 Read/ latency[msec] Ave. Max. 5 4 3 2 Better 1 JFFS2 YAFFS2 LogFS UBIFS configurations JFFS2 YAFFS2 LogFS UBIFS Compression Default Default Compression Evaluation of Flash File Systems for Large NAND Flash Memory 12

Benchmark result I/O performance (cnt d) (b) Tiobench Read/ latency w/ 256B block size Moving PEB before writing needs more time in case the writing block is smaller than sub-page. Read/ [msec] latency [msec] Better 4 35 3 25 2 15 1 5 Ave. Max. JFFS2 YAFFS2 LogFS UBIFS Evaluation of Flash File Systems for Large NAND Flash Memory 13

Benchmark result I/O performance (b) Write latency in terms of time and left space 8 Writing 128KB data up to the capacity limit. Writing latency [sec] 7 6 5 4 3 2 1 Better 1 187 373 559 745 931 1117 133 1489 1675 1861 247 Block number JFFS2 UBIFS YAFFS2 YAFFS2and UBIFS have peaks of latency when the left space becomes less. One of the reasons is the garbage collection. UBIFS supports -back, thus the cached data has to be flushed. This will cause some latency periodically. LogFS could not be measured because of error. Writing latency [sec] Better 2 1.5 1.5 1 192 383 574 765 956 1147 1338 1529 172 1911 Block number JFFS2 UBIFS YAFFS2 Evaluation of Flash File Systems for Large NAND Flash Memory 14

Benchmark result Memory consumption (c) Module size UBIFS plus UBI is the largest 25KB. LogFS is the smallest 5KB. This difference is not a big deal for some systems. 3 25 2 15 Module [KB] size [KB] UBI UBIFS Better 1 5 JFFS2 YAFFS2 LogFS UBIFS+UBI Evaluation of Flash File Systems for Large NAND Flash Memory 15

Benchmark result Memory consumption (d) RAM consumption Measuring the RAM consumption in terms of the following cases: - 3 patterns of the file size (, 1MB, 1MB) - 3 patterns of the number of files (, 124 of 1KB files (1MB), 124 of 1KB files (1MB)) Conditions: JFFS2 YAFFS2 LogFS UBIFS No compression Default Default No compression Evaluation of Flash File Systems for Large NAND Flash Memory 16

Benchmark result Memory consumption (d) RAM consumption Measuring the RAM consumption in terms of the following cases: - 3 patterns of the file size (, 1MB, 1MB) RAM consumption does not depend on the file size. UBIFS > JFFS2 > YAFFS2 > LogFS 6 5 [KB] Better 4 3 2 1 MB 1MB 1MB JFFS2 YAFFS2 LogFS UBIFS Evaluation of Flash File Systems for Large NAND Flash Memory 17

Benchmark result Memory consumption (d) RAM consumption Measured the RAM consumption in terms of the following cases: - 3 patterns of the number of files (, 124 of 1KB files (1MB), 124 of 1KB files (1MB)) RAM consumption increases linearly in terms of the number of files. Memory usage per one file : UBIFS > YAFFS2 > JFFS2 LogFS could not be measured due to the error. 12 1 [KB] Better 8 6 4 2 個 124 124 個 124 個 JFFS2 YAFFS2 LogFS UBIFS Evaluation of Flash File Systems for Large NAND Flash Memory 18

Benchmark result Memory consumption (e) Actual storage capacity Writing a single file to see how much data could be written. YAFFS2 can have the largest user data region. UBIFS needs the most meta data region. JFFS2 YAFFS2 LogFS User data Meta data UBIFS % 1% 2% 3% 4% 5% 6% 7% 8% 9% 1% NAND data region Better JFFS2 YAFFS2 LogFS UBIFS No compression Default Default No compression Evaluation of Flash File Systems for Large NAND Flash Memory 19

Benchmark result NAND chip life expectancy (f) Wear-leveling Testing scenario : - No compress options for JFFS2 and UBIFS. - Partition 1 (128MB) is used for the given file system. - Read-only data is stored in partition 1. - Test tool to 5MB data and erase it continuously. - Counting how many each PEB was erased. NAND (256 MB) Target File System Partition 1 128 MB Partition 2 64 MB Part.3 32 MB Part.4 32 MB LogFS could not be tested because of error. Evaluation of Flash File Systems for Large NAND Flash Memory 2

Benchmark result NAND chip life expectancy Changed source code in JFFS2 for wear leveling test [fs/jffs2/erase.c] static void jffs2_erase_succeeded(struct jffs2_sb_info *c, struct jffs2_eraseblock *jeb) { D1(printk(KERN_DEBUG "Erase completed successfully at x%8x n", jeb->offset)); + #ifdef JFFS2_DEBUG_WL_COUNT + { + unsigned int eraseblock_number = (unsigned int)(jeb->offset/jffs2_debug_wl_eb_size); + jffs2_wl_log.erase_count[eraseblock_number]++; + } + #endif } mutex_lock(&c->erase_free_sem); spin_lock(&c->erase_completion_lock); list_move_tail(&jeb->list, &c->erase_complete_list); spin_unlock(&c->erase_completion_lock); mutex_unlock(&c->erase_free_sem); /* Ensure that kupdated calls us again to mark them clean */ jffs2_erase_pending_trigger(c); Evaluation of Flash File Systems for Large NAND Flash Memory 21

Benchmark result NAND chip life expectancy Changed source code in YAFFS2 for wear leveling test [fs/yaffs2/yaffs_mtdif.c] int nandmtd_eraseblockinnand(yaffs_device * dev, int blocknumber) { struct mtd_info *mtd = (struct mtd_info *)(dev->genericdevice); u32 addr = ((loff_t) blocknumber) * dev->ndatabytesperchunk * dev->nchunksperblock; struct erase_info ei; int retval = ; : : /* Todo finish off the ei if required */ sema_init(&dev->sem, ); retval = mtd->erase(mtd, &ei); if (retval == ) + { + #ifdef YAFFS2_DEBUG_WL_COUNT + yaffs2_wl_log.erase_count[blocknumber]++; + #endif return YAFFS_OK; + } else return YAFFS_FAIL; } Evaluation of Flash File Systems for Large NAND Flash Memory 22

Benchmark result NAND chip life expectancy Changed source code in LogFS for wear leveling test. [fs/logfs/dev_mtd.c] static int mtd_erase(struct super_block *sb, loff_t ofs, size_t len) { struct mtd_inode *mi = logfs_super(sb)->s_mtd; struct mtd_info *mtd = mi->mtd; struct erase_info ei; DECLARE_COMPLETION_ONSTACK(complete); int ret; BUG_ON(len % mtd->erasesize); if (logfs_super(sb)->s_flags & LOGFS_SB_FLAG_RO) return -EROFS; : : : wait_for_completion(&complete); if (ei.state!= MTD_ERASE_DONE) return -EIO; + #ifdef LOGFS_DEBUG_WL_COUNT + { + u_int32_t eraseblock_number = ((u_int32_t)ofs / mtd->erasesize); + logfs_wl_log.erase_count[eraseblock_number]++; + } + #endif } return ; Evaluation of Flash File Systems for Large NAND Flash Memory 23

Benchmark result NAND chip life expectancy Changed source code in UBIFS for wear leveling test. [drivers/mtd/ubi/wl.c] static int sync_erase(struct ubi_device *ubi, struct ubi_wl_entry *e, int torture) { int err; struct ubi_ec_hdr *ec_hdr; unsigned long long ec = e->ec; : : ec += err; if (ec > UBI_MAX_ERASECOUNTER) { /* * Erase counter overflow. Upgrade UBI and use 64-bit * erase counters internally. */ ubi_err("erase counter overflow at PEB %d, EC %llu", e->pnum, ec); err = -EINVAL; goto out_free; } dbg_wl("erased PEB %d, new EC %llu", e->pnum, ec); + #ifdef UBI_DEBUG_WL_COUNT + ubi_wl_log.erase_count[e->pnum]++; + #endif ec_hdr->ec = cpu_to_be64(ec); : : Evaluation of Flash File Systems for Large NAND Flash Memory 24

Benchmark result NAND chip life expectancy (cont d) YAFFS2 YAFFS2 does not support static wear leveling. Read-only data sits there. Erasing count Up to 1GB 16 14 12 1 8 6 4 2 Erasing count Up to 3GB 16 14 12 1 YAFFS2 8 6 4 2 1 163 325 487 649 811 973 1135 1297 1459 1621 1783 1945 Blcok number Erasing count Up to 5GB 16 14 12 1 8 6YAFFS2 4 2 1 163 325 487 649 811 973 1135 1297 1459 1621 1783 1945 Block number YAFFS2 1 163 325 487 649 811 973 1135 1297 1459 1621 1783 1945 Block number YAFFS2 does not support global wear leveling. Blocks outside the partition does not participate. Evaluation of Flash File Systems for Large NAND Flash Memory 25

Benchmark result NAND chip life expectancy (cont d) Erasing count 16 14 12 1 8 6 4 2 JFFS2 JFFS2 supports static wear leveling. - Static data has been moved. Up to 1GB Erasing count Up to 3GB 16 14 12 JFFS2 1 8 1 163 325 487 649 811 973 1135 1297 1459 1621 1783 1945 6 4 2 Block number Erasing count Up to 5GB 16 14 12 1 8 6 JFFS2 4 2 1 163 325 487 649 811 973 1135 1297 1459 1621 1783 1945 Block number JFFS2 1 163 325 487 649 811 973 1135 1297 1459 1621 1783 1945 Block number JFFS2 does not support global wear leveling. Blocks outside the partition does not participate. Evaluation of Flash File Systems for Large NAND Flash Memory 26

Benchmark result NAND chip life expectancy (cont d) Erasing count 16 14 12 1 UBIFS UBIFS supports static wear leveling. In addition, wear leveling threshold can be configured. Up to 1GB 8 6 4 2 Up to 3GB 12 UBIFS 1 Erasing count 16 14 1 163 325 487 649 811 973 1135 1297 1459 1621 1783 1945 8 6 4 2 Block number Up to 5GB Erasing count 16 14 12 1 8 6 UBIFS 4 2 1 164 327 49 653 816 979 1142 135 1468 1631 1794 1957 Block number UBIFS 1 164 327 49 653 816 979 1142 135 1468 1631 1794 1957 Block number UBIFS does support global wear leveling. - Blocks outside the partition participates in wear leveling. - By mapping LEBs onto PEBs. Evaluation of Flash File Systems for Large NAND Flash Memory 27

Benchmark result NAND chip life expectancy (cont d) Wear leveling details Erasing count per PEB UBIFS erasing count is distributed evenly in terms of the blocks. JFFS2 varies more than the other file systems. Erasing count 16 14 12 1 8 6 4 2 YAFFS2 JFFS2 UBIFS Erasing count 16 14 12 1 8 6 4 2 1 164 327 49 653 816 979 1142 135 1468 1 1631 164 1794 327 1957 49 653 816 979 1142 135 1468 1 1631 164 1794 327 1957 49 653 816 979 1142 135 1468 Block number Block number Block number Erasing count 16 14 12 1 8 6 4 2 Evaluation of Flash File Systems for Large NAND Flash Memory 28

Benchmark result Tolerance for unexpected power loss (g) Recoverability for unexpected power loss Counting mounting failure after unexpected power loss during the NAND device access. Configurations: JFFS2 YAFFS2 LogFS UBIFS Compression Default Default Compression LogFS failed about 2% of trials. Needs more testing than 1 times trial. Mounting failure after power off during the NAND device access JFFS2 UBIFS YAFFS2 LogFS 2 (1 times trial) Evaluation of Flash File Systems for Large NAND Flash Memory 29

Summary Criteria for large NAND flash integrated systems UBIFS and YAFFS2 are good in general. UBIFS is in the mainline, which makes the maintenance cost lower. LogFS is under development and needs more work. System requirement JFFS2 YAFFS2 LogFS UBIFS 1 Boot time Poor Good Excellent Good 2 I/O performance Good Good Fair Excellent 3 Resource usage Fair Excellent Good Fair NAND device life 4 expectancy Good Fair N/A Excellent Tolerance for 5 unexpected poweroff Good Good Poor Good Integrated in 6 mainline Yes No No Yes Evaluation of Flash File Systems for Large NAND Flash Memory 3

Summary System models to fit each file system System requirements for each file system Appropriate type of system Improvements that will adapt your system to a particular file system JFFS2 YAFFS2 LogFS UBIFS Not dedicated to fast boot. To make small partitions. Little room for RAM or flash devices. To not data often. To make the static data less. To make applications to handle static wear leveling. Dedicated to fast boot. Not dedicated to high I/O performance. Having applications to frequently on lifetime sensitive flash memories (e.g. MLC). Dedicated to high I/O performance. To have more room for RAM and flash. To not data continuously until the cache overflow. MLC: Multi Level Cell Evaluation of Flash File Systems for Large NAND Flash Memory 31

Summary NAND flash device capacity is getting larger in consumer products. Showing which file system is to fit which system. Showing how to adapt your system to a particular file system. Improvement possibilities : YAFFS2 : to support static wear leveling. LogFS : to make it more stable in case of large NAND. UBIFS : to arrange the flushing of data to control latency. Evaluation of Flash File Systems for Large NAND Flash Memory 32

References This presentation is based on Shinji Namihira (Toshiba), Examination of Linux Flash Filesystems for large NAND, the 71st National Convention of IPSJ, 29 MTD, JFFS2, UBIFS, UBI YAFFS2 LogFS http://www.linux-mtd.infradead.org/ http://www.yaffs.net/ http://www.logfs.com/logfs/ CE Linux Forum presentations Yutaka Araki, Flash File system, current development status http://www.celinuxforum.org/celfpubwiki/japantechnicaljamboree2?action= AttachFile&do=view&target=celf_flashfs.pdf Katsuki Uwatoko, The comparison of Flash File system performance http://www.celinuxforum.org/celfpubwiki/japantechnicaljamboree19?action= AttachFile&do=get&target=celf_flash2.pdf Keijiro Yano, JFFS2 / YAFFS http://www.celinuxforum.org/celfpubwiki/japantechnicaljamboree17?action= AttachFile&do=view&target=celf_flashfs.pdf Evaluation of Flash File Systems for Large NAND Flash Memory 33

Evaluation of Flash File Systems for Large NAND Flash Memory 34