CN1940821A - 调整性能分析速率的方法和设备 - Google Patents

调整性能分析速率的方法和设备 Download PDF

Info

Publication number
CN1940821A
CN1940821A CNA2006100957969A CN200610095796A CN1940821A CN 1940821 A CN1940821 A CN 1940821A CN A2006100957969 A CNA2006100957969 A CN A2006100957969A CN 200610095796 A CN200610095796 A CN 200610095796A CN 1940821 A CN1940821 A CN 1940821A
Authority
CN
China
Prior art keywords
processor
frequency
sample
tracking
frequency shift
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.)
Granted
Application number
CNA2006100957969A
Other languages
English (en)
Other versions
CN100422907C (zh
Inventor
弗兰克·E.·莱维内
罗伯特·J.·尤奎哈特
埃尼诺·M.·皮内达
小吉米·E.·德维特
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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of CN1940821A publication Critical patent/CN1940821A/zh
Application granted granted Critical
Publication of CN100422907C publication Critical patent/CN100422907C/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/86Event-based monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/865Monitoring of software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/88Monitoring involving counting

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

一种用于调整生成或者处理事件的速率的计算机实现的方法、设备和计算机可用程序代码。响应于处理器中的频率改变,识别该处理器的频率。响应于对该处理器的频率改变的识别,调整为了满足期望的采样速率而对由处理器生成的事件的样本进行选择的速率,以形成调整了的速率。

Description

调整性能分析速率的方法和设备
技术领域
本发明通常涉及改进的数据处理系统,并且尤其涉及用于处理数据的用计算机实现的方法和设备。更尤其的是,本发明涉及用于在生成中断之前调整性能监控事件的出现速率的用计算机实现的方法、设备、和计算机可用程序代码。
背景技术
为了减少热量和功率损耗,数据处理系统可以改变一个或者多个处理器的频率。做为选择,同一数据处理系统中的不同处理器可以具有不同的固定频率。动态频率改变可能由各种原因所导致。例如,过热或者功耗过多的检测可能导致一个或多个处理器的频率降低。另外,希望在诸如膝上型计算机之类的便携式数据处理系统中减少功耗,是基于使用而改变频率的另一个原因。其它条件也可能导致处理器频率的改变。要求处理器频率改变的条件也可能由应用特定的特性所引起。例如,同时使用处理器中的不同部件的程序可能会增加发热和功耗。在某些情况下,处理器频率的改变可能是基于有关应用的信息的。例如,已经知道一个应用具有大量的高速缓存未中的这一情况,可能导致降低处理器的频率以减少功率,这是因为由于对这些高速缓存未中的等待而导致仅仅会对整体性能有最低程度的影响。
当前所使用的、用于识别程序中的热点的算法和程序是有偏差的(biased),这是因为,应用对处理器的分配或者改变可能不是随机的。在数据处理系统的操作期间的处理器中的频率改变增加了跟踪事件的难度。通常,使用单独的处理器缓冲器来记录跟踪事件。跟踪记录包含有关在跟踪期间出现的事件的信息或者数据。存储在缓冲器中的跟踪记录被称为跟踪(trace)。
可以使用软件性能分析工具来识别数据处理系统的性能特性。这些特性可以是基于跟踪工具或者跟踪系统的。跟踪工具可以用于一种以上的技术,以提供用于指示执行程序的执行流程的跟踪信息。跟踪可以包含有关代码执行的数据。例如,跟踪可以包含关于在代码执行期间生成的事件的跟踪记录。跟踪可以包括诸如进程标识符、线程标识符、和程序计数器之类的信息。跟踪中的信息可以取决于要被执行的特定性能分析(profile)或者分析而改变。记录是与事件有关的信息单元。
发明内容
本发明的方面提供了一种用于调整生成或者处理事件的速率的计算机实现的方法、设备和计算机可用程序代码。响应于处理器中的频率改变,识别该处理器的频率。响应于对该处理器的频率改变的识别,调整为满足期望的采样速率而对由处理器生成的事件的样本进行选择的速率,以形成经调整了的速率。
附图说明
在权利要求中阐述了被认为是本发明的特性的新颖特征。然而,通过参考以下对说明性实施例的详细描述同时结合附图进行阅读,将会对发明本身、以及优选使用模式、其进一步的目的和优点获得最好的理解,其中:
图1是其中可以实现本发明的各个方面的数据处理系统的图示;
图2是其中可以实现本发明的各个方面的数据处理系统的框图;
图3是说明根据本发明的说明性实施例、在生成和处理跟踪的过程中使用的部件的图;
图4是根据本发明说明的性实施例的跟踪示例;
图5是说明根据本发明的说明性实施例的频率改变记录的图;
图6是根据本发明的说明性实施例、用于在处理器上同时读取所经过的时间的伪代码的图;
图7是根据本发明的说明性实施例、用于调整在代码执行期间所获取的样本的处理的流程图;
图8是根据本发明的说明性实施例、用于依据完成了的跟踪来调整事件的采样的处理的流程图;以及
图9是根据本发明的说明性实施例、用于在跟踪完成之后按比例分配(prorate)事件的处理的流程图。
具体实施方式
现在参考附图,并且特别参考图1,其示出了其中可以实现本发明的各个方面的数据处理系统的图示。如图所示,计算机100包括系统单元102、视频显示终端104、键盘106、可以包括软盘驱动器及其他类型的永久和可移动存储介质的存储设备108、以及鼠标110。个人计算机100可以包括另外的输入设备,诸如例如操纵杆、触垫、触摸屏、跟踪球、麦克风等。可以使用任何适当的计算机,诸如作为位于纽约Armonk的国际商业机器公司的产品的IBM eServer计算机或者IntelliStation计算机,来实现计算机100。虽然所描述的图示示出了一个计算机,但是本发明的其它实施例可以用诸如网络计算机之类的其它类型的数据处理系统实现。计算机100优选为还包括图形用户界面(GUI),其可以借助于在计算机100内操作的、驻留在计算机可读介质中的系统软件实现。
现在参见图2,示出了其中可以实现本发明的各个方面的数据处理系统的框图。数据处理系统200是诸如图1中的计算机100之类的计算机的示例,并且用于实现本发明的处理的代码或者指令可以位于其中。在所述示例中,数据处理系统200采用包括北桥和存储控制器集线器(memory controller hub,MCH)202以及南桥和输入/输出(I/O)控制器集线器(ICH)204的集线器体系结构。处理器206、主存储器208、和图形处理器210连接到北桥和存储控制器集线器202。图形处理器210可以例如通过加速图形端口(AGP)连接到MCH。
在所述示例中,局域网(LAN)适配器212连接到南桥和I/O控制器集线器204,而且音频适配器216、键盘和鼠标适配器220、调制解调器222、只读存储器(ROM)224、硬盘驱动器(HDD)226、CD-ROM驱动器230、通用串行总线(USB)端口及其他通信端口232、以及PCI/PCIe设备234通过总线238和总线240连接到南桥和I/O控制器集线器204。PCI/PCIe设备可以包括,例如,以太网适配器,附加卡、以及用于笔记本计算机的PC卡。PCI使用卡总线控制器,而PCIe则不使用该控制器。ROM 224可以是,例如闪速二进制输入/输出系统(BIOS)。硬盘驱动器226和CD-ROM驱动器230可以使用例如集成驱动器电子电路(IDE)或者串行的先进技术附件(SATA)接口。超级I/O(SIO)设备236可以连接到南桥和I/O控制器集线器204。
操作系统在处理器206上运行,并且用于协调和提供对图2中的数据处理系统200内的各个部件的控制。操作系统可以是诸如MicrosoftWindowsXP(Microsoft和Windows是微软公司在美国、其它国家、或者美国和其它国家的商标)之类的、在市场上可以买到的操作系统。诸如JavaTM程序设计系统之类的面向对象的程序设计系统可以结合该操作系统一起运行,并且提供从在数据处理系统200上执行的JavaTM程序或者应用到操作系统的调用(Java是SunMicrosystems(太阳微系统公司)在美国、其它国家、或者美国和其它国家的商标)。
用于操作系统、面向对象的程序设计系统、和应用或者程序的指令位于诸如硬盘驱动器226之类的存储设备上,并且可以被载入到主存储器208中用于由处理器206执行。本发明中的处理由处理器206使用计算机实现的指令来执行,这些计算机实现的指令可以位于诸如例如主存储器208、只读存储器224之类的存储器、或者一个或多个外围设备中。
本领域的普通技术人员将会理解:图1-2中的硬件可以取决于实现方式而改变。除图1-2中所描述的硬件之外,或者用来代替这些硬件,可以使用诸如闪速存储器、等效的非易失性存储器、或者光盘驱动器等之类的其它内部硬件或者外围设备。此外,本发明的处理可以应用于多处理器数据处理系统。
在某些说明性示例中,数据处理系统200可以是个人数字助理(PDA),其配置有闪速存储器,用以提供用于存储操作系统文件和/或用户生成的数据的非易失性存储器。总线系统可以包含一条或多条总线,诸如系统总线、I/O总线和PCI总线。当然,可以使用任何类型的通信构造或者体系结构来实现总线系统,其中该通信构造或者体系结构规定了在附于该构造或者体系结构的不同部件或者设备之间的数据传输。通信单元可以包括一个或多个诸如调制解调器或者网络适配器之类的、用于发送和接收数据的设备。存储器可以是例如主存储器208或者诸如在北桥和存储控制器集线器202中找到的那些之类的高速缓存。处理单元可以包括一个或多个处理器或者CPU。图1-2中描述的示例和上述示例并不意味着暗示结构限制。例如,除采取PDA形式之外,数据处理系统200还可以是平板计算机、膝上型计算机、或者电话设备。
本发明的方面提供了一种用于在具有可变处理器频率的系统上自动调整性能分析(profiling)速率的计算机实现的方法、设备以及计算机可用程序代码。可以在跟踪已经完成了之后或者在生成这些跟踪期间,应用本发明的方面以调整性能分析速率。性能分析速率是收集样本或者事件以便进行分析的速率。此外,本发明的方面认识到,在利用具有可变处理器频率的多个处理器来确定应用中的热点时,循环时间性能分析工具可以用来补偿处理器频率中的改变。
此外,本发明的方面还认识到,可以给出统计信息,以便把处理器中的特定性能计数器事件关联到特定的处理器速度。在这些示例中,用于收集这个统计信息的技术是收集这个数据,并且将该信息添加到数据库中。在一个实施例中,可以由事件类型、然后在事件类型之下由处理器频率来索引该统计数据库。在另一个实施例中,可以由处理器频率然后由事件类型索引该统计数据库。管理员可以负责识别收集要添加到数据库中的数据的时间。例如,假定循环被用作性能计数器事件。那么,如果处理器的频率减少了百分之五十,则在采用下一个中断来补偿频率的改变之前,循环的数目也减少到百分之五十。类似地,因为处理器正在以较低的速率运行,所以预计诸如完成的指令数目之类的其它事件以及大多数的其它事件也减少了。如果循环速率增加了,则可以预计到大多数事件的出现速率也增加了。如果减少频率的原因是由于知道对于给定的应用而言存在大量的高速缓存未中,则已完成的指令的数目的减少可以比频率的降低少得多。例如,频率降低百分之五十,可能仅仅导致已完成的指令减少百分之十。
本发明的方面还认识到,如果时间性能分析与总线速度相关联,则时钟(tick)速率与处理器频率无关,并且不需要为本发明的处理而给出该速率。然而,如果中断速率由处理器循环所控制,也就是说,如果通过选择处理器中的性能计数器并且将该计数器中的事件设置为循环来将中断速率设置为处理器循环,则需要本发明的这个实施例中的各个方面。性能计数器是寄存器,其可以统计在处理器中出现的选定事件的出现。这些事件可以是,例如,高速缓存未中、分支指令、高速缓存中的停顿(stall)、或者浮点运算。本发明的不同方面识别处理器的频率,根据频率改变接收中断,并且为这些处理器补偿采样速率。
如果涉及特定的计数器事件的统计信息可用,则可以应用类似的算法来将报告标准化。此外,可以在不同的处理器上检测事件的速率并且将其改变为一致的。最终,可以在收集有关在跟踪生成期间进行的采样速率的信息时,调整该采样速率。
现在转向图3,其中根据本发明的说明性实施例描述了用于说明在生成和处理跟踪的过程中使用的部件的图。在这个示例中,处理器300和处理器302执行代码304。中断306和308分别由处理器300和302生成。这些中断由内核310接收,而且跟踪记录存储在跟踪缓冲器312和314中。在这些示例中,向每个处理器分配单独的跟踪缓冲器。因此,中断306导致数据被存储在用于处理器300的跟踪缓冲器312内的跟踪316中。中断308导致跟踪记录或者其它数据被存储在用于处理器302的跟踪缓冲器314内的跟踪318中。
在这些示例中,中断306和中断308是由事件的出现而生成的中断。特别地,这些事件是由处理器中的计数器识别和跟踪的事件。中断306和中断308还可能是由于频率改变而生成的。这些类型的中断被称为频率改变记录。在这些说明性的示例中,这些频率改变记录也被存储在跟踪缓冲器312和跟踪316内。
在这些描述的实施例中,性能工具320可以使用定时器性能分析器(profiler)实现。这类工具的示例是tprof工具,其通常与来自国际商业机器公司的高级交互执行体(AIXTM)操作系统一起提供。这类程序获取由生成中断的定时器启动的样本。当定时器到期时,tprof工具识别当前正被执行的指令。tprof工具是在系统性能分析中使用的跟踪工具。这类工具提供了一种采样技术,其包含以下步骤:按时间定期地中断系统;确定被中断的代码的地址连同进程标识符和线程标识符;在软件跟踪缓冲器中记录跟踪记录;以及返回到被中断的代码。
在典型的使用中,当运行所关注的应用时,tprof跟踪工具定期地激活,并且准确地记录应用正在执行的代码中的位置。例如,应用正在执行的这个位置是存储器地址。这个tprof工具用于生成一个应用正在哪里花费时间的性能分析,以向那些分析跟踪信息的应用通知要在哪里尝试改善应用的性能。当然,基于特定的实现方式,性能工具320可以使用任何类型的性能工具来实现。这类性能工具还可以用来收集和分析跟踪。在应用tprof正在运行时期间,可以加载、卸载、或者覆盖诸如JITed代码(即,已及时编译的(just-in-time compiled)代码)之类的模块或者代码。为了产生正确的符号信息,可以在跟踪缓冲器中的一个或者多个中记录有关加载或者卸载的信息。为了使符号信息是正确的,重要的是,将已加载模块中的信息的次序用于确定可应用到tprof样本跟踪记录的符号信息。
在本发明的一个方面中,性能工具320最初为由处理器300和302生成的事件设置采样速率。换句话说,性能工具320可能要求每秒100个样本。性能工具320可以查询统计数据库322,以获得通过中断正在进行采样的特定事件的信息。如果统计数据指示,对于这种特定类型的事件,每秒出现100,000个事件,则期望的采样速率会是每1,000个事件采样或存储一个样本。
因此,性能工具320发送信号或者调用到内核310以生成中断,并且因此生成由处理器300中的性能监控部件所检测到的、用于每1,000个事件的跟踪记录。基于处理器302的频率,对于处理器302执行用于这类事件的类似处理。识别处理器300的频率,并且使用该频率来确定该特定类型的事件所预期的事件数目。
在这类实现方式中,当生成频率改变记录时,对于该特定类型的事件,性能工具320可以基于用于新频率的事件的预期出现而重新调整采样速率。
在另一个说明性的实施例中,所有的样本都被收集和存储在跟踪316和跟踪318中。在这个特定示例中,在已经完成跟踪之后,调整所使用的样本。性能工具320在跟踪开始时识别处理器的频率。如所描述的,对于跟踪316,为一段时间内的所期望的样本计算采样速率。在这个示例中,一段时间内的期望样本是期望采样率。在这个示例中,对于不同的频率,调整由性能工具320使用的事件速率,以便使其在不同的处理器上是一致的。例如,这样进行这个改变以便在事件之间在同一时间上进行采样。例如,如果对于一个特定频率而言、事件的预期出现是每秒100,000个事件,而且期望的采样速率是每秒100个事件,则性能工具320设置性能监控器以导致在已经出现了1,000个事件之后出现中断。在替换实施例中,作为替代,对于该特定频率,中断处理器可以仅仅产生对于记录在跟踪内的每1,000个样本或者事件中的一个样本的跟踪请求。这个从跟踪中选择样本的选择处理会一直进行,直到在跟踪316中遇到频率改变记录为止。在进一步的实施例中,后处理代码可以仅仅使用在已经出现了1,000个事件之后的跟踪数据。
当在跟踪316中识别到新的频率时,使用统计数据库322识别用于该特定频率以及该特定类型事件的事件的预期出现。在这时候,性能工具320选择新的数目的事件出现,以生成中断,从而获取不同数目的样本。做为选择,如果该特定频率导致每秒10,000个事件并且其具有每秒100个样本的采样速率,则从跟踪中的每100个样本中选择一个样本用于在分析中使用。对样本的这个选择一直进行,直到在跟踪中遇到另一个频率改变记录为止。然后重复该处理,以识别要选择哪些样本用于在分析中使用。还以这样的方式处理跟踪318。
本发明的这个后处理方面涉及识别频率和事件类型。性能工具320查询统计数据库322,以识别对于该频率而言事件的预期出现。基于每秒的预期事件,期望的采样速率可以用来识别要选择用于处理的事件出现次数。
在本发明的又一个方面中,性能工具320基于处理器频率的比率,按比例分配在跟踪316和跟踪318内的每个样本的速率。因此,可以向某些样本给予比其它样本更大的权重。
特别地,可以对跟踪316和跟踪318中的样本进行加权。在这些示例中,加权是基于处理器频率的比率的。补偿是基于处理器频率的当前比率的。例如,在诸如跟踪316之类的跟踪开始时,当出现处理器的频率改变时,调整采样速率,以便对于每个处理器而言每秒的样本数是相同的。在这个示例中,如果处理器1为一个吉赫兹(GHz)、处理器2为两个吉赫兹,并且处理器3为三个吉赫兹,则处理器1的采样速率是处理器3的值的三倍。处理器2的采样速率是处理器3的值的3/2。
做为选择,当1∶2∶3的比率是有效的时,可以将处理器1中的每个样本乘以六,将处理器2中的每个样本乘以三,以及将处理器3中的每个样本乘以二,以补偿不同的频率。在识别时间花费在何处的报告中,或者在这种情况下,当出现性能监控器事件时,通常使用由例程利用出现的百分数进行的事件频率的某种类型的识别。通过应用加权技术,在说明性的示例中,在报告中进行改变以反映该加权。
以这种方式,本发明的不同方面考虑了可能在不同的处理器中出现的频率改变。图3所述的示例仅仅示出了两个处理器。本发明的不同方面可以应用于不同于仅仅两个处理器的其它数目的处理器。当处理器的频率将要变为零时,在这些示例中生成频率改变记录。做为选择,可以不记录用于指示频率即将变为零的跟踪记录;然而,在这种情况下,当频率改变为非零的值时,必须发出频率改变跟踪记录。在这种情况下,在频率为零的时间期间,不进行采样,因此不会有记录被记录下来。因为没有记录,所以不必按比例分配或者调整任何东西。不论是哪种情况,当处理器具有非零的频率时,可以记录指示新频率的跟踪记录。
现在转向图4,其中描述了根据本发明的说明性实施例的示例跟踪。在这个示例中,描述了跟踪400和跟踪402。存在有跟踪,诸如图3中的跟踪316和318。跟踪400包含跟踪记录404、406、408、410和412。跟踪402包含跟踪记录414、416、418、420和422。这些跟踪记录分组中的每一分组可以包含一个或多个跟踪记录。取决于特定的实现方式,每当用于指示事件已经出现了的中断或者跟踪记录可能表示在处理器中出现的实际事件的采样时,可以生成这些跟踪记录。
每当出现其中处理器频率改变的中断时,生成频率改变记录,并且将其放入每个跟踪中。因此,即使为与跟踪400相关联的处理器生成了频率改变,也在跟踪400和跟踪402中示出相同的频率改变记录。频率改变记录424位于跟踪记录404和406之间,以及跟踪记录414和416之间。频率改变记录426位于跟踪记录406和408,以及跟踪记录416和418之间。频率改变记录428位于跟踪记录408和410,以及跟踪记录418和420之间。频率改变记录430位于跟踪记录410和412之间,以及跟踪记录420和422之间。
当为其创建了跟踪400的处理器出现频率改变时,生成这些频率改变记录。
例如,诸如图3中的性能工具320之类的性能工具识别跟踪中存在的全部频率改变记录。在这些示例中,频率改变记录是频率改变记录424、426、428、和430。
在这些示例中,频率改变记录包含在生成频率改变记录424时、全部处理器的频率和循环计数。通过将该频率和与基础跟踪相关联的处理器的循环计数相乘,来确定时间。通过获取两个时间之间的差,来确定经过了的时间。例如,在频率改变记录426处,跟踪402中的跟踪记录具有循环时间Cy2,而在跟踪400中的跟踪记录具有循环时间Cx2。类似地,在频率改变记录424处,在跟踪402中的跟踪记录具有循环时间Cy1,而在跟踪400中的跟踪记录具有循环时间Cx1。用于跟踪402的、在频率改变记录424和426之间经过的时间是(Cy2-Cy1)×频率改变记录424中的频率。在跟踪400中,使用了相同的、在频率改变记录424和426之间经过的时间,但是通过将该经过的时间除以(Cx2-Cx1)来确定频率。通过识别经过的时间,可以识别跟踪记录的实际频率,以确定要选择哪些记录用于在分析中使用。当计算跟踪402中的记录的时间时,可以将开始时间初始化为表示该跟踪在处理器上开始的Cx1循环时间乘以这个基础处理器的频率的乘积。当计算跟踪400中的记录的时间时,将频率改变记录424处的开始时间初始化为与在跟踪402中的频率改变记录424中相同的开始时间。在跟踪400和402中的开始循环之间的差值用于对跟踪400中的循环值进行偏移。对于在跟踪记录406中的每个跟踪记录,将距离跟踪402中的频率改变记录424的偏移添加到该跟踪记录中的循环值上,并且将其与所计算的频率相乘,以确定经过的时间。
频率改变可以由硬件指示,并且仅仅通过对于其正进行频率改变的处理器上的硬件而进行。然而,中断处理器使用处理器间中断(Interprocessor Interrupt,IPI)机制,使得记录被写到其它处理器上。做为选择,操作系统可以启动频率改变,并且它会使用IPI机制来通知全部的处理器。
在当跟踪已经完成时调整记录使用的实施例中,性能工具首先在跟踪开始时识别处理器的频率。在一个实施例,为每个处理器确定在频率改变之间的特定事件的数目。使用这个信息,可以从每个处理器中选择相同数目的样本。例如,如果在处理器1上出现了100个事件而在处理器2上出现了200个事件,则可以使用处理器1上的全部事件,但是仅仅使用来自处理器2的每隔一个事件。基于在后处理期间的预期频率,性能工具可以基于跟踪的内容而确定事件的实际频率,并且可以通过知道该频率和循环计数而确定经过的时间。可以采用这个信息,来选择要使用的跟踪记录,或者为使用这个信息的特定类型的事件按比例分配对事件的记录的使用。性能工具从直到第一频率改变记录、即频率改变记录424为止的这么多的样本中选择出一个样本。例如,对于跟踪400而言,用于这个跟踪的处理器频率以及事件类型可以导致每秒出现100,000个事件。换句话说,对于跟踪400每秒生成100,000个跟踪记录。对于跟踪402而言,用于相同类型的事件的处理器频率可能导致每秒出现10,000个事件。因此,对于跟踪402每秒生成10,000个跟踪记录。如果期望的采样速率是每秒100个样本,则性能工具在跟踪记录404中从每1,000个记录中选择一个记录。换句话说,性能工具从跟踪记录404中选择第一个跟踪记录,然后跳过999个跟踪记录,然后选择一个跟踪记录,跳过999个跟踪记录,然后从跟踪记录404中选择另一个跟踪记录。一直进行对跟踪记录的这个选择,直到遇到频率改变记录424为止。对于跟踪402而言,如果用于这个处理器的处理器频率导致每秒有10,000个事件,则以与关于跟踪400描述的方式类似的方式、每100个跟踪记录选择一个跟踪记录。一直进行对用于处理的记录的这个选择,直到遇到频率改变记录424为止。
在这些示例中,响应于事件,进行对所经过的时间的识别和对用于一组记录的真实频率的识别。在这些示例中,这些事件是跟踪的开始、频率改变记录、以及跟踪的结束。在图4中仅仅说明了两个跟踪,以便在该说明性的示例中更清楚地说明不同的处理和特征。当然,可以将相同的处理应用于两个以上的跟踪组。在这些示例中,将每个循环标记(stamp)转换为诸如从跟踪开始起所经过的时间之类的时间值。
现在参见图5,其中根据本发明的说明性实施例描述了用于说明频率改变记录的图。频率改变记录500是诸如图4中的频率改变记录424之类的跟踪记录的示例。在这个示例中,频率改变记录500包含处理器标识502、频率504和循环计数506。这些字段用于一个特定的处理器。处理器标识可以是隐含的,特别是当每个处理器获得中断时更是如此。另外,频率改变记录500还包含处理器标识508、频率510、和循环计数512。这些字段用于存在的另一个处理器。频率改变记录500包括用于在数据处理系统中存在的每个处理器的处理器标识、频率和循环计数。
现在转向图6,其中根据本发明的说明性实施例描述了用于在处理器上同时读取所经过的时间的伪代码的图。在这个示例中,代码600是用于向数据处理系统内的处理器发布处理器间中断的处理的代码示例。这个处理可以在系统内核、内核扩展、或者设备驱动器中实现。从这个处理获得的信息用于生成诸如如上所述的那些频率改变记录之类的频率改变记录。
现在参见图7,其中根据本发明的说明性实施例描述了用于调整在代码执行期间所获取的样本的处理的流程图。图7所述的处理可以在诸如图3中的性能工具320之类的性能工具中实现。
该处理从在跟踪开始时识别每个处理器的频率开始(步骤700)。此后,将消息发送到内核,以便每x个事件获得一个样本(步骤702)。可以通过使用到内核的调用来实现步骤702。可以首先使用统计数据库来识别采样速率,以识别用于该处理器的频率的每秒预期样本。较高的采样速率可以用来确保最初获得足够数目的样本。性能工具向上或者向下调整出现次数,以匹配所请求的速率。例如,性能工具可以从获得在每次出现时的中断开始,然后取决于所经过的时间,性能工具调整出现的次数以匹配所请求的速率。
此后,使用循环和频率识别所经过的时间(步骤704)。这个信息从放入到跟踪缓冲器中的事件样本中获得。将样本之间的循环数目和处理器的频率用于识别所经过的时间。然后,使用所经过的时间来识别每秒的实际样本(步骤706)。通过使用处理器的频率和循环来确定所经过的时间,以及通过统计记录而确定跟踪记录的数目。要注意到,每个记录是使用循环来标记时间的。然后进行关于实际的采样速率是否正确的确定(步骤708)。将这个实际的采样速率和期望的采样速率进行比较。如果实际的采样速率是不正确的,则处理在频率方面向上或者向下调整事件的采样,以达到期望的采样速率(步骤710)。
该处理然后等待一段时间,或者等待频率改变的出现(步骤712)。当这些事件之一出现时,处理返回到上述的步骤700。
返回到步骤708,如果实际的采样速率是正确的,则处理继续到上述步骤712。以这种方式,可以在跟踪期间调整事件的采样,以获得用于该跟踪的期望的采样速率。在这些示例中,为每个生成跟踪的处理器执行这个处理。特别地,图7所述的处理可以使用性能工具中的不同线程同时运行。
现在参见图8,其中根据本发明的说明性实施例描述了用于根据已完成的跟踪来调整事件的采样的处理的流程图。图8所述的处理可以在诸如图3中的性能工具320之类的性能工具中实现。
处理通过在对于一种事件类型的跟踪开始时识别处理器的频率而开始(步骤800)。为处理器的频率识别这种事件的预期出现(步骤802)。使用诸如在图3的统计数据库322中找到的那些信息之类的统计信息,来进行这个识别。在这些示例中,事件的预期出现是每秒一个事件。这个信息通过处理器的频率和事件类型来识别。接下来,该处理计算在一段时间内的期望样本所需要的采样速率(步骤804)。一段时间内的期望样本是期望的采样速率。该处理然后在跟踪中选择用于在分析中使用的样本,直到遇到频率改变记录或者该跟踪的结尾为止(步骤806)。在这些示例中,在步骤806中选择的样本是为这些事件生成的记录。
接下来,进行关于是否已经遇到了频率改变记录的确定(步骤808)。如果已经遇到了频率改变记录,则该处理识别新的频率(步骤810),然后该处理返回到步骤802。否则,结束该处理。为每个跟踪执行这个处理,以便对于处理器的不同频率、获得事件遍及全部跟踪的统一的采样速率。因此,除考虑了在跟踪创建期间的频率改变之外,还考虑了在不同处理器之间的不同频率。
参考图9,其中根据本发明的说明性实施例描述了用于在跟踪完成之后按比例分配事件的处理的流程图。图9所述的处理可以在诸如图3中的性能工具320之类的性能工具中实现。
该处理通过识别处理器频率的比率而开始(步骤900)。此后,该处理选择用于处理的跟踪(步骤902)。在频率改变记录中按比例分配所有事件(步骤904)。接下来,进行关于是否还存在更多未处理的跟踪的确定(步骤906)。如果存在另外的未处理的跟踪,则在步骤902,选择未处理的跟踪用于进行处理。
否则,进行关于是否已经到达跟踪的结尾的确定(步骤808)。如果已经达到了跟踪的结尾,则结束该处理。否则,处理返回到步骤900,以便为具有新频率的下一组记录识别处理器频率的比率。利用这个处理,可以取决于用于样本的频率相对于其它处理器的频率的比率,对样本进行诸如0.5、1、3、或者4.2之类的加权。
因此,本发明的方面提供了一种改进的、用于利用可变处理器频率自动地调整性能分析速率的计算机实现的方法、设备、以及计算机可用程序代码。可以在跟踪的实际生成期间或者在跟踪已经生成之后,应用本发明的不同方面。本发明中的机制可以取决于特定的实现方式而调整采样或者调整样本的加权。以这种方式,可以向不同跟踪记录的分析给予相等的权重,而且其不会因处理器频率的改变而有所偏离。
此外,描述了用于处理其中在每个跟踪中存在一类事件的跟踪的说明性示例。不同的跟踪可以具有不同类型的事件。该示例假定同一类型的事件始终存在于单个跟踪中。本发明的不同实施例还可以应用于其中在代码的执行期间出现频率改变的单个处理器。本发明的不同方面可以应用于在单处理器系统中调整频率改变或者采样速率改变。
本发明的实施例可以采用完全硬件的实施例、完全软件的实施例或者包括硬件和软件单元的实施例的形式。在一个优选实施例中,本发明以软件形式实现,其中软件包括但不限于固件、驻留软件、微码等。
此外,本发明可以采用可从计算机可用介质或者计算机可读介质中访问的计算机程序产品的形式,其中所述介质提供了用于由计算机或者任何指令执行系统使用、或者结合它们使用的程序代码。为了这个描述的目的,计算机可用介质或者计算机可读介质可以是任何这样的设备,这些设备可以包含、存储、传递、传播、或者传送用于由指令执行系统、装置、或者设备使用或者结合它们使用的程序。
所述介质可以是电、磁、光、电磁、红外或者半导体系统(或者装置或者设备)或者传播介质。计算机可读介质的示例包含半导体或者固态存储器、磁带、可移动计算机盘、随机存取存储器(RAM)、只读存储器(ROM)、硬磁盘和光盘。光盘的当前示例包含紧致盘-只读存储器(CD-ROM)、紧致盘-读/写(CD-R/W)和DVD。
适于存储和/或执行程序代码的数据处理系统将包含至少一个通过系统总线直接或者间接地耦接到存储器元件的处理器。存储器元件可以包含在程序代码的实际执行期间采用的本地存储器,大容量存储设备、以及高速缓存存储器,该高速缓存存储器提供了对至少一些程序代码的暂时存储,以便减少在执行期间必须从大容量存储设备中检索代码的次数。
输入/输出或者I/O设备(包括但不限于键盘、显示器、指示设备等)可以直接地或者通过介于其间的I/O控制器耦接到系统。
网络适配器还可以耦接到系统,以使得该数据处理系统能够通过介于其间的专用或者公共网络耦接到其它数据处理系统或者远程打印机或者存储设备。调制解调器、电缆调制解调器以及以太网卡仅仅是几种当前可用的网络适配器的类型。
已经为了说明和描述的目的而给出了对本发明的描述,并且其不是穷举的,也不用于将本发明限制为所公开的形式。对于本领域的普通技术人员来说,许多修改和变化都将是显而易见的。选择和描述这些实施例,是为了最好地说明本发明的原理、实际应用,并且允许本领域的其它普通技术人员理解本发明,其具有各种修改以适合于所考虑的特定使用的各种实施例。

Claims (21)

1、一种用于调整对事件进行采样的速率的计算机实现的方法,该计算机实现的方法包含:
响应于处理器中的频率改变,识别该处理器的频率;以及
响应于对该处理器的频率改变的识别,调整为满足期望的采样速率而对由处理器生成的事件的样本进行选择的速率,以形成调整的速率。
2、如权利要求1所述的计算机实现的方法,还包含:
使用所述调整的速率来选择样本,以获得对其补偿频率改变的跟踪。
3、如权利要求2所述的计算机实现的方法,其中所述选择步骤还包含:
在所述跟踪中在选定数目的样本之后选择一个样本;以及
重复该选择步骤,直到遇到所述跟踪的结尾为止。
4、如权利要求3所述的计算机实现的方法,还包含:
在所述跟踪中根据频率改变记录识别所述频率改变。
5、如权利要求1所述的计算机实现的方法,其中所述调整步骤包含:
确定每个时间段的预期事件数目;
基于所述跟踪,识别每个时间段的实际事件数目;以及
调整所选择的样本数目,以便以期望的采样速率选择样本。
6、如权利要求5所述的计算机实现的方法,其中所述识别步骤包含:
使用来自所述跟踪的经过的循环的数目和频率来计算每个时间段的实际事件数目。
7、如权利要求1所述的计算机实现的方法,其中,在事件的样本的生成期间,执行调整步骤和选择步骤。
8、如权利要求1所述的计算机实现的方法,其中,由性能工具执行所述识别步骤和调整步骤。
9、一种用于调整对事件进行采样的速率的计算机实现的方法,该计算机实现的方法包含:
响应于在多个处理器中的频率改变,识别该多个处理器的频率;
识别所述多个处理器的频率的比率,其中处理器权重与所述多个处理器中的每个处理器相关联;以及
基于与处理器相关联的特定的处理器权重,在从所述频率改变到下一次频率改变期间,调整与该处理器相关联的跟踪中的每个样本的权重。
10、如权利要求9所述的计算机实现的方法,还包含:
响应于在多个处理器中的所述下一次频率改变,识别所述多个处理器的新频率;
识别所述多个处理器的频率的新比率,其中新的处理器权重与所述多个处理器中的每个处理器相关联;以及
基于与处理器相关联的新的处理器权重,在从所述下一次频率改变到后续的频率改变期间,调整在与该处理器相关联的跟踪中的每个样本的权重。
11、一种用于调整对事件进行采样的速率的设备,包含:
用于响应于处理器中的频率改变而识别该处理器的频率的装置;以及
用于响应于对该处理器的频率改变的识别,调整为了满足期望的采样速率而对由处理器生成的事件的样本进行选择的速率,以形成调整的速率的装置。
12、如权利要求11所述的设备,还包含:
用于使用所述调整的速率来选择样本,以获得对其补偿频率改变的跟踪的装置。
13、如权利要求12所述的设备,其中,用于使用所述调整的速率来选择样本以获得对其补偿频率改变的跟踪的装置还包含:
用于在所述跟踪中在选定数目的样本之后选择一个样本的装置;以及
用于重复该选择步骤直到遇到所述跟踪的结尾为止的装置。
14、如权利要求13所述的设备,还包含:
用于在所述跟踪中根据频率改变记录识别所述频率改变的装置。
15、如权利要求12所述的设备,其中,用于响应于对该处理器的频率改变的识别,调整为了满足期望的采样速率而对由处理器生成的事件的样本进行选择的速率,以形成调整的速率的装置,包含:
用于确定每个时间段的预期事件数目的装置;
用于基于所述跟踪来识别每个时间段的实际事件数目的装置;以及
用于调整所选择的样本数目以便以期望的采样速率选择样本的装置。
16、如权利要求15所述的设备,其中,用于基于所述跟踪来识别每个时间段的实际事件数目的装置包含:
用于使用来自所述跟踪的经过的循环的数目和频率来计算每个时间段的实际事件数目的装置。
17、如权利要求12所述的设备,其中,在事件的样本的生成期间,使用用于响应于对该处理器的频率改变的识别、调整为了满足期望的采样速率而对由处理器生成的事件的样本进行选择的速率、以形成调整的速率的装置,以及用于使用所述调整的速率来选择样本以获得对其补偿频率改变的跟踪的装置。
18、一种数据处理系统,包含:
总线;
连接到所述总线的通信单元;
连接到所述总线的存储器,其中所述存储器包括计算机可用程序代码集;以及
连接到所述总线的处理器单元,其中该处理器单元执行所述计算机可用程序代码集,以便响应于处理器中的频率改变,识别该处理器的频率,以及响应于对该处理器的频率改变的识别,调整为了满足期望的采样速率而对由处理器生成的事件的样本进行选择的速率,以形成调整的速率。
19、如权利要求18所述的数据处理系统,其中,该处理器单元进一步执行所述计算机可用程序代码,以便使用所述调整的速率来选择样本以获得对其补偿频率改变的跟踪。
20、如权利要求18所述的数据处理系统,其中,该处理器单元还执行所述计算机可用程序代码,以便在所述跟踪中的选定数目的样本之后选择一个样本,以及重复该选择步骤,直到遇到所述跟踪的结尾为止。
21、一种计算机程序产品,包含:
计算机可用介质,其具有计算机可用程序代码,该程序代码用于执行根据权利要求1-10中的任一项所述的方法中的步骤。
CNB2006100957969A 2005-09-29 2006-06-30 调整性能分析速率的方法和设备 Expired - Fee Related CN100422907C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/239,503 US20070074081A1 (en) 2005-09-29 2005-09-29 Method and apparatus for adjusting profiling rates on systems with variable processor frequencies
US11/239,503 2005-09-29

Publications (2)

Publication Number Publication Date
CN1940821A true CN1940821A (zh) 2007-04-04
CN100422907C CN100422907C (zh) 2008-10-01

Family

ID=37895623

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2006100957969A Expired - Fee Related CN100422907C (zh) 2005-09-29 2006-06-30 调整性能分析速率的方法和设备

Country Status (2)

Country Link
US (1) US20070074081A1 (zh)
CN (1) CN100422907C (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102184005A (zh) * 2011-06-03 2011-09-14 展讯通信(上海)有限公司 一种动态电压和频率调节方法及装置
CN102509556A (zh) * 2011-11-23 2012-06-20 常州金土木自动化研究所有限公司 无源远距离单线传输可读写存储器及其工作方法

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070150754A1 (en) * 2005-12-22 2007-06-28 Pauly Steven J Secure software system and method for a printer
US20070150871A1 (en) * 2005-12-22 2007-06-28 International Business Machines Corporation Autonomically adjusting the collection of performance data from a call stack
US8850402B2 (en) * 2009-05-22 2014-09-30 International Business Machines Corporation Determining performance of a software entity
US9092332B2 (en) * 2013-05-02 2015-07-28 Microsoft Technology Licensing, Llc Activity based sampling of diagnostics data
US9645870B2 (en) 2013-06-27 2017-05-09 Atmel Corporation System for debugging DMA system data transfer
US9256399B2 (en) 2013-06-27 2016-02-09 Atmel Corporation Breaking program execution on events
US9830245B2 (en) * 2013-06-27 2017-11-28 Atmel Corporation Tracing events in an autonomous event system
GB2516113B (en) * 2013-07-12 2015-11-25 Xyratex Tech Ltd Method of, and apparatus for, adaptive sampling
US9306828B2 (en) 2013-07-12 2016-04-05 Xyratex Technology Limited-A Seagate Company Method of, and apparatus for, adaptive sampling
US9703667B2 (en) * 2015-02-22 2017-07-11 International Business Machines Corporation Hardware-based edge profiling
US9983853B2 (en) * 2015-04-29 2018-05-29 Facebook Inc. Controlling data logging based on a lifecycle of a product
US10216614B2 (en) * 2016-11-27 2019-02-26 Amazon Technologies, Inc. Sampling approaches for a distributed code tracing system
US11042469B2 (en) * 2017-08-28 2021-06-22 Microsoft Technology Licensing, Llc Logging trace data for program code execution at an instruction level

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6668318B1 (en) * 2000-05-31 2003-12-23 Xybernaut Corp. System and method for loading one of a plurality of operating systems and adjusting the operating frequency accordingly using transferable core computer that recognizes a system environment
JP2002049605A (ja) * 2000-08-02 2002-02-15 Fujitsu Ltd タイマ調整システム
US6735707B1 (en) * 2000-10-27 2004-05-11 Sun Microsystems, Inc. Hardware architecture for a multi-mode power management system using a constant time reference for operating system support
CN1277205C (zh) * 2002-09-05 2006-09-27 华硕电脑股份有限公司 设定系统工作频率的方法
US6711447B1 (en) * 2003-01-22 2004-03-23 Intel Corporation Modulating CPU frequency and voltage in a multi-core CPU architecture
US7317774B2 (en) * 2003-02-13 2008-01-08 Honeywell International, Inc. Systems and methods for reducing harmonic interference effects in analog to digital conversion
US6768433B1 (en) * 2003-09-25 2004-07-27 Lsi Logic Corporation Method and system for decoding biphase-mark encoded data
US7500152B2 (en) * 2003-12-05 2009-03-03 Freescale Semiconductor, Inc. Apparatus and method for time ordering events in a system having multiple time domains
CN100340977C (zh) * 2004-07-01 2007-10-03 技嘉科技股份有限公司 中央处理器运作频率最佳化调整方法
US7239980B2 (en) * 2005-08-30 2007-07-03 International Business Machines Corporation Method and apparatus for adaptive tracing with different processor frequencies

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102184005A (zh) * 2011-06-03 2011-09-14 展讯通信(上海)有限公司 一种动态电压和频率调节方法及装置
CN102184005B (zh) * 2011-06-03 2014-03-12 展讯通信(上海)有限公司 一种动态电压和频率调节方法及装置
CN102509556A (zh) * 2011-11-23 2012-06-20 常州金土木自动化研究所有限公司 无源远距离单线传输可读写存储器及其工作方法

Also Published As

Publication number Publication date
CN100422907C (zh) 2008-10-01
US20070074081A1 (en) 2007-03-29

Similar Documents

Publication Publication Date Title
CN1940821A (zh) 调整性能分析速率的方法和设备
US8949579B2 (en) Ineffective prefetch determination and latency optimization
CN1924825A (zh) 用于具有不同处理器频率的自适应跟踪的方法及设备
Lau et al. Transition phase classification and prediction
Sembrant et al. Efficient software-based online phase classification
CN1648871A (zh) 发生中断时按其类型限定性能监视事件收集的方法与装置
US20040216013A1 (en) Methods and apparatus to detect patterns in programs
CN1252594C (zh) 使能跟踪重复指令的方法和系统
CN1890636A (zh) 用于低功率程序调整的功率性能监视器的装置和方法
CN1648865A (zh) 为记录事件提供前置与后置处理程序的方法与装置
CN101246447B (zh) 用于测量微处理器中的流水线停顿的方法和装置
CN1716188A (zh) 具有预取指令的微处理器及预取至其高速缓存的方法
WO2004107177A2 (en) Methods and apparatus for stride profiling a software application
CN100346283C (zh) 信息处理系统及存储单元
Dimitrov et al. Memory system characterization of big data workloads
JP2005527875A (ja) 処理の性能を監視する方法及び装置
US20070061108A1 (en) Adaptive processor utilization reporting handling different processor frequencies
CN102708029B (zh) 性能瓶颈诊断方法和设备
Ouyang et al. Active SSD design for energy-efficiency improvement of web-scale data analysis
Uzelac et al. Real-time unobtrusive program execution trace compression using branch predictor events
Criswell et al. A survey of phase classification techniques for characterizing variable application behavior
Oh et al. Maphea: A framework for lightweight memory hierarchy-aware profile-guided heap allocation
Li et al. A learning-based approach towards automated tuning of ssd configurations
JP5270240B2 (ja) 拡張命令スループットに関する適応的実行サイクル制御のための方法、システム、およびプロセッサ
Panda et al. HALO: A hierarchical memory access locality modeling technique for memory system explorations

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
C17 Cessation of patent right
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20081001

Termination date: 20100630