Abstract

In mobile systems, such as smartphones, most of storage writes are incurred by the SQLite database (DB) system. These writes consist of two parts: writes to original data (e.g., SQLite DB file) and journaling-induced writes. In this paper, we first report our observations on the characteristics of these writes: (1) journaling writes dominate storage write, (2) overwrites are frequent in mobile storage, and most importantly, and (3) those overwrites change only a small portion of data. Based on these observations, we propose to employ small capacitor-backed nonvolatile write buffer and use it to durably store small writes without journaling. This allows us to completely avoid journal writes for those small writes, which contributes to significant reduction in journaling-induced writes while still providing the same level of data consistency and durability. In our mechanism, it is critical to minimize the capacity of nonvolatile write buffer so that the backing capacitor does not violate stringent resource/size requirements of mobile systems. Therefore, we propose three optimizations that make the best use of small write buffer: (1) write buffer that manages only the difference between old and new data, (2) a dynamic method to determine which data to store in the write buffer, and (3) an incremental flush policy, which controls the number of write buffer entries to be flushed. The experimental results show 92.4% and 85.1% storage write reductions on average when running single and multiple mobile applications, respectively, with only 8 KB write buffer and a tiny capacitor.

Full Text
Published version (Free)

Talk to us

Join us for a 30 min session where you can share your feedback and ask us any queries you have

Schedule a call