Smart Storage for Smart Mobile Devices
MetadataShow full item record
Smart mobile devices have largely evolved as primary tools for personal computing needs. There are millions of applications (or apps) for everyday tasks, such as social networking, entertainment, healthcare, and home automation. There is an increasing trend of using personal devices for work as well. Given the limited storage capacity, users quickly find the device running out of storage space. Existing cloud storage services augment storage on mobile, but they require manual data management. Therefore, efficient management of limited storage on these devices is becoming increasingly important. Yet, no systematic study has been conducted to analyze mobile storage utilization by modern apps. This work aims to study and address storage management challenges on smart mobile devices. We present the first ever large-scale and detailed measurement analysis of growing storage footprint of apps on smart mobile devices. We begin by carrying out a longitudinal study of millions of Android apps to report the increase in their installation sizes over five years. Our study reveals that modern apps have evolved as large installation packages that pose high storage demands (over 4 GB). Our comparative analysis of installation sizes of millions of modern iOS apps reveals similar findings. We further perform static code analysis of apps to report various sources of install-time storage consumption. We found that modern apps consist of not only proprietary binaries, but also third-party libraries (e.g., social media plugins) and various auxiliary files (e.g., animations, icons) to provide rich user experience. Furthermore, as apps become popular, developers pack more (up to 2x) features to engage users and monetize, resulting in big monolithic apps. Finally, despite the push from vendors to create small device-specific apps, developers create “build once, run everywhere” universal apps to target multiple hardware architecture types and demographics that consume redundant storage. We then carry out a user study with hundreds of Android participants across various age groups, demographics, and professions to analyze post-installation storage utilization behavior of mobile apps. Our findings suggest that today’s monolithic apps are not optimized for storage. Upon installation, app binaries are decompressed and optimized for performance. A typical user has hundreds of such performance-optimized apps on their device that in total consume a sizable amount of device storage. However, our storage traces reveal that users actively interact with only 10% of apps and installed features, on average, and the usage is highly correlated with the user context (e.g., day, time). Furthermore, we found that apps are not constrained by storage quota limits; developers freely abuse persistent storage by frequently creating debug logs, user analytics data, caching Cloud content for native performance, and advertisements for monetization as needed. Drawing upon our study findings, we then propose a context-sensitive quota model for automatic storage management on smart mobile devices. We present the design and implementation of our prototype platform storage for Android that performs context-aware proactive storage management. The mechanisms introduced, however, are generic and apply to all modern mobile operating systems. Storage space consumed by contextually unwanted apps/data is transparently reclaimed by employing multiple techniques, such as compression, deletion, content adaptation, deduplication, and cloud-backed hierarchical management. Reclaimed data is reconstructed proactively under predictive usage or served on-demand either by computation on the device or fetching it from the cloud. We design a novel file system framework to stack extensible storage management functionality layer as a file system in the user space. This offers app-transparency and compatibility with existing storage interfaces.