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.
翻译:许多现代软件系统是高度可配置的,使用户能够根据性能和更高程度调整这些系统。目前的性能模型方法旨在通过以黑盒方式建立性能模型来寻找性能最佳配置。这些模型提供了准确的估计数,但无法确定特定代码区域观察到性能行为的原因。这不仅妨碍系统理解,而且使跟踪配置选项对个别方法的影响复杂化。我们提出了一个白箱方法,在方法层面模型配置性能行为,使我们能够预测配置决定对个别方法的影响,支持系统理解和性能调试。这个方法由两个步骤组成:首先,我们使用粗略的剖析剖面仪,学习所有方法的性能影响模型,可能确定一些高度配置性和性能敏锐的方法,造成不准确的预测。第二,我们用精细的剖面仪重新测量这些方法,并以更高的成本来学习更精确的模型。但通过9个真实世界的Java软件系统,我们证明我们的方法可以有效地识别配置相关方法,并学习准确的性能影响模型。