返回
Towards On-the-Fly Code Performance Profiling
DOI:10.1145/3725212.png)
摘要
En 中文
提升软件应用程序性能是软件演进和维护中最重要的任务之一。在Intel微架构中,CPU采用流水线技术以尽可能有效地利用资源。某些类型的软件模式或算法可能对底层CPU流水线产生影响,导致效率低下。因此,在运行应用程序时分析CPU流水线的利用情况对于软件性能分析至关重要。现有技术,如Intel VTune Profiler,通常在软件进入生产环境并在运行期间,通过CPU流水线指标检测软件性能问题。这些技术要求开发人员手动分析监控数据并执行额外的测试运行以获取有关性能问题的相关信息。这耗费开发人员在构建、部署、测试、执行和监控软件方面的大量时间和人力。为缓解这些问题,我们提出了一种名为PGPROF的新方法,用于在执行前预测CPU流水线并在开发过程中提供分析反馈。PGPROF利用图神经网络学习C函数的语义和结构表示,然后在开发过程中预测它们的各类流水线槽位占比。针对给定代码片段,我们将不同类型的代码结构(如抽象语法树AST、数据流图DFG和控制流图CFG)融合为一个程序图。在离线学习中,我们首先利用门控图神经网络捕捉C函数的表示。PGPROF随后根据学习到的语义和结构特征自动估计最终的流水线值。对于在线预测,我们利用离线训练的模型预测四类流水线指标值。我们从GitHub上的C项目构建数据集,并使用Intel VTune Profiler通过运行它们获取分析信息。广泛的实验结果表明了我们模型的良好性能。我们在Acc@5%和Acc@10%指标上分别达到了49.90%和79.44%的绝对结果,相较于一系列基线方法,改进幅度分别为8.0%-42.7%和7.8%-20.1%。
Keyword:
pipeline utilization
software performance analysis
graph neural networks
code profiling
machine learning for software engineering
期刊
A
IF:
6.2
论文数:
1.2K
被引数:
3.4K

