CN101604287A - 一种基于硬件计数器获取性能数据实现动态优化服务器性能的方法 - Google Patents

一种基于硬件计数器获取性能数据实现动态优化服务器性能的方法 Download PDF

Info

Publication number
CN101604287A
CN101604287A CNA2009100170603A CN200910017060A CN101604287A CN 101604287 A CN101604287 A CN 101604287A CN A2009100170603 A CNA2009100170603 A CN A2009100170603A CN 200910017060 A CN200910017060 A CN 200910017060A CN 101604287 A CN101604287 A CN 101604287A
Authority
CN
China
Prior art keywords
performance
level
data
optimization
carry out
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CNA2009100170603A
Other languages
English (en)
Inventor
王友升
乔鑫
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Inspur Electronic Information Industry Co Ltd
Original Assignee
Langchao Electronic Information Industry Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Langchao Electronic Information Industry Co Ltd filed Critical Langchao Electronic Information Industry Co Ltd
Priority to CNA2009100170603A priority Critical patent/CN101604287A/zh
Publication of CN101604287A publication Critical patent/CN101604287A/zh
Pending legal-status Critical Current

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

本发明提供一种基于硬件计数器获取性能数据实现动态优化服务器性能的方法,该方法是首先通过应用软件的运行建立一个测试基准,然后根据硬件计数器收集的性能数据,从微架构级进行分析造成应用软件性能低下的原因,然后采用intel编译器,进行微架构级的优化,当完成转移微架构级性能后,再进行系统级性能优化,系统级性能优化完成后,再在相同条件下重新运行应用软件并与以前的基准进行比较确保性能提升,直到服务器性能表现满足用户需求为止,通过应用软件的运行,抓取微架构级、系统级性能数据,迅速定位应用软件的热点,通过分析造成热点的原因,消除热点瓶颈,从而达到优化Intel服务器平台目的。

Description

一种基于硬件计数器获取性能数据实现动态优化服务器性能的方法
技术领域
本发明涉及一种计算机应用技术,具体的说就是一种通过硬件计数器来抓取应用软件运行时系统的性能数据,并根据系统性能数据进行分析,消除造成系统平台性能瓶颈,从而达到动态优化服务器平台的方案。
背景技术
当前,衡量一个服务器性能高低的一个重要指标在于在目标服务器上运行的应用软件的性能表现。高性能不仅意味着问题求解时间的减少和开销的节约,还使某些对时间紧迫的任务变得可能。因此,应用程序实际性能的提高是人们非常关心的问题,大规模科学计算程序更是需要针对目标平台进行高度的性能优化。现代高性能微处理器广泛采用多流出、深度流水、乱序执行、自动动态前瞻等技术,再加上多级存储层次的使用,大大提高了性能。但是程序实际获得性能与机器峰值性能之间却相差很远,简单的说,就是高配置的机器在实际的业务运行时未必能表现出高的性能。
现有的优化方案中,基本上都是进行静态的优化分析和模型模拟方法,其中静态分析方法过度的依赖于系统性能函数获取性能数据进行分析,而系统性能函数过多的依赖于很多变量(系统结构、数组大小、数值算法等),其准确性值得推敲,而模型模拟方法它的执行速度比实际应用速度慢很多,而且也难以在编译时应用,另外由于对计算机系统难于完全模拟的困难,其准确性更难以保证。基于以上这些原因,我们提出了一种基于硬件计数器的动态服务器性能优化方案,它的组成模块主要是:开发环境,Intel编译器,Intel Vtune工具组成。
发明内容
本发明的目的是提供一种基于硬件计数器获取性能数据,进行优化服务器平台的方法。
本发明的目的是按以下方式实现的,首先通过应用软件的运行建立一个测试基准,然后根据硬件计数器收集的性能数据,从微架构级进行分析造成应用软件性能低下的原因,然后采用intel编译器,进行微架构级的优化,当完成转移微架构级性能后,再进行系统级性能优化,系统级性能优化完成后,再在相同条件下重新运行应用软件并与以前的基准进行比较确保性能提升,直到服务器性能表现满足用户需求为止。
系统包括一级缓存命中率,二级缓存命中率,二级缓存传输到一级缓存繁忙程度,充分利用处理器多流出、深度流水、乱序执行、自动动态前瞻的技术进行编译器优化,来转移微架构级热点;然后通过Trace收集器,利用Trace收集器中的分析器分析Trace文件,确定系统级热点原因,通过调试工具进行分析进行代码的修改,修改完成后重新编译生成运行质量高的可执行文件;具体动态优化步骤如下:
1)创建一个benchmark:作为性能调整的目标,调整以后,性能还不如以前,则表明所做的调整是不正确的;
2)收集性能分析数据:Vtune提供了多种数据收集器,采用硬件计数器进行收集;
3)进行数据分析,查找性能问题,利用收集的数据进行深入分析,查找系统和应用代码的热点区,即,系统或者应用代码中最消耗时间的部分,Vtune性能分析工具提供了各种不同的视图,以方便对收集数据进行分析,包括system_wide视图,函数视图,通过这些视图,识别关键模块和函数,进而查看源代码或相关的视图;
4)定位应用问题或者系统问题:是应用问题需要进行代码的重写,并再次测试看性能是否有提高,是系统级的问题,则考虑更换硬件提高代码性能;
5)是否定位到问题:同前面创建的benchmark进行比较,性能有提高并且满足用户的需求,就表明优化成功,性能仍然不能满足要求,则要考虑收集的其他数据,以进行更深入的分析;
6)分析性能是否满足要求:分析数据,确认应用程序的性能提高最大化,循环进行多次分析,直到移出所有瓶颈为止。
本发明的优异效果是:使用硬件计数器进行数据的收集,极大地增强了profiling数据的质量与可靠性,扩展了可以独立或者相关联测量的事件集合,速度快,系统开销很小;一般能进行全系统范围的profile,并能够对不同粒度的程序单元进行profiling。基于硬件计数器的profiling是实现服务器性能动态优化的基础。例如,cache优化经常要求程序数据访问的详细的时间信息,传统的获取这种信息的技术非常昂贵,在动态优化系统中难以使用,而基于硬件计数器的profiling开销很小且数据准确,能满足动态优化系统的要求。
基于硬件计数器获取性能数据实现动态优化服务器性能的技术方案,该发明选择了静态优化分析速度快,在应用软件编译时便于调整参数的优点,同时又抛弃了静态分析过于依赖性能函数获取性能数据准确性差的特点,而采取了一种基于硬件计数器获取性能数据的动态优化技术方案。即适合于应用软件开发的前期,迅速找到系统性能瓶颈,使系统性能瓶颈消除来业务平台运行的萌芽当中的场合,又适合于系统平台的后期维护当中,查找造成系统瓶颈的原因,进行有针对性服务器硬件平台的升级,从而使用户的硬件投资得到最大化的利益回报。
附图说明
图1是基于硬件计数器动态优化服务器性能的方案其实现原理图;
图2是动态优化intel平台服务器性能方法的优化步骤图。
具体实施方式
本发明的基于硬件计数器动态优化服务器性能的方案其实现原理图如图1所示:
具体描述如下,首先根据硬件计数器收集的微架构级的信息,主要包括一级缓存命中率,二级缓存命中率,二级缓存传输到一级缓存繁忙程度等等,充分利用处理器多流出、深度流水、乱序执行、自动动态前瞻等技术进行编译器优化,来转移微架构级热点;然后通过Trace收集器,利用Trace分析器分析Trace文件,确定系统级热点原因,通过调试工具进行分析进行代码的修改,修改完成后重新编译生成运行质量高的可执行文件。
动态优化intel平台服务器性能方法的优化步骤如下图2所示:
(1)、创建一个benchmark,作为性能调整的目标。如果进行调整以后,性能还不如以前,则表明所做的调整是不正确的。
(2)、收集性能分析数据。Vtune提供了多种数据收集器,我们采用硬件计数器进行收集。
(3)、进行数据分析,查找性能问题。利用收集的数据进行深入分析,查找系统和应用代码的热点区,即,系统或者应用代码中最消耗时间的部分。Vtune性能分析工具提供了各种不同的视图,以方便对收集数据进行分析。比如,system_wide视图,函数视图等。通过这些视图,我们可以识别关键模块和函数,进而查看源代码或相关的视图。
(4)、定位应用问题或者系统问题。如果是应用问题需要进行代码的重写,并再次测试看性能是否有提高。如果是系统级的问题,则可以考虑更换硬件,这样很可能会对代码性能有提高。
(5)、是否定位到问题。同前面创建的benchmark进行比较,如果性能有提高并且满足用户的需求,就表明优化成功。不过,如果性能仍然不能满足要求,则要考虑收集的其他数据,以进行更深入的分析。
(6)、分析性能是否满足要求。分析数据,确认应用程序的性能提高最大化。循环进行多次分析,直到移出所有瓶颈为止。

Claims (1)

1、一种基于硬件计数器获取性能数据实现动态优化服务器性能的方法,其特征在于,首先通过应用软件的运行建立一个测试基准,然后根据硬件计数器收集的性能数据,从微架构级进行分析造成应用软件性能低下的原因,然后采用intel编译器,进行微架构级的优化,当完成转移微架构级性能后,再进行系统级性能优化,系统级性能优化完成后,再在相同条件下重新运行应用软件并与以前的基准进行比较确保性能提升,直到服务器性能表现满足用户需求为止,系统包括一级缓存命中率,二级缓存命中率,二级缓存传输到一级缓存繁忙程度,充分利用处理器多流出、深度流水、乱序执行、自动动态前瞻的技术进行编译器优化,来转移微架构级热点;然后通过Trace收集器,利用Trace收集器中的分析器分析Trace文件,确定系统级热点原因,通过调试工具进行分析进行代码的修改,修改完成后重新编译生成运行质量高的可执行文件;具体动态优化步骤如下:
1)创建一个benchmark:作为性能调整的目标,调整以后,性能还不如以前,则表明所做的调整是不正确的;
2)收集性能分析数据:Vtune提供了多种数据收集器,采用硬件计数器进行收集;
3)进行数据分析,查找性能问题,利用收集的数据进行深入分析,查找系统和应用代码的热点区,即,系统或者应用代码中最消耗时间的部分,Vtune性能分析工具提供了各种不同的视图,以方便对收集数据进行分析,包括system_wide视图,函数视图,通过这些视图,识别关键模块和函数,进而查看源代码或相关的视图;
4)定位应用问题或者系统问题:是应用问题需要进行代码的重写,并再次测试看性能是否有提高,是系统级的问题,则考虑更换硬件提高代码性能;
5)是否定位到问题:同前面创建的benchmark进行比较,性能有提高并且满足用户的需求,就表明优化成功,性能仍然不能满足要求,则要考虑收集的其他数据,以进行更深入的分析;
6)分析性能是否满足要求:分析数据,确认应用程序的性能提高最大化,循环进行多次分析,直到移出所有瓶颈为止。
CNA2009100170603A 2009-07-14 2009-07-14 一种基于硬件计数器获取性能数据实现动态优化服务器性能的方法 Pending CN101604287A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CNA2009100170603A CN101604287A (zh) 2009-07-14 2009-07-14 一种基于硬件计数器获取性能数据实现动态优化服务器性能的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CNA2009100170603A CN101604287A (zh) 2009-07-14 2009-07-14 一种基于硬件计数器获取性能数据实现动态优化服务器性能的方法

Publications (1)

Publication Number Publication Date
CN101604287A true CN101604287A (zh) 2009-12-16

Family

ID=41470025

Family Applications (1)

Application Number Title Priority Date Filing Date
CNA2009100170603A Pending CN101604287A (zh) 2009-07-14 2009-07-14 一种基于硬件计数器获取性能数据实现动态优化服务器性能的方法

Country Status (1)

Country Link
CN (1) CN101604287A (zh)

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101882109A (zh) * 2010-07-16 2010-11-10 中国工商银行股份有限公司 一种基于银行业务的软件性能分析系统及方法
WO2013159495A1 (zh) * 2012-04-25 2013-10-31 华为技术有限公司 性能瓶颈诊断方法和设备
CN104156274A (zh) * 2014-08-19 2014-11-19 浪潮(北京)电子信息产业有限公司 一种测试生物信息学计算平台性能的方法
CN103731302B (zh) * 2013-12-13 2016-08-17 中国人民解放军国防科学技术大学 多核网络处理平台上的一种软件定义计数器实现方法
WO2016165542A1 (zh) * 2015-04-15 2016-10-20 阿里巴巴集团控股有限公司 缓存命中率分析的方法及设备
WO2017216688A1 (en) * 2016-06-15 2017-12-21 International Business Machines Corporation Detecting and predicting bottlenecks in complex systems
US10324819B1 (en) 2018-01-22 2019-06-18 Oracle International Corporation Runtime performance introspection
CN111611199A (zh) * 2020-04-16 2020-09-01 福州瑞芯微电子股份有限公司 一种Soc芯片性能和功耗的优化方法、装置、设备和介质
CN112352219A (zh) * 2018-06-20 2021-02-09 华为技术有限公司 自动化编译的系统和方法

Cited By (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101882109B (zh) * 2010-07-16 2013-08-28 中国工商银行股份有限公司 一种基于银行业务的软件性能分析系统及方法
CN101882109A (zh) * 2010-07-16 2010-11-10 中国工商银行股份有限公司 一种基于银行业务的软件性能分析系统及方法
WO2013159495A1 (zh) * 2012-04-25 2013-10-31 华为技术有限公司 性能瓶颈诊断方法和设备
CN103731302B (zh) * 2013-12-13 2016-08-17 中国人民解放军国防科学技术大学 多核网络处理平台上的一种软件定义计数器实现方法
CN104156274A (zh) * 2014-08-19 2014-11-19 浪潮(北京)电子信息产业有限公司 一种测试生物信息学计算平台性能的方法
CN106155913B (zh) * 2015-04-15 2019-06-18 阿里巴巴集团控股有限公司 缓存命中率分析的方法及设备
WO2016165542A1 (zh) * 2015-04-15 2016-10-20 阿里巴巴集团控股有限公司 缓存命中率分析的方法及设备
CN106155913A (zh) * 2015-04-15 2016-11-23 阿里巴巴集团控股有限公司 缓存命中率分析的方法及设备
GB2567570B (en) * 2016-06-15 2021-09-01 Ibm Detecting and predicting bottlenecks in complex systems
GB2567570A (en) * 2016-06-15 2019-04-17 Ibm Detecting and predicting bottlenecks in complex systems
US11093836B2 (en) 2016-06-15 2021-08-17 International Business Machines Corporation Detecting and predicting bottlenecks in complex systems
WO2017216688A1 (en) * 2016-06-15 2017-12-21 International Business Machines Corporation Detecting and predicting bottlenecks in complex systems
US10324819B1 (en) 2018-01-22 2019-06-18 Oracle International Corporation Runtime performance introspection
US10909019B2 (en) 2018-01-22 2021-02-02 Oracle International Corporation Runtime performance introspection
US11341022B2 (en) 2018-01-22 2022-05-24 Oracle International Corporation Runtime performance introspection
CN112352219A (zh) * 2018-06-20 2021-02-09 华为技术有限公司 自动化编译的系统和方法
US11221834B2 (en) 2018-06-20 2022-01-11 Huawei Technologies Co., Ltd. Method and system of intelligent iterative compiler optimizations based on static and dynamic feedback
CN112352219B (zh) * 2018-06-20 2022-07-26 华为技术有限公司 自动化编译的系统和方法
CN111611199A (zh) * 2020-04-16 2020-09-01 福州瑞芯微电子股份有限公司 一种Soc芯片性能和功耗的优化方法、装置、设备和介质
CN111611199B (zh) * 2020-04-16 2023-04-11 瑞芯微电子股份有限公司 一种Soc芯片性能和功耗的优化方法、装置、设备和介质

Similar Documents

Publication Publication Date Title
CN101604287A (zh) 一种基于硬件计数器获取性能数据实现动态优化服务器性能的方法
Burtscher et al. Perfexpert: An easy-to-use performance diagnosis tool for hpc applications
CN102722434B (zh) 一种针对Linux进程调度的性能测试方法和工具
Berg et al. A statistical multiprocessor cache model
WO2019241921A1 (en) Systems and methods for automated compiling
CN101980174A (zh) 一种自动测试计算机应用程序区间能耗的方法
Pan et al. A modeling framework for reuse distance-based estimation of cache performance
WO2021087648A1 (en) Systems and methods for evaluating code contributions by software developers
WO2017114472A1 (en) Method and apparatus for data mining from core traces
Oh et al. LIME: A framework for debugging load imbalance in multi-threaded execution
CN102185741B (zh) 多层架构下估算事务的处理器需求的方法
Mijaković et al. An architecture for flexible auto-tuning: the periscope tuning framework 2.0
Lu et al. Lightweight method-level energy consumption estimation for android applications
CN103455364A (zh) 一种多核环境并行程序Cache性能在线获取系统及方法
CN117113890A (zh) 一种cpu芯片设计方法及系统
CN110377525B (zh) 一种基于运行时特征和机器学习的并行程序性能预测系统
Huber et al. WCET driven design space exploration of an object cache
Syrowik et al. Use of CPU performance counters for accelerator selection in HLS-generated CPU-accelerator systems
CN110287114A (zh) 一种数据库脚本性能测试的方法及装置
Rane et al. Performance optimization of data structures using memory access characterization
CN110928705B (zh) 面向高性能计算应用的通信特征分析方法及系统
Marathe et al. A hybrid hardware/software approach to efficiently determine cache coherence bottlenecks
Perelman et al. Cross binary simulation points
Berg et al. SIP: Performance tuning through source code interdependence
Li et al. Assessing and optimizing the performance impact of the just-in-time configuration parameters-a case study on PyPy

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C02 Deemed withdrawal of patent application after publication (patent law 2001)
WD01 Invention patent application deemed withdrawn after publication

Open date: 20091216