  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% of last-level-cache
blocks for selected programs from PARSEC benchmark suite and only saw an
average 2.8% increase in the rate of last-level cache misses.
