处理器内部行为监测方法

xiaoxiao2021-3-1  202

处理器内部行为监测方法
【技术领域】
[0001]本发明涉及计算机技术领域,具体涉及一种精确计数的处理器内部行为监测方法。
【背景技术】
[0002]随着集成电路的规模和复杂度的日益增加,处理器设计越来越复杂、功能更加多样化,处理器的测试与验证工作难度越来越大,对测试用例的要求也越来越高。为了提高处理器测试用例的质量,测试验证人员需要采用各种手段对测试用例的质量进行评估,对测试效果进行反馈与分析,进一步指导测试用例的编写。目前Intel系列处理器为支持性能监测,提供了性能监测计数器PMC(performance monitoring counters),用户可以通过读写10(输入输出)寄存器或者通过RPMC(Remote Performance Monitoring and Control,远距离性能监视及控制)指令的方式获取性能计数器的值,获取测试人员或者用户关的注性能事件的统计情况。
[0003]Intel系列处理器等通过设置PMC的方式,支持用户获取性能事件(performanceevent),为用户和测试人员进一步窥探处理器行为提供了手段。基于PMC的衍生工具很多,例如在置于L2高速缓存套件的监测L2Cache访问相关的性能的处理器性能监测装置等,这些装置能够准确监测性能事件的发生次数,但是或多或少地增加了硬件开销;另外这些工具很多均是基于某些被重点关注的性能事件开发的,适用范围有限。

【发明内容】

[0004]本发明所要解决的技术问题是针对现有技术中存在上述缺陷,提供一种精确计数的处理器内部行为监测方法,其能够在现有硬件资源的情况下,以完全采用软件的方式实现性能事件的监测,为用户和测试人员提供PMC所有性能事件的计数值。
[0005]根据本发明,提供了一种处理器内部行为监测方法,包括:
[0006]第一步骤:执行处理器对于性能事件计数器的保留恢复处理;其中,在处理器进程调度与切换过程中,在操作系统层进行切换进程之前,采用软件方式对处理器性能计数器的内容予以保留与转储,在处理器完成对性能计数器寄存器复位完成之后,再恢复上述计数器的内容;
[0007]第二步骤:运行支持处理器性能事件计数器保留恢复处理的操作系统;
[0008]第三步骤:实现处理器单个性能事件的性能计数监测;
[0009]第四步骤:实现处理器批量性能事件的性能计数监测。
[0010]优选地,所述的处理器内部行为监测方法还包括:第五步骤,根据第三步骤和第四步骤中性能事件计数结果,分析计数结果。
[0011]优选地,单个性能事件的性能计数监测进程包括:
[0012]第一单个性能事件子步骤:选定特定性能事件进行监测,同时设定性能事件监测的总时间;
[0013]第二单个性能事件子步骤:确定所述性能事件的性能计数的结果日志文件命名原则;
[0014]第三单个性能事件子步骤:开启所述性能事件的监测进程,启动性能计数器对性能事件的计数值进行计数,开始持续计时;
[0015]第四单个性能事件子步骤:运行处理器测试用例集合;
[0016]第五单个性能事件子步骤:获取性能事件的计数值,同时将计数值以某种固定格式以追加的形式更新至指定日志文件;
[0017]第六单个性能事件子步骤:判断性能事件监测的计时时间是否已经到,如果计时已到,则终止性能事件计数器计数行为;如果计时未到,则在进程休眠指定时间之后,跳转至第五单个性能事件子步骤继续运行。
[0018]优选地,批量性能事件的性能计数监测进程包括:
[0019]第一批量性能事件子步骤:将多个性能事件按照预定格式进行罗列;
[0020]第二批量性能事件子步骤:确定目标CPU的核数,并设置绑定至目标CPU的不同核心的命令;
[0021]第三批量性能事件子步骤:获取可用CPU核心数量,同时判断性能事件总数与总可用CPU核数之间的关系,并执行下述处理:
[0022]如果总可用CPU核数少于性能事件总数则不进行性能计数,转至第四批量性能事件子步骤;
[0023]如果总可用CPU核数超过性能事件总数的预定倍数,则取前面的预定倍数于性能事件总数的可用CPU核数进行性能计数统计,并且跳转至第五批量性能事件子步骤继续运行;
[0024]如果总可用CPU核数介于性能事件总数以及性能事件总数的预定倍数之间,则选择总可用CPU核数进行性能计数,此后跳转至第五批量性能事件子步骤继续运行;
[0025]第四批量性能事件子步骤:判定单个性能计数器的性能事件数目的最大值是否大于可用的CPU核数,如果得到肯定判定则停止监测,否则按照遍历不同处理器性能计数器的方式,将处于同一个性能计数器内部的不同性能事件绑定至不同处理器核心;
[0026]第五批量性能事件子步骤:按照循环遍历性能事件列表的方式,将性能事件绑定到选择的CHJ核心,随后执行第六批量性能事件子步骤;
[0027]第六批量性能事件子步骤:确定性能事件与CPU具体核心编号之间的关系,之后按照第三步骤的单个性能事件的性能计数监测进程的方式展开批量处理器性能事件的性能计数监测。
[0028]优选地,所述预定倍数是3倍。
[0029]由此,本发明提供一种精确计数的处理器性能事件自动监测装置,实现了在用户层对处理器定义的性能事件进行统计与反馈,进而对测试用例的编写提供有针对性的指寸ο
【附图说明】
[0030]结合附图,并通过参考下面的详细描述,将会更容易地对本发明有更完整的理解并且更容易地理解其伴随的优点和特征,其中:
[0031]图1示意性地示出了根据本发明优选实施例的处理器内部行为监测方法的单个性能事件监测过程示例的流程图。
[0032]图2示意性地示出了根据本发明优选实施例的处理器内部行为监测方法的批量性能事件监测过程示例的流程图。
[0033]需要说明的是,附图用于说明本发明,而非限制本发明。注意,表示结构的附图可能并非按比例绘制。并且,附图中,相同或者类似的元件标有相同或者类似的标号。
【具体实施方式】
[0034]为了使本发明的内容更加清楚和易懂,下面结合具体实施例和附图对本发明的内容进行详细描述。
[0035]图1示意性地示出了根据本发明优选实施例的处理器内部行为监测方法的单个性能事件监测过程的流程图。图2示意性地示出了根据本发明优选实施例的处理器内部行为监测方法的批量性能事件监测过程示例的流程图。
[0036]如图1和图2所示,根据本发明的一种精确计数的处理器性能事件自动监测方法包括:
[0037]第一步骤:执行处理器对于性能事件计数器的保留恢复处理;其中,在处理器进程调度与切换过程中,在操作系统层进行切换进程之前,采用软件方式对处理器性能计数器的内容予以保留与转储,在处理器完成对性能计数器寄存器复位完成之后,再恢复上述计数器的内容;采用这种方式,测试人员能够精确地获取多个测试用例运行过程的性能事件的计数统计信息。
[0038]第二步骤:运行支持处理器性能事件计数器来保留恢复处理的操作系统,由此支持性能事件的精确计数;
[0039]第三步骤:实现处理器单个性能事件的性能计数监测进程,处理器核心以后台方式提交单个性能事件的监测进程;具体地,例如,如图1所示,单个性能事件的监测进程运行机制描述如下:
[0040]第一单个性能事件子步骤:选定某个性能事件进行监测,同时设定性能事件监测的总时间;
[0041 ]第二单个性能事件子步骤:确定性能事件的性能计数的结果日志文件命名原则;
[0042]第三单个性能事件子步骤:开启选定性能事件的监测进程,启动性能计数器对性能事件的计数值进行计数,开始计时;
[0043]第四单个性能事件子步骤:运行处理器测试用例集合;
[0044]第五单个性能事件子步骤:获取性能事件的计数值,同时将计数值以某种固定格式以追加的形式更新至指定日志文件;
[0045]第六单个性能事件子步骤:判断性能事件监测的计时时间是否已经到,如果计时已到,则终止性能事件计数器计数行为;否则在进程休眠指定时间之后,跳转至第五单个性能事件子步骤继续运行。
[0046]第四步骤:实现处理器批量性能事件的性能计数监测。具体地,例如,如图2所示,批量性能事件计数的监测运行 机制如下:
[0047]第一批量性能事件子步骤:根据处理器单个性能计数器的多个不同性能事件不能在单个处理器核心上重复计数的原则,将多个性能事件按照固定格式进行罗列;
[0048]第二批量性能事件子步骤:确定目标CPU的核数,并设置绑定至CPU不同核心的命令;
[0049]第三批量性能事件子步骤:获取可用CPU核心数量,同时判断性能事件总数与总可用CPU核数之间的关系,并执行下述处理:
[0050]如果总可用CPU核数少于性能事件总数则不进行性能计数,转至第四批量性能事件子步骤;
[0051]如果总可用CPU核数超过性能事件总数的预定倍数(例如优选地,3倍),则取前面的3倍于性能事件总数的可用CPU核数进行性能计数统计,并且跳转至第五批量性能事件子步骤继续运行;即,采用轻负载监测模式进行计数。
[0052]如果总可用CPU核数介于上述两者(性能事件总数以及性能事件总数的3倍)之间,则选择总可用CPU核数进行性能计数,此后跳转至第五批量性能事件子步骤继续运行;即,将性能事件分散到不同核心上进行监测。
[0053]第四批量性能事件子步骤:如果单个性能计数器的性能事件数目的最大值大于可用的CPU核数,则停止监测,退出性能事件的监测。否则,按照遍历不同处理器性能计数器原贝1J,将处于同一个性能计数器内部的不同性能事件按照指定的策略绑定至不同处理器核心。
[0054]第五批量性能事件子步骤:按照循环遍历性能事件列表的原则,将性能事件绑定到选择的CHJ核心,随后执行第六批量性能事件子步骤;
[0055]第六批量性能事件子步骤:在确定性能事件与CPU具体核心编号之间的关系之后,按照第三步骤,展开批量处理器性能事件的性能计数监测。
[0056]第五步骤:计数事件分析与测试反馈,根据第三步骤、第四步骤中性能事件计数结果文件,分析计数结果;对于有单个性能事件在多个处理器核心上进行监测的情形,分析结果将最大的计数值反馈给测试人员;最后将性能事件计数值小于指定数量、以及性能计数值为零的性能事件反馈给测试人员,便于指导测试人员优化测试程序、改进测试用例。
[0057]本发明的一种精确计数的处理器性能事件自动监测装置的关键点有两处:一是实现处理器性能事件计数器的保留恢复技术,这里主要是第一步骤中实现了处理器对于性能事件计数器的保留恢复技术,对处理器进程切换过程中原本被清零的性能计数值进行保留,并在下一个程序运行时进行计数器计数值的恢复,满足测试人员进行精确计数的需求;二是实现了批量的性能事件的精确计数,这里包括第四步骤中,以CPU的核数作为性能事件的精确计数的代价,实现对测试用例集合质量的全方位评估与监测。
[0058]根据以上技术方案可以看出,本发明具有以下优点:第一是能够对测试包的质量有可靠的监测效果,既支持单个性能事件的精确计数,又能够对多个测试用例对应的多个进程进行不间断的、准确地监测,为测试人员分析与提高测试用例提供了一种便捷可靠的手段。第二是本发明考虑了均衡处理器可用核心的数量、核心运算负载的关系,在CPU核心足够多的情况下,该装置仅在单个核心上监测单个性能事件的性能计数,对处理器核心的负载带来的压力极少;在CHJ核心数量不足的情况下,通过少量的CPU核心,以牺牲核心部分计算负载为代价,实现批量性能事件的监,实现对测试课题包进行全面的监测。第三是,本发明完全在软件层面实现的,不会给带来任何硬件开销;最后,并不意味着不重要的是,本装置在可靠性方面的容错功能,在CPU核心足够多的情形下,单个性能事件被分配到3个核心上进行检测,从而增加了装置的可靠性。
[0059]此外,需要说明的是,除非特别指出,否则说明书中的术语“第一”、“第二”、“第三”等描述仅仅用于区分说明书中的各个组件、元素、步骤等,而不是用于表示各个组件、元素、步骤之间的逻辑关系或者顺序关系等。
[0060]可以理解的是,虽然本发明已以较佳实施例披露如上,然而上述实施例并非用以限定本发明。对于任何熟悉本领域的技术人员而言,在不脱离本发明技术方案范围情况下,都可利用上述揭示的技术内容对本发明技术方案作出许多可能的变动和修饰,或修改为等同变化的等效实施例。因此,凡是未脱离本发明技术方案的内容,依据本发明的技术实质对以上实施例所做的任何简单修改、等同变化及修饰,均仍属于本发明技术方案保护的范围内。
【主权项】
1.一种处理器内部行为监测方法,其特征在于包括: 第一步骤:执行处理器对于性能事件计数器的保留恢复处理;其中,在处理器进程调度与切换过程中,在操作系统层进行切换进程之前,采用软件方式对处理器性能计数器的内容予以保留与转储,在处理器完成对性能计数器寄存器复位完成之后,再恢复上述计数器的内容; 第二步骤:运行支持处理器性能事件计数器保留恢复处理的操作系统; 第三步骤:实现处理器单个性能事件的性能计数监测; 第四步骤:实现处理器批量性能事件的性能计数监测。2.根据权利要求1所述的处理器内部行为监测方法,其特征在于还包括: 第五步骤:根据第三步骤和第四步骤中性能事件计数结果,分析计数结果。3.根据权利要求1或2所述的处理器内部行为监测方法,其特征在于,单个性能事件的性能计数监测进程包括: 第一单个性能事件子步骤:选定特定性能事件进行监测,同时设定性能事件监测的总时间; 第二单个性能事件子步骤:确定所述性能事件的性能计数的结果日志文件命名原则;第三单个性能事件子步骤:开启所述性能事件的监测进程,启动性能计数器对性能事件的计数值进行计数,开始持续计时; 第四单个性能事件子步骤:运行处理器测试用例集合; 第五单个性能事件子步骤:获取性能事件的计数值,同时将计数值以某种固定格式以追加的形式更新至指定日志文件; 第六单个性能事件子步骤:判断性能事件监测的计时时间是否已经到,如果计时已到,则终止性能事件计数器计数行为;如果计时未到,则在进程休眠指定时间之后,跳转至第五单个性能事件子步骤继续运行。4.根据权利要求3所述的处理器内部行为监测方法,其特征在于,批量性能事件的性能计数监测进程包括: 第一批量性能事件子步骤:将多个性能事件按照预定格式进行罗列; 第二批量性能事件子步骤:确定目标CPU的核数,并设置绑定至目标CPU的不同核心的命令; 第三批量性能事件子步骤:获取可用CHJ核心数量,同时判断性能事件总数与总可用CHJ核数之间的关系,并执行下述处理: 如果总可用CPU核数少于性能事件总数则不进行性能计数,转至第四批量性能事件子步骤; 如果总可用CPU核数超过性能事件总数的预定倍数,则取前面的预定倍数于性能事件总数的可用CPU核数进行性能计数统计,并且跳转至第五批量性能事件子步骤继续运行; 如果总可用CPU核数介于性能事件总数以及性能事件总数的预定倍数之间,则选择总可用CPU核数进行性能计数,此后跳转至第五批量性能事件子步骤继续运行; 第四批量性能事件子步骤:判定单个性能计数器的性能事件数目的最大值是否大于可用的CPU核数,如果得到肯定判定则停止监测,否则按照遍历不同处理器性能计数器的方式,将处于同一个性能计数器内部的不同性能事件绑定至不同处理器核心; 第五批量性能事件子步骤:按照循环遍历性能事件列表的方式,将性能事件绑定到选择的CHJ核心,随后执行第六批量性能事件子步骤; 第六批量性能事件子步骤:确定性能事件与CPU具体核心编号之间的关系,之后按照第三步骤的单个性能事件的性能计数监测进程的方式展开批量处理器性能事件的性能计数监测。5.根据权利要求4所述的处理器内部行为监测方法,其特征在于,所述预定倍数是3倍。
【专利摘要】本发明提供了一种处理器内部行为监测方法,包括:执行处理器对于性能事件计数器的保留恢复处理;其中,在处理器进程调度与切换过程中,在操作系统层进行切换进程之前,采用软件方式对处理器性能计数器的内容予以保留与转储,在处理器完成对性能计数器寄存器复位完成之后,再恢复上述计数器的内容;运行支持处理器性能事件计数器保留恢复处理的操作系统;实现处理器单个性能事件的性能计数监测;实现处理器批量性能事件的性能计数监测。
【IPC分类】G06F11/34, G06F11/30
【公开号】CN105487958
【申请号】CN201510830351
【发明人】李岱峰, 尉红梅, 谭坚, 王丽一, 吴臻, 相陈伟, 陈磊
【申请人】无锡江南计算技术研究所
【公开日】2016年4月13日
【申请日】2015年11月24日

最新回复(0)