  Many modern software systems are highly configurable, allowing the user to
tune them for performance and more. Current performance modeling approaches aim
at finding performance-optimal configurations by building performance models in
a black-box manner. While these models provide accurate estimates, they cannot
pinpoint causes of observed performance behavior to specific code regions. This
does not only hinder system understanding, but it also complicates tracing the
influence of configuration options to individual methods.
  We propose a white-box approach that models configuration-dependent
performance behavior at the method level. This allows us to predict the
influence of configuration decisions on individual methods, supporting system
understanding and performance debugging. The approach consists of two steps:
First, we use a coarse-grained profiler and learn performance-influence models
for all methods, potentially identifying some methods that are highly
configuration- and performance-sensitive, causing inaccurate predictions.
Second, we re-measure these methods with a fine-grained profiler and learn more
accurate models, at higher cost, though. By means of 9 real-world Java software
systems, we demonstrate that our approach can efficiently identify
configuration-relevant methods and learn accurate performance-influence models.
