Outdated, PhD Thesis: “Rethinking the Architecture of Warehouse-Scale Computers: Online Adaptation for Efficiency and Utilization”
Online adaptation is the restructuring of an executing application to dynamically react and adapt to its execution environment using information that is only available at run-time. This information includes the dynamic application inputs, its resulting execution paths, microarchitectural events, system wide events, and with the proliferation of multicore and many-core architectures, the set of programs running simultaneously alongside the executing application. These characteristics are unpredictable and change between application runs, and indeed during a single application run.
Achieving effective online adaptation for natively executed applications has proved quite challenging [6, 34, 45, 4] and to date has not been widely adopted. Traditionally, at the binary level, a run-time layer is added that virtualizes the execution of the application by performing dynamic binary to binary translation, injecting trampolines and instrumentation into the translated code to maintain control of the application. This approach often adds high overhead and complexity to the application [33, 45, 17, 34], discouraging its use and adoption in industry and for commercial applications. We propose a new paradigm for online adaptation. We propose a lightweight approach to online adaptation that leverages current microarchitectural advances to efficiently enable online monitoring and adaptation without the complexity of binary translation or fine-grain instrumentation. Our proposed methodology takes advantage of the ubiquitous hardware performance monitors [13, 44, 3] present in modern chip micro-architectures to dynamically monitor the micro-architectural events of a chip and application behavior with negligible overhead. By leveraging these capabilities to develop an innovative lightweight online adaptation framework (Loaf) we will be able to address a number of important real-world online adaptation problems.
This proposal argues for application flexibility and ability to adapt itself to its environment or to adapt its environment to itself. We propose a mechanism to enable this, and show how it is to be applied to a number of problems in computing.
committee: