论文部分内容阅读
现代处理器一般只内置了少数的性能计数器,但是程序员往往需要捕捉十分大量的微体系结构硬件事件。这些性能计数器在记录硬件事件的过程中,随着时间推移,产生了几个GB甚至几个TB的数据,尤其在云计算的环境下,数以千计的服务器和数以亿计的负载应用使得结果更甚。云环境下的性能大数据,可以用于分析性能瓶颈根源,应用程序性能调优,以及编译器优化等等。但是,从这些大数据中提取有价值的信息面临着许多挑战,主要原因有:1)数据质量不高。性能计数器在采集性能数据的过程中,往往为了提高采样效率而损失了数据质量,产生了譬如缺失值和异常值等问题。2)数据信息难以理解。由于云应用的多样性、应用请求的实时多变性等特点,硬件事件信息量呈爆炸性增长。性能计数器所记录到的关于各种硬件事件的信息数据晦涩难懂。由此,本文提出CounterMiner,一个云平台上的性能数据智能挖掘系统,借助于性能计数器性能监测工具,对大量硬件事件的表现进行语义分析,寻找事件模式,从而有效地度量和理解云平台上的性能大数据。本文的主要贡献如下:1、数据整合。使用数据预处理技术对硬件事件做拼接、对齐、归一化等操作。2、硬件事件提纯。基于机器学习的方法对事件进行重要性的量化,用迭代排序的方法不断约简事件空间。3、硬件事件的内在联系。硬件事件之间具有强烈的相关性,通过一些度量方法探测其潜在的相互作用联系。本文通过性能计数器采集到的229个硬件事件,挖掘了8个基准测试程序上的表现特征。为了验证CounterMiner的有效性,本文找出与特定硬件事件紧密相关的Spark配置参数,用于Spark系统应用层和体系结构层的交叉性能优化。实验结果表明:1)一系列Spark程序具有共性与个性的表现特征;2)基于硬件事件重要性指导下的Spark参数调优性能比传统的参数自动调优方法在性能上提高了20%。