A fast fsync() design for F2FS in flash-based Android devices

碩士 === 國立交通大學 === 資訊科學與工程研究所 === 104 === Nowadays, more and more users start to use hand-held device. They care about not only the price but also the application performance. Therefore, programmers always try their best to improve application performance and concern other design issues. To maintai...

Full description

Bibliographic Details
Main Authors: Chen, Po-Tsang, 陳柏蒼
Other Authors: Chang, Li-Ping
Format: Others
Language:zh-TW
Published: 2015
Online Access:http://ndltd.ncl.edu.tw/handle/31740391112227808323
Description
Summary:碩士 === 國立交通大學 === 資訊科學與工程研究所 === 104 === Nowadays, more and more users start to use hand-held device. They care about not only the price but also the application performance. Therefore, programmers always try their best to improve application performance and concern other design issues. To maintain the consistency of data, many popular applications manage their data using SQLite. However, Recent research pointed out that the SQLite involves frequent file synching operations (i.e., fsync() calls). Fsync() calls have many shortcomings which may degree the application performance: First, fsync() is a blocking call that applications could suffer from poor response if the fsync() implementation is inefficient. Second, fsync() is a synchronous call that would cause a lot of small-sized and random write operations. These write operations might incur frequent garbage collections as well as shorten the lifetime of flash-storage-based Android device. This work purposes an efficient design of fsync() called eager synching. We have implemented eager synching on F2FS file system. By increasing the size of average block request and decreasing write streams, we can alleviate I/O overhead and improve write sequential ratio respectively. Besides, the lifetime of the underlying NAND flash storage would be extended by reducing block write traffic. We conducted a series of experiments on Google Nexus 7 tablet. Our experimental results show that, under the workloads of popular Android applications, the average and max fsync() latencies were reduced by up to 68% and 82%, respectively, and the block-level write traffic was reduced by up to 20%.