Beyond Profiling: Scaling Profiling Data Usage to Multiple Applications
Profiling techniques are used extensively at different parts of the computing stack to achieve many goals. One major goal is to make a piece of software execute more efficiently on a specific hardware platform, where efficiency spans criteria such as power, performance, resource requirements, etc. Researchers, both in academia and industry, have introduced many techniques to gather, and make use of, profiling data. However, one thing remains unchanged: making application A run more efficiently on machine 1. In this paper, we extend this criteria by asking: can profiling information of application A on machine 1 be used to make application B run more efficiently on machine 1? If so, then this means as machine 1 continues to execute more applications, it becomes better and more efficient. We present a generalized method for using profiling information gathered from the execution of programs from a limited corpus of applications to improve the performance of software from outside our corpus. As a proof of concept, we apply our technique to the specific problem of selecting the most efficient last-level-cache with which to execute an application. We were able to turn off an average of 19 blocks for selected programs from PARSEC benchmark suite and only saw an average 2.8
READ FULL TEXT