一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种收集微体系结构事件信息的方法

2022-06-05 20:21:25 来源:中国专利 TAG:


1.本发明涉及计算机技术领域,更具体地,涉及一种收集微体系结构事件信息的方法。


背景技术:

2.现代处理器通常提供少量的硬件性能计数器来捕获大量的微体系结构事件。随着互联网技术的快递发展,具有数千台服务器的大规模集群以“24/7/365”的方式运行。主流公司非常迫切得想了解集群的性能行为,因为小的性能改进可以节省大量金钱成本。通过这些计数器可以轻松收集大量(例如每天gb)cpu微体系结构事件信息,例如缓存和tlb未命中等。这些cpu微体系结构事件通常解释了造成计算机系统性能瓶颈的根本原因。可以看出,这些cpu微体系结构事件信息为性能瓶颈的根本原因分析,体系结构和编译器优化等提供了宝贵的基础。
3.现有收集cpu微体系结构事件的方法是“一个计数器一个事件”,即一个计数器在程序的整个运行期间仅对一个事件进行计数。那么程序运行结束后,可以收集到数目等于计数器数量的cpu微体系结构事件。然后在固定其他参数不变的条件下,更换新的待收集的cpu微体系结构事件,连续重复地运行程序若干次,直到收集完所有的cpu微体系结构事件。
4.通常,每个现代处理器都有一个称为性能监视单元(pmu)的逻辑单元,该逻辑单元由一组硬件计数器组成。计数器计算在程序执行的时间间隔内某个事件发生了多少次。计数器的数量可能会因微架构不同而有差异。可以由硬件计数器测量的事件由处理器供应商预定义。对于不同的微体系结构,可由硬件计数器测量的事件的数量可能会显著不同。目前常用的cpu中预定义的微体系结构事件数有236个,而硬件计数器只有6个。因此,事件的数量大大超过了硬件计数器的数量。
5.目前,现有的收集cpu微体系结构事件的方法是一个计数器一个事件,即一个计数器在程序的整个运行期间仅对一个事件进行计数,这种方式虽然收集到的事件发生的次数会很准确,但是每次程序运行完成后只能收集和性能计数器数量相等的性能事件数据。为了表征程序运行的性能,每次还需要固定两个性能计数器分别监测cycles和instructions。那么就只剩下4个性能计数器去监测待测的性能事件。为了测量完整的性能事件,需要程序重复运行59次。通常需要测量大量事件来确定未知系统性能瓶颈的根本原因,因此,使用一个计数器一个事件方法就需要程序运行很多次,造成效率低下的问题。在真实的生产环境中,可能程序运行一次都达到数个小时,那么重复执行59次,可想而知在收集cpu微体系结构事件信息时所需的时间成本非常高。


技术实现要素:

6.本发明的目的是针对收集cpu微体系结构事件信息时间成本高的问题,提供一种收集微体系结构事件信息的新技术方案,对每次程序运行设置多组cpu微体系结构事件组,进行交替采样,从而显著缩短了收集cpu微体系结构事件的时间,提升了收集效率。
7.本发明的技术方案是提供一种收集微体系结构事件信息的方法,该方法包括以下步骤:
8.在程序第一次运行时,设定一个计数器收集一个微体系结构事件,并记录程序运行的时间;
9.根据第一次程序运行期间内的性能波动情况,将程序运行划分为多个波动类型时段;
10.在后续程序运行时,对于每个波动类型时段,设置对应的微体系结构事件组以及收集频率,并针对不同的波动类型时段利用对应的微体系结构事件组以交替变频方式收集微体系结构事件信息。
11.与现有技术相比,本发明的优点在于,提出了收集cpu微体系结构事件信息时,对多个cpu微体系结构事件组进行交替收集的方法,在保证事件信息质量的前提下,通过减少程序重复运行的次数,可以有效地减少cpu微体系结构事件信息的收集时间;根据程序运行时性能的波动对运行时间打点分类的方法,并在程序运行的不同阶段,根据程序当前的波动类型采取不同的采样策略,从而提升了收集效率并降低了系统开销。
12.通过以下参照附图对本发明的示例性实施例的详细描述,本发明的其它特征及其优点将会变得清楚。
附图说明
13.被结合在说明书中并构成说明书的一部分的附图示出了本发明的实施例,并且连同其说明一起用于解释本发明的原理。
14.图1是根据本发明一个实施例的收集微体系结构事件信息的方法的流程图;
15.图2是根据本发明一个实施例的收集微体系结构事件信息的方法的整体过程示意;
16.图3是根据本发明一个实施例的cpu微体系结构事件组交替示意图;
17.图4是根据本发明一个实施例的收集所有cpu微体系结构事件信息用时示意图;
18.图5是根据本发明一个实施例的验证所收集cpu微体系结构事件信息质量的示意图。
具体实施方式
19.现在将参照附图来详细描述本发明的各种示例性实施例。应注意到:除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本发明的范围。
20.以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本发明及其应用或使用的任何限制。
21.对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为说明书的一部分。
22.在这里示出和讨论的所有例子中,任何具体值应被解释为仅仅是示例性的,而不是作为限制。因此,示例性实施例的其它例子可以具有不同的值。
23.应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一
个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。
24.本发明在固定其他参数条件下连续重复运行程序以得到相应的cpu微体系结构事件信息。在程序第一次运行时开始使用“一个计数器一个事件”的方法进行cpu微体系结构事件收集,并且记录程序运行的时间。同时根据第一次程序运行期间内的性能波动,对整体的运行时间进行打点和分类,然后,使用微体系结构事件组的交替策略收集程序运行过程中产生的微体系结构事件。
25.本发明使用一组随机生成的可行配置参数,并通过对cpu微体系结构事件组交替的收集方式减少事件信息收集所需的时间。简言之,结合图1和图2所示,本发明提供的收集微体系结构事件信息的方法包括:步骤s110,在程序第一次运行时,设定一个计数器收集一个微体系结构事件,并记录程序运行的时间;步骤s120,根据第一次程序运行期间内的性能波动情况,将程序运行划分为多个波动类型时段;步骤s130,在后续程序运行时,对于每个波动类型时段,设置对应的微体系结构事件组以及收集频率,并针对不同的波动类型时段利用对应的微体系结构事件组以交替变频方式收集微体系结构事件信息。
26.具体地,微体系结构事件是指反映与微体系架构(例如,cpu)交互的性能指标。例如,微体系结构事件包括但不限于:指令数、周期数、错误预测的宏分支指令退役数量等。其中,优选地,指令数(instructions)和周期数(cycles)这两个微体系结构事件在收集时总是存在的,可用于计算每个周期执行的指令数cycles,表示为ipc(instruction per cycle),即ipc是指令数instructions与周期数的比。
27.假设当前有n个硬件计数器,有m个预定义的cpu微体系结构事件。为了表征程序运行的性能,使用ipc作为考察指标。根据ipc的计算公式,ipc=instructions/cycles可知,每个cpu微体系结构事件组中都需要有两个固定的事件,分别是cycles和instructions。那么就只剩下(n-2)个性能计数器去监测剩余待测的性能事件了。
28.为了更直观的解释cpu微体系结构事件组,以计数器个数是6为例,某一组具体的cpu微体系结构事件组可表示为:(cycles,instructions,event1,event2,event3,event4)。其中eventi(i=1,2,3,4)分别对应4种不同的cpu微体系结构事件。因此,可以得出为了收集所有cpu微体系结构事件信息,需要程序重复运行次。
29.在程序的第一次运行时,使用传统的“一个计数器一个事件”方法去收集一组cpu微体系结构事件组的信息。在程序运行完成后,可以根据所计算出的ipc对程序运行状态进行分析,根据ipc的波动情况,将程序运行进行时段划分。
30.例如,波动类型时段可分为稳定期和波动期,具体划分方式是:
31.根据程序的执行时间t,以及设定好的计数器的计数间隔interval,可以收集长度为的ipc数据,将ipc数据写成数组的形式,记为ipc[]。在判断ipc波动时,假设波动率阈值为δ
thres
(如δ
thres
=5%);同时引入步长概念,记为step。当前的起点的索引记为cur和pre。
[0032]
接下来,计算[cur,cur step]这个区间内ipc波动率的大小,如果ipc的波动率,大于δ
thres
;那么认为[cur,cur step]区间ipc波动大,此时更
新cur=cur step。重复上述步骤,直到ipc的波动率δ小于δ
thres
,那么认为此时在[cur,cur step]区间内ipc已经趋于稳定。所以可以将[pre,cur]区间分类为ipc波动期,并更新pre=cur。同样的道理,可以划分ipc稳定期,在此不再赘述。
[0033]
因为程序连续运行且使用相同参数重复,即使可能存在机器性能波动,但是程序的运行状态依旧高度相似。所以在程序第一次运行后分析得出的时间段分类结果对于之后的重复执行也同样适用。
[0034]
此时设定在之后程序重复运行时,两组cpu微体系结构事件组的交替频率分为freq
low
(如freq
low
=1/8)和freq
high
(如freq
high
=1/4)。在波动期内,程序运行状态变化大,在每个计数器计数间隔内,cpu微体系结构事件变化也会相对显著,选择更高频率的cpu微体系结构事件交替,即freq
high
,以尽可能多样得保留更多的事件信息;在稳定期内,选择较低的频率freq
low
,以降低交换cpu微体系结构事件组时的系统开销。
[0035]
接下来,介绍在之后的重复运行程序过程中,如何交替变频收集cpu微体系结构事件信息。如果当前程序处于波动期内,设定每(1/freq
high
)秒为当前一组cpu微体系结构事件组的收集时长length,即每隔length秒交换当前收集的cpu微体系结构事件组。同理,如果当前程序处于稳定期内,设定每(1/freq
low
)秒为当前一组cpu微体系结构事件组的收集时长length。同时对于每个收集时长length中,计数器间隔0.5秒收集一次事件信息。
[0036]
为了清楚起见,结合图3所示,以一个具体实例说明:
[0037]
cpu微体系结构事件组1:(cycles,instructions,event1,event2,event3,event4);
[0038]
cpu微体系结构事件组2:(cycles,instructions,event5,event6,event7,event8).
[0039]
在第奇数个收集时长中按照当前程序所属于的波动类型所对应的收集时长去cpu微体系结构事件组1的事件信息,第偶数个收集时长中按照当前程序所属于的波动类型所对应的收集时长去cpu微体系结构事件组2的事件信息。具体在cpu微体系结构事件组的区别体现在:在t1,t3,t5,....,t
(2n-1)
时间段收集cpu微体系结构事件组1;在t2,t4,t6,...,t
(2n)
时间段收集cpu微体系结构事件组2。那么程序一次运行结束后就可以获得8个cpu微体系结构事件的信息。相比于传统的“一个计数器一个事件“方法,收集效率是以前的2倍。
[0040]
需说明的是,选择表征程序运行性能的指标可以根据不同的应用场景来选取,并且对程序运行阶段的分割策略也可根据业务需求改变,例如包含更多的波动类型时段,并相应设置对应的多个微体系结构事件组。此外,本发明不仅可以收集spark框架下cpu微体系结构事件信息,也可以在其他类型的大规模多参数计算系统中使用,例如区块链系统和云操作系统等,同样可以通过本发明收集cpu微体系结构事件信息。
[0041]
为了进一步验证本发明的效果,进行了仿真实验。使用hibench的程序,在固定spark配置参数条件下收集cpu微体系结构事件信息,其中选取了hibench中的kmeans程序进行可行性测试,对本发明和现有技术进行对比,并验证了本发明收集到的cpu微体系结构事件信息质量。
[0042]
图4是kmeans在收集cpu微体系结构事件所花费的时间。一个计数器一个事件(标记为“传统”)和本发明(标记为“交替,变频”)都在spark相同配置参数下,都对cpu预定义的所有cpu微体系结构事件进行信息收集。由于本发明在程序运行时可以交替收集两组cpu微
体系结构事件,达到事半功倍的效果,因此提升了收集效率。此外,本发明在收集过程中根据程序的性能变化,调节收集时cpu微体系结构事件组交替的频率,进一步降低了系统的性能开销。图4实验结果表明,现有技术在cpu微体系结构事件信息收集的时间花费上是本发明的2倍左右。
[0043]
图5是kmeans中使用本发明和传统“一个计数器一个事件”方法所搜集到的cpu微体系结构事件信息间的距离。可以看到“一个计数器一个事件”方法和本发明收集到的cpu微体系结构事件信息之间90%以上的事件都满足距离小于0.1。这表明,本发明并没有因为在每次程序运行时收集更多cpu微体系结构事件而影响所收集信息的质量。
[0044]
实验结果表明,通过在cpu微体系结构事件信息收集过程中设置两组cpu微体系结构事件组以及根据程序运行的性能状态调节交替频率可以大幅缩减cpu微体系结构事件信息收集所需的时间。与现有技术相比,本发明可以收集相似质量的cpu微体系结构事件信息,并且能够将数据收集速度提升2倍。
[0045]
综上所述,与现有技术相比,本发明主要具有以下方面的优势:
[0046]
1)、现有的cpu微体系结构事件信息收集方法需要程序大量得重复运行。本发明通过在程序运行时,对cpu微体系结构事件组进行交替变换,在保证所收集到的信息质量的同时,降低程序需要重复运行的次数,显著提高cpu微体系结构事件信息收集的效率。
[0047]
2)、根据ipc的变化幅度,将程序得运行分割成若干个阶段。在程序运行状态稳定时,程序执行的时间间隔内cpu微体系结构事件发生的次数变化不大,所以可将cpu微体系结构事件组的交替频率降低,从而降低在cpu微体系结构事件收集过程中的性能开销。
[0048]
3)、本发明为在微体系结构层面进行程序分析寻找最优配置参数提供了一种的高效地数据收集方法。与其他现有的人工智能方法寻找最优配置相比,从微体系结构层面调节参数更有可解释性。
[0049]
本发明可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本发明的各个方面的计算机可读程序指令。
[0050]
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、静态随机存取存储器(sram)、便携式压缩盘只读存储器(cd-rom)、数字多功能盘(dvd)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
[0051]
这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计
算机可读存储介质中。
[0052]
用于执行本发明操作的计算机程序指令可以是汇编指令、指令集架构(isa)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如smalltalk、c 等,以及常规的过程式编程语言—诸如“c”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(lan)或广域网(wan)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(fpga)或可编程逻辑阵列(pla),该电子电路可以执行计算机可读程序指令,从而实现本发明的各个方面。
[0053]
这里参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本发明的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
[0054]
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
[0055]
也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
[0056]
附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。对于本领域技术人员来说公知的是,通过硬件方式实现、通过软件方式实现以及通过软件和硬件结合的方式实现都是等价的。
[0057]
以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技
术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。本发明的范围由所附权利要求来限定。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献