Accelerating Process Spawning via Anticipatory Kernel-Resource Allocation in Linux
- Typ der Arbeit: Masterarbeit
- Status der Arbeit: laufend
- Projekte: ParPerOS
- Betreuer: Kenny Albes, Illia Ostapyshyn, Daniel Lohmann
- Bearbeiter: Matthias Wormann

Context
Many applications perform similar routines on each start. For example, every application loads the standard C library and populates the mappings on demand. Server applications like Apache and web browsers clone their process and resolve copy-on-write (CoW) for the same pages on the same pages. Repeating the same work over and over leads to wasted CPU cycles, incurring performance and energy overhead. Can the application start be optimized by dynamically analyzing recurring behaviors and preparing the required work beforehand?
Problem
Currently, Linux misses unified infrastructure to dynamically analyze application start. Security mechanisms, such as address-space layout randomization (ASLR), further complicate the identification of recurring work. To address this, the system should be capable of gathering, normalizing, and interpreting application startup behavior. Finally, this requires means to heuristically prepare and provide resources in advance.
Goal
The goal of this thesis is three-fold:
- development of the tracing mechanism by identification relevant events (e.g., page faults, open/read/write/mmap) and context (e.g., application, memory location, files)
- deriving heuristics by identifying patterns in the gathered information
- provisioning of results of recurring work to speed up initialization. Possible optimizations might include:
- prepopulate page cache with contents of previous read()s or file-based mappings
- optimistically resolve COW for frequently forking applications (e.g., Apache, Firefox, bash)
- preallocate anonymous memory to speed up userspace allocators
- creating file descriptors in advance
The benefits of each optimization shall be evaluated using real-world applications.
Topics: Linux Kernel, Page Cache, C
