IEEE Access (Jan 2018)
iFetcher: User-Level Prefetching Framework With File-System Event Monitoring for Linux
Abstract
Applications face additional latency when they launch or access a disk to load data into the memory. In this paper, a user-level disk prefetching framework, called iFetcher, is introduced to hide this delay in Linux-based operating systems. This employs an inode-notification (inotify) application programming interface (API), which provides an efficient method of tracing operations in a Linux file system, and reports these events to applications in real time. During an initial training run, iFetcher traces the pattern with which data are read by an application. Subsequently, it searches the areas directly ahead of passages where it is requested that a lot of data are read, and locates events that can be used to trigger preloading. When the application is run again and a trigger event is reported (by the inotify API), the corresponding data are read into the page cache prior to actual demand. iFetcher has a low overhead, because disk reads are only need to be monitored during training. Furthermore, it does not require any modifications to the Linux kernel, because it runs at the user level. Five benchmark applications were run on a PC using a solid-state drive, and results demonstrated that iFetcher reduced the launch times by up to 41% and postlaunch data loading times by up to 9%.
Keywords