CN103838662B - 动态库性能分析方法和动态库性能分析系统 - Google Patents

动态库性能分析方法和动态库性能分析系统 Download PDF

Info

Publication number
CN103838662B
CN103838662B CN201310581221.8A CN201310581221A CN103838662B CN 103838662 B CN103838662 B CN 103838662B CN 201310581221 A CN201310581221 A CN 201310581221A CN 103838662 B CN103838662 B CN 103838662B
Authority
CN
China
Prior art keywords
pmu
function
target process
dynamic
built
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.)
Active
Application number
CN201310581221.8A
Other languages
English (en)
Other versions
CN103838662A (zh
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.)
Samsung Electronics Co Ltd
Seoul National University Industry Foundation
Original Assignee
Samsung Electronics Co Ltd
Seoul National University Industry Foundation
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 Samsung Electronics Co Ltd, Seoul National University Industry Foundation filed Critical Samsung Electronics Co Ltd
Publication of CN103838662A publication Critical patent/CN103838662A/zh
Application granted granted Critical
Publication of CN103838662B publication Critical patent/CN103838662B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • 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
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • 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
    • 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
    • G06F11/348Circuit details, i.e. tracer hardware
    • 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/88Monitoring involving counting

Landscapes

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

Abstract

提供一种动态库性能分析方法和动态库性能分析系统,包括:将第一断点指令写入动态库函数的开始地址;记录第一事件计数值,所述第一事件计数值是当目标进程执行第一断点指令时的进程性能测量单元PMU计数;将第二断点指令写入动态库函数的返回地址;通过将记录的第一事件计数值与第二事件计数值进行比较来计算在执行动态库函数时在处理器核心中产生的PMU计数值,所述第二事件计数值是当目标进程执行第二断点指令时的进程PMU计数,其中,进程PMU计数是在执行目标进程时在处理器核心中产生的PMU计数值的累加值。

Description

动态库性能分析方法和动态库性能分析系统
本申请要求于2012年11月23日提交到韩国知识产权局的第10-2012-0133854号韩国专利申请的优先权,其中,所述专利申请的公开内容通过引用全部合并于此。
技术领域
与示例性实施例一致的方法和设备涉及一种动态库性能分析方法和动态库性能分析系统。
背景技术
性能分析指的是当前执行的程序的执行状态的分析或与操作系统(OS)内核的通信状态的分析。通过性能分析,可以测量程序的性能信息,并可检测出潜在影响性能的因素。
发明内容
示例性实施例提供一种动态库性能分析方法、存储所述方法的计算机可读记录介质和动态库性能分析系统,所述系统可测量在动态库函数单元中性能测量单元(PMU)事件计数。
示例性实施例也提供一种动态库性能分析方法、使用所述方法的计算机可读记录介质和动态库性能分析系统,所述系统可测量在分时系统中由于发生上下文切换在动态库函数单元中性能测量单元(PMU)事件计数。
根据示例性实施例的一方面,提供一种动态库性能分析方法,包括:将第一断点指令写入动态库函数的开始地址;记录第一事件计数值,所述第一事件计数值是当目标进程执行第一断点指令时的进程性能测量单元PMU计数;将第二断点指令写入动态库函数的返回地址;通过将记录的第一事件计数值与第二事件计数值进行比较来计算在执行动态库函数时在处理器核心中产生的PMU计数值,所述第二事件计数值是当目标进程执行第二断点指令时的进程PMU计数,其中,进程PMU计数是在执行目标进程时在处理器核心中产生的PMU计数值的累加值。
根据示例性实施例的一方面,提供一种动态库性能分析方法,包括:对目标进程分配任务结构,将在执行目标进程时产生的性能测量单元(PMU)计数值记录在任务结构中作为进程PMU计数,其中,记录步骤包括:当使用上下文切换来开始执行目标进程时,初始化处理器核心的PMU计数器的PMU计数值,并且在目标进程切换到另一进程之前,将处理器核心的PMU计数器的当前PMU计数值累加地记录在任务结构中作为进程PMU计数。
根据示例性实施例的一方面,提供一种动态库性能分析方法,包括:在动态库函数的起始地址处写入第一断点指令;当目标进程执行第一断点指令时产生函数进入事件;在动态库函数的返回地址处写入第二断点指令;当目标进程执行第二断点指令时产生函数结束事件。
根据示例性实施例的又一方面,提供一种动态库性能分析系统,包括:PMU计数器,被配置为记录作为在处理器核心中发生的事件的累加值的PMU计数值;任务结构,在任务结构中针对每一个目标进程记录了进程PMU计数,所述进程PMU计数是在执行目标进程时记录的累加的PMU计数;监视进程,被配置为在动态库函数的起始地址处写入第一断点指令和在动态库函数的返回地址处写入第二断点指令,其中,监视进程记录作为当目标进程执行第一断点指令时的进程PMU计数的第一事件计数值,记录作为当目标进程执行第二断点指令时的进程PMU计数的第二事件计数值,并通过将第一事件计数值与第二事件计数值进行比较来计算在执行动态库函数时在处理器核心中产生的PMU计数。
附图说明
通过参照附图详细地描述示例性实施例,以上和其它方面将变得更清楚,其中:
图1是示出根据示例性实施例的动态库性能分析方法的示意流程图;
图2到图8示意性地示出监视进程和目标进程的操作;
图9示出在目标进程中的事件发生和在监视进程中事件处理过程的示意图;
图10是示出进程调度器的进程PMU计数计算过程的示意流程图;
图11和图12示出使用与用于测量进程PMU计数的进程相应的任务结构的性能分析系统;
图13示出当从目标进程的库函数中调用另一库函数时的进程PMU计数测量过程。
具体实施方式
现在将参照附图,在下文中更全面地描述示例性实施例。然而,示例性实施例可以以各种形式被实现并不应被理解为限于在此阐述的示例性实施例。相反地,提供这些示例性实施例使得本公开将是彻底且完整的,并将全面地向本领域技术人员传达本公开的范围。贯穿整个说明,相同的标号指示相同的组件。
使用的单数术语和类似指称应被理解为包含单数和复数两者,除非这里另有指示或清楚地与上下文相矛盾。术语“包含”、“具有”、“包括”和“含有”被理解为开放式术语(即,表示“包括但不限于”),除非另有提及。
除非另有定义,本文使用的所有的技术术语和科学术语与本领域普通技术人员所通常理解的具有相同的意义。应注意,使用的任意和全部示例,或在本文中提供的示例性术语仅意图更好地示意本公开而并非限制本公开的范围,除非另有所指。此外,除非另有定义,可能不会过分解释在通用字典中定义的全部术语。
在下文中,将参照附图描述示例性实施例。
在以下描述中,作为处理器核心的内部组件的性能测量单元(PMU),指示用于测量在处理器核心中发生的事件的组件。这里,本领域技术人员可理解在处理器核心中发生的事件表示时钟周期、存储器操作(例如,读取或写入)、缓存事件(例如,命中、未命中或写回)、执行指令等。
PMU计数器是在PMU内提供的寄存器。PMU计数器对在处理器核心中的发生的事件进行计数并记录PMU事件计数的累加值。可在软件中编程PMU,并且PMU计数器可使用特定汇编指令来执行读取和写入操作。
在以下的描述中,从PMU计数器读取的PMU计数被用作硬件PMU计数。
进程调度器是支持分时系统的操作系统(OS)内核的内部组件。进程调度器通过根据优先级的顺序划分中央处理单元(CPU)可用性来执行多个进程。在示例性实施例中,将通过针对Linux内核的示例来描述OS内核。
图1是示出根据本发明的实施例的动态库性能分析方法的示意流程图,而图2到图8示意性地示出监视进程和目标进程的操作。
参照图1,首先,监视进程在库函数的起始地址处设置第一断点(S110)。
在用户进程被执行时,监视进程跟踪用户进程并监视在处理器核心中发生的事件。监视进程可包括例如,分析器。这里,分析器是用于测量程序的性能和在开发程序的过程中发现瓶颈的开发工具。
例如,库函数可以是例如,动态库函数但是不限于此。
参照图2,执行监视进程10和目标进程20。目标进程20是作为监视进程10的监视目标的用户进程并包括用户程序21和链接到用户程序21的动态库22。
如上所述,监视进程10跟踪用户进程,并且可以访问(读取、写入)目标进程20的地址空间。在OS(诸如Linux)中,OS通常不能直接访问其它用户进程的地址空间和寄存器。然而,监视进程10例外地被允许访问其它用户进程的空间地址和寄存器。
监视进程10在库函数的起始地址(例如,在地址0x20)处设置第一断点BP_ST。其后,监视进程10可进入等待模式。例如,可通过插入软件断点指令设置第一断点BP_ST,但不限于此。
在设置第一断点BP_ST中,断点指令可取代库函数的起始地址的原始指令。
同时,虽然没有清晰地示出,但是监视进程10在库函数的起始地址处设置第一断点BP_ST之前,动态库22可被载入存储器并与用户程序21链接。
在用户程序21中,为了调用预定动态库函数,用于调用用户程序21的动态库函数的代码可调用与动态库函数相应的程序链接表(PLT),并且具有动态库函数被加载到的地址的全局偏移表(GOT)可被PLT引用。这里,记录在GOT中的动态库函数被加载到的地址可被动态链接器记录。也就是说,GOT的缺省值可被设置为动态链接器的地址。因此,动态库函数的第一调用执行动态链接器并将动态库加载到存储器,并且动态库函数的地址可被记录在GOT中。其后,用于调用用户程序21的动态库函数的指令可在不执行动态链接器的情况下,通过引用记录在GOT中的动态库函数的地址来使用PLT调用动态库函数。
这里,PLT是第一次被调用的代码区域,其用于使用户程序21调用预定的动态库函数。PLT包括对于每一个动态库函数间接调用各种动态库函数的代码。GOT是由PLT引用用于调用预定动态库函数的数据区域。动态库函数的地址被存储在GOT的存储空间中。
接下来,再次参照图1,目标进程执行第一断点(S120)。如果目标进程在库函数的起始地址处执行第一断点,则可产生事件(例如,函数进入事件)。通过函数进入事件,停止目标进程的执行并从等待模式中释放监视进程。当目标进程执行断点时,可发生事件并且监视进程可处理所述事件,这将参照图9更加详细地描述。
参照图3,在用户程序21中执行用于调用库函数的代码(DL_CL)(例如,地址0x10的代码)。因此,可以通过与库函数相应的PLT,通过引用记录在GOT中的库函数的地址来调用库函数的起始地址0x20。
可选地,在运行时加载库函数的情况下,可通过使用函数指针直接调用动态链接器来直接调用库函数的起始地址0x20。最终,从目标进程20调用库函数,并执行在库函数的起始地址0x20设置的第一断点BP_ST。
接下来,再次参照图1,监视进程获得目标进程的资源使用统计(S130)。可通过函数进入事件将监控进程从等待模式中释放,并且监控进程可获得目标进程的资源使用统计。
在OS内核中,资源使用统计可包括关于进程的资源使用统计的数据(例如,Linux的等待因素中的结构体使用)但不限于此。
在示例性实施例中,进程PMU计数信息可被添加到资源使用统计。由目标进程的任务结构来管理进程PMU计数信息,而且进程PMU计数信息是在执行目标进程时产生的针对每一个目标进程的PMU计数的累加值。
这里,进程PMU计数是在执行目标进程时(也就是说,从开始执行由进程调度器调度到处理器核心的预定用户进程时到另一用户进程被调度到处理器核心停止执行用户进程时)产生的PMU计数的累加值。通常,相应于各个处理器核心,记录硬件PMU计数。然而,在示例性实施例中,进程PMU计数是与每一个进程相应的记录的PMU计数。
参照图4,监视进程10获得目标进程20的第一资源使用统计。这里,第一资源使用统计指示当随着执行目标进程20的第一断点BP_ST产生函数进入事件时的目标进程20的资源使用统计。第一资源使用统计包括进程PMU计数,进程PMU计数是直到目标进程20执行第一断点BP_ST为止在处理器核心中产生的累加的PMU计数。
通常,监视进程10不能直接访问OS内核。在示例性实施例中,为了将在OS内核中收集的进程PMU计数传送到监视进程10,如上所述,可以使用附加地包括进程PMU计数信息的资源使用统计,但不限于此。
接下来,再次参照图1,监视进程在库函数进入模式中记录进程PMU计数(S140)。监视进程从目标进程的第一资源使用统计中提取进程PMU计数,并可将提取的进程PMU计数记录为第一PMU计数。
接下来,监视进程在库函数的返回地址处设置第二断点(S150)。在下文中,监视进程进入等待模式,并可以重新开始目标进程的执行。可以通过将第二断点的指令(例如,软件断点指令)插入到库函数的返回地址来设置第二断点,但不限于此。
参照图5,在库函数的返回地址(例如,地址0x11)处设置第二断点BP_RT。库函数的返回地址可以是在库函数的执行被完成之后记录在其中的目标进程20的用户程序21的下一执行代码的地址。
接下来,再次参照图1,目标进程执行第二断点(S160)。如果目标进程执行在库函数的返回地址处设置的第二断点,则可发生事件(例如,函数结束事件)。目标进程的执行被中断,并且由函数结束事件将监视进程从等待模式中释放。
参照图6,在用户程序21中,执行库函数的返回地址的执行代码,例如,地址0x11的代码。当完成库函数的执行并且从目标进程20中返回库函数时,执行设置在库函数的返回地址处的第二断点BP_RT。
接下来,再次参照图1,监视进程获得目标进程的资源使用统计(S170)。在获得目标进程的资源使用统计时,由函数结束事件将监视进程从等待模式中释放。
参照图7,监视进程获得目标进程20的第二资源使用统计。这里,在根据第二断点BP_RT的执行在发生函数结束事件时获得目标进程20的第二资源使用统计。第二资源使用统计包括到目标进程20已经执行第二断点BP_RT为止在处理器核心中产生的PMU计数的累加的进程PMU计数。
接下来,再次参照图1,监视进程在库函数结束模式中计算累加的进程PMU计数(S180)。监视进程可从目标进程的第二资源使用统计中提取进程PMU计数并可将提取的进程PMU计数记录为第二PMU计数。
监视进程计算通过将第一PMU计数与第二PMU计数进行比较来计算在执行动态库函数时产生的累加的PMU计数。
同时,监视进程可累加地存储每一个动态库函数计算的进程PMU计数。为此,可提供存储空间以用于累加地存储每一个动态库函数的PMU计数。例如,可以在监视进程的用户存储器空间中提供存储空间,但不限于此。
接下来,从库函数的返回地址移除第二断点(S190)。其后,监视进程进入等待模式,并且可重新开始目标进程的执行。
参照图8,监视进程10从库函数的返回地址0x11中移除第二断点BP_RT。
常规的库函数性能分析方法可包括例如,在编译或运行时插入的监视代码的使用或基于性能分析的采样。
然而,在常规的库函数性能分析方法中会出现多种问题。也就是说,在编译时使用插入的监视代码的方法中,为了执行性能分析会需要重新编译。此外,当在分时系统中执行上下文切换时,另一进程的运行时间会与性能分析相关联,从而导致不准确结果。特别地,基于性能分析的采样具有局限在于基于性能分析的采样会基于统计数据导致不准确、近似的结果。
例如,在Linux环境中使用并基于在执行时插入监视代码的方法的ltrace,可被用作在执行性能分析时用于跟踪库函数的执行的工具。在ltrace中,库函数的起始点和结束点插入软件断点,库函数的执行时间被计算为给定事件与断点一起发生的时间。此外,在ltrace中,假设库函数起始于与库函数相应的PLT的起始地址,计算库函数目标的执行时间。
特别地,使用ltrace,不能对在目标进程的运行时动态地加载的库函数进行性能分析。由于通过动态链接器使用函数指针来获得在运行时显式加载的库函数的地址,并且在没有通过PLT的情况下直接调用该地址,所以使用在PLT设置的断点不能获得任何事件。此外,性能分析只能在第一次调用库函数时启动,而当从库函数中调用另一库函数时,不能完成性能分析。此外,当在分时系统中发生上下文切换时,另一进程的运行时间可被无意地包含在计算的目标进程的运行时间中。
但是,在根据示例性实施例的动态库分析方法中,在运行时加载动态库函数之后,在没有将断点插入PLT的起始地址的情况下,断点被设置在动态库函数的起始地址处,从而更加广泛地支持动态库函数的性能分析。
因此,也可对甚至不调用PLT的库函数进行性能分析。此外,如稍后将要描述地,甚至从相关的库函数调用另一库函数时,能够对各个库函数进行性能分析,因而独立地测量并计算调用程序的进程PMU计数和被调用程序的进程PMU计数。
在下文中,将参照图9描述在目标进程中的事件发生和在监视进程中的事件处理过程。图9示意性示出在目标进程中的事件发生和在监视进程中的事件处理过程。
参照图9,首先,监视进程10开始监视目标进程20(S210)。如上所述,监视进程10可在跟踪目标进程20时,在目标进程20的库函数的起始地址处设置第一断点。
接下来,监视进程10进入事件等待模式以等待事件的发生(S220)。
接下来,执行目标进程20(S310)。目标进程20可执行由监视进程10设置的断点。例如,目标进程20可执行在库函数的起始地址处设置的第一断点。可选地,目标进程20可执行在库函数的返回地址处设置的第二断点。
接下来,检测在目标进程20中的事件的发生(S320)。当目标进程20执行断点时,在目标进程20中发生事件。例如,当目标进程20执行在库函数的起始地址设置的第一断点时,可发生函数进入事件。可选地,目标进程20可执行在库函数的返回地址处设置的第二断点,可发生函数结束事件。
停止目标进程20的执行(S330)。如果发生事件,则结束目标进程20的执行,并且事件的发生被通知到监视进程10以允许从事件等待模式中释放监视进程。
接下来,监视进程10可处理事件(S230)。当目标进程20执行断点时,监视进程10可处理事件。例如,在发生函数进入事件的情况下,当目标进程20执行在库函数的起始地址处设置的第一断点时,监视进程10可获得目标进程20的资源使用统计然后从中提取进程PMU计数,由此在库函数的返回地址处设置第二断点。可选地,在当目标进程20执行在库函数的返回地址处设置的第二断点时发生函数结束事件的情况下,监视进程10可获得目标进程20的资源使用统计,以随后从中提取进程PMU计数,接着是移除在库函数的返回地址处设置的第二断点。
接下来,监视进程10重新开始目标进程的执行(S240)。监视进程10以上述方式处理事件并再次进入等待模式以从S220重复处理步骤。然后,监视进程10重新开始目标进程20的执行以允许目标进程20重复地从S310执行处理步骤。
在下文中,将参照图10描述进程调度器的进程PMU计数计算过程。图10是进程调度器的进程PMU计数计算过程的示意流程图。
参照图10,在OS内核中执行进程调度器(S410)。如上所述,进程调度器通过根据优先级的顺序划分CPU可用性来执行多个进程。
接下来,当通过上下文切换开始执行目标进程时,进程调度器初始化PMU计数器的硬件PMU计数(S420)。更具体地,在上下文切换之前,例如,当监视进程进入等待模式并且在目标进程被执行之前,可将硬件PMU计数初始化为0。
接下来,OS内核执行目标进程(S430)。
接下来,为了实现将上下文切换到另一进程,目标进程进入进程调度器(S440)。
接下来,进程调度器累加地将硬件PMU计数记录在与目标进程相应的任务结构中(S450)。更具体地,进程调度器读取累加地记录在PMU计数器中的硬件PMU计数直到完成目标进程的执行并调度另一用户进程为止,例如,直到停止目标进程的执行并执行监控进程为止。然后,读取的硬件PMU计数被累加地记录进程PMU计数中,而进程PMU计数被记录在与目标进程相应的任务结构中。
每当发生上下文切换时,可重复执行图10中所示的进程PMU计数计算过程。因此,即使发生上下文切换,执行另一用户进程时产生的硬件PMU计数不被包括在进程PMU计数中。
图11和图12示出使用与用于测量进程PMU计数的进程相应的任务结构的性能分析系统。
参照图11,性能分析系统包括监视进程10、第一目标进程20a、第二目标进程20b、OS内核30和处理器核心40。
当产生函数进入事件和函数结束事件时,监视进程10可从资源使用统计中提取目标进程的进程PMU计数,并基于提取的进程PMU计数,监视进程10可计算在目标库函数的执行期间产生的进程PMU计数。
第一目标进程20a和第二目标进程20b是将由监视进程10跟踪的用户进程。在图11中给出了两个目标进程的示例,即,第一目标进程20a和第二目标进程20b,但是示例性实施例的方面不限于此。
OS内核30包括任务结构31和进程调度器32。任务结构31是从OS内核分配给每一个进程的数据结构。在图11中给出了包括第一任务结构31a和第二任务结构31b的任务结构31的示例,但示例性实施例的方面不限于此。
可在任务结构31a和任务结构31b中的每一个中额外地提供累加地记录进程PMU计数的空间。在调度第一目标进程20a时产生的进程PMU计数可被记录在第一任务结构31a中,而在调度第二目标进程20b时产生的进程PMU计数可被记录在第二任务结构31b中。处理器核心40可包括PMU 41和CPU 42。PMU 41测量在处理器核心40中发生的事件并将PMU计数值记录在PMU计数器中。可根据由PMU 41支持的PMU计数器的数量来测量在库函数的执行期间发生的各种事件。在进程调度中,CPU 42根据进程调度器32执行用户进程。
参照图12,性能分析系统包括可作为多处理器核心的处理器核心50。在图12中给出了处理器核心50包括第一CPU和第二CPU的示例,但不限于此。
多处理器核心50可包括与CPU 52和CPU 54的PMU 51和PMU 53。
根据图10中示出的进程PMU计数计算过程以及图11和图12中示出的使用与进程相应的任务结构的性能分析系统,在每一个进程的执行期间产生的进程PMU计数可被保留在OS内核的内部数据结构中。因此,即使在分时系统中执行上下文切换时,使用由OS内核为每一个进程独立地分配的任务结构,因此阻止了另一用户进程的硬件PMU计数被无意的包括在目标进程的进程PMU计数中。
在下文中,将参照图13描述当从目标进程的库函数中调用另一库函数时的进程PMU计数测量过程。图13示出当从目标进程的库函数中调用另一库函数时的进程PMU计数测量过程。
参照图13,用户程序21包括执行代码21a和PLT 21b。稍后将会描述的PLT 21b是用于调用动态库函数的代码区域,并可包括例如qux_plt、baz_plt、bar_plt、foo_plt等。
链接到用户程序21的动态库22可包括,例如动态库函数(诸如,qux()、baz()、bar()或foo())。通过监视进程,分别在动态库函数的起始地址处设置断点BP_ST1、BP_ST2、BP_ST3和BP_ST 4。
如果在执行代码21a中调用动态库函数,例如,foo(),则从PLT 21b中调用用于调用foo()的代码区域,例如foo_plt。接下来,代码区域foo_plt通过参照记录在GOT(未示出)中的foo()的地址来调用加载到存储器的动态库22的函数foo()。
由于在foo()的起始地址处设置第一断点BP_ST4,所以产生函数进入事件,并且监视进程记录在foo()函数输入模式中的进程PMU计数作为第一PMU计数值。其后,监视进程在foo()的返回地址处设置第二断点BP_RT4。
接下来,如果执行foo()时调用另一动态库函数,例如,bar(),则产生函数进入事件,这是因为在bar()的起始地址处设置了第三断点BP_ST3,并且监视进程将bar()函数进入模式中的进程PMU计数记录作为第二PMU计数值。其后,监视进程在bar()的返回地址处设置第四断点BP_RT3。
接下来,如果完成bar()的执行并返回bar(),则产生函数结束事件,这是因为在bar()的返回地址处设置了第四断点BP_RT3,并且监视进程将bar()函数结束模式中的进程PMU计数记录作为第三PMU计数值。
接下来,如果完成foo()的剩余代码的执行并返回foo(),则产生函数进入事件,这是因为在foo()的返回地址处设置了第二断点BP_RT4,并且监视进程将foo()函数结束模式中的进程PMU计数记录作为第四PMU计数值。
为了计算执行foo()函数时产生的实际进程PMU计数,监视进程获得通过从第四PMU计数值减去第一PMU计数值得到的PMU计数与通过从第三PMU计数值减去第二PMU计数值得到的PMU计数之间的差。如上所述,根据示例性实施例,由于调用程序与被调用程序可被单独地测量并计算,所以可以实现对各个库函数的性能分析。
关于公开于此的方面中描述的方法或算法的步骤可直接在硬件实现中实现,在由处理器执行的软件模块中实现或在两者的结合中实现。软件模块可置于RAM存储器、闪存、ROM存储器、EPROM存储器、EEPROM存储器、寄存器、硬盘、可拆卸磁盘、CD-ROM或本领域公知的存储介质的任何其它形式。示例性存储介质可被耦合到处理器,从而使处理器可从存储介质中读取信息并将信息写入存储介质。在可选方案中,存储介质可被集成到处理器。而且,在一些方面,处理器和存储介质可置于特定用途集成电路(ASIC)。此外,ASIC可置于用户终端中。可选地,处理器和存储介质可作为独立组件放置在用户终端中。
在详细描述的结尾,本领域技术人员将理解,在实质上不脱离本发明的原理的情况下,可对优选的实施例做出多个变化和修改。因此,在描述性意义上使用的示例性实施例而不是为了限制的目的。

Claims (10)

1.一种监视目标进程的执行的监视进程的动态库性能分析方法,所述目标进程包括用户程序以及被动态地载入存储器并与所述用户程序相链接的第一动态库函数和第二动态库函数,所述方法包括:
在存储器中的目标进程的地址空间中,将第一断点指令写入通过调用与第一动态库函数相应的程序链接表PLT来指示的第一动态库函数的开始地址,其中,所述PLT引用存储第一动态库函数的开始地址的全局偏移表GOT;
记录第一事件计数值,所述第一事件计数值是当目标进程执行第一断点指令时的进程性能测量单元PMU计数;
在存储器中的目标进程的地址空间中将第二断点指令写入第一动态库函数返回到的所述用户程序的地址;
在存储器中的目标进程的地址空间中将第三断点指令写入第二动态库函数的开始地址;
在第一动态库函数正在执行的同时,记录第二事件计数值,其中,所述第二事件计数值是当目标进程执行第三断点指令时的进程PMU计数;
在存储器中的目标进程的地址空间中将第四断点写入第二动态库函数的返回地址;
在第一动态库函数正在执行的同时,记录第三事件计数值,其中,所述第三事件计数值是当目标进程执行第四断点指令时的进程PMU计数;
当第一动态库函数被完成和返回时,记录第四事件计数值,其中,所述第四事件计数值是当目标进程执行第四断点指令时的进程PMU计数;
通过获得第一进程PMU计数与第二进程PMU计数之间的差来计算在执行第一动态库函数时在处理器核心中产生的PMU计数值,其中,第一进程PMU计数是通过从第四事件计数值减去第一事件计数值而得到的,第二进程PMU计数是通过从第三事件计数值减去第二事件计数值而得到的;
其中,第一进程PMU计数是在执行目标进程时在处理器核心中产生的PMU计数值的累加值,并且当在分时系统中发生上下文切换时不包括不同于目标进程的其它进程的第三进程PMU计数。
2.如权利要求1所述的动态库性能分析方法,其中,第一事件计数值的记录步骤包括:当目标进程执行第一断点指令时,获得目标进程的第一资源使用统计。
3.如权利要求2所述的动态库性能分析方法,其中,第一事件计数值的记录步骤包括:通过从目标进程的第一资源使用统计中提取目标进程的第一进程PMU计数来记录第一事件计数值。
4.如权利要求2所述的动态库性能分析方法,其中,第一资源使用统计包括到目标进程执行第一断点指令为止在目标进程的执行期间在处理器核心中产生的累加的PMU计数值的进程PMU计数。
5.如权利要求1所述的动态库性能分析方法,其中,在处理器核心中产生的PMU计数值的计算步骤包括:在目标进程执行第二断点指令时,获得目标进程的第二资源使用统计。
6.如权利要求5所述的动态库性能分析方法,其中,在处理器核心中产生的PMU计数值的计算步骤还包括:从目标进程的第二资源使用统计中提取目标进程的第一进程PMU计数。
7.如权利要求5所述的动态库性能分析方法,其中,第二资源使用统计包括在目标进程执行第一断点指令之后到目标进程执行第二断点指令进程PMU计数为止,在目标进程的操作期间在处理器核心中产生的累加的PMU计数值的进程PMU计数。
8.如权利要求6所述的动态库性能分析方法,其中,在处理器核心中产生的PMU计数值的计算步骤包括:通过将提取的第二事件计数值与记录的第一事件计数值进行比较来计算在执行动态库函数时在处理器核心中产生的PMU计数值。
9.如权利要求1所述的动态库性能分析方法,还包括:
在第一断点指令的写入之后,进入监视进程的等待模式,
其中,第一事件计数值的记录步骤包括:当目标进程执行第一断点指令时,从等待模式中释放监视进程。
10.如权利要求1所述的动态库性能分析方法,还包括:
在第二断点的写入步骤后,进入监视进程的等待模式,
其中,第二事件计数值的记录步骤包括:当目标进程执行第二断点指令时,从等待模式中释放监视进程。
CN201310581221.8A 2012-11-23 2013-11-19 动态库性能分析方法和动态库性能分析系统 Active CN103838662B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR10-2012-0133854 2012-11-23
KR1020120133854A KR101991687B1 (ko) 2012-11-23 2012-11-23 동적 라이브러리 프로파일링 방법, 이를 기록한 컴퓨터로 읽을 수 있는 기록 매체 및 동적 라이브러리 프로파일링 시스템

Publications (2)

Publication Number Publication Date
CN103838662A CN103838662A (zh) 2014-06-04
CN103838662B true CN103838662B (zh) 2018-04-24

Family

ID=49518715

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310581221.8A Active CN103838662B (zh) 2012-11-23 2013-11-19 动态库性能分析方法和动态库性能分析系统

Country Status (5)

Country Link
US (1) US9959191B2 (zh)
EP (1) EP2735970B1 (zh)
JP (1) JP2014106972A (zh)
KR (1) KR101991687B1 (zh)
CN (1) CN103838662B (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9479398B2 (en) * 2013-07-03 2016-10-25 International Business Machines Corporation Enforcing runtime policies in a networked computing environment
CN105677550A (zh) * 2015-12-29 2016-06-15 广州华多网络科技有限公司 一种基于Linux系统的性能采集分析的方法、装置及系统
CN106126384B (zh) * 2016-06-12 2019-02-01 华为技术有限公司 一种采集性能监视单元pmu事件的方法及装置
KR20180079852A (ko) * 2017-01-03 2018-07-11 삼성에스디에스 주식회사 애플리케이션 변환 장치 및 방법
JP7218556B2 (ja) * 2018-12-06 2023-02-07 富士通株式会社 演算処理装置および演算処理装置の制御方法

Family Cites Families (54)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5086386A (en) * 1990-03-23 1992-02-04 Sun Microsystems, Inc. Method and apparatus for benchmarking the working set of window-based computer systems
EP0689141A3 (en) * 1994-06-20 1997-10-15 At & T Corp Disruption-based hardware support for system performance profiling
JP3419916B2 (ja) 1994-11-18 2003-06-23 富士通株式会社 プロセス実行情報採取装置
US5680619A (en) 1995-04-03 1997-10-21 Mfactory, Inc. Hierarchical encapsulation of instantiated objects in a multimedia authoring system
US6330691B1 (en) * 1996-02-23 2001-12-11 Institute For The Development Of Emerging Architectures Llc Use of dynamic translation to provide breakpoints in non-writeable object code
US6016466A (en) * 1996-08-27 2000-01-18 Compuware Corporation Accurate profile and timing information for multitasking systems
US5970245A (en) * 1997-01-03 1999-10-19 Ncr Corporation Method for debugging shared procedures contained in dynamic link library files
US6338159B1 (en) 1997-12-12 2002-01-08 International Business Machines Corporation System and method for providing trace information
US6249907B1 (en) * 1998-03-24 2001-06-19 International Business Machines Corporation Method system and article of manufacture for debugging a computer program by encoding user specified breakpoint types at multiple locations in the computer program
US6079032A (en) * 1998-05-19 2000-06-20 Lucent Technologies, Inc. Performance analysis of computer systems
US6988271B2 (en) * 1998-10-02 2006-01-17 Microsoft Corporation Heavyweight and lightweight instrumentation
US6263491B1 (en) * 1998-10-02 2001-07-17 Microsoft Corporation Heavyweight and lightweight instrumentation
US6381735B1 (en) * 1998-10-02 2002-04-30 Microsoft Corporation Dynamic classification of sections of software
US7032213B1 (en) * 1999-09-01 2006-04-18 Microsoft Corporation Fixing incompatible applications using a light debugger
US6728955B1 (en) * 1999-11-05 2004-04-27 International Business Machines Corporation Processing events during profiling of an instrumented program
US6658654B1 (en) * 2000-07-06 2003-12-02 International Business Machines Corporation Method and system for low-overhead measurement of per-thread performance information in a multithreaded environment
JP3654165B2 (ja) 2000-09-21 2005-06-02 日本電気株式会社 コンピュータシステムに適用するライブラリのリンク方法及びそのプログラムを記録した記録媒体
FR2820221B1 (fr) 2001-02-01 2004-08-20 Cimai Technology Procede et systeme pour gerer des executables a bibliotheques partagees
US7047521B2 (en) * 2001-06-07 2006-05-16 Lynoxworks, Inc. Dynamic instrumentation event trace system and methods
US7093234B2 (en) 2001-08-24 2006-08-15 International Business Machines Corporation Dynamic CPU usage profiling and function call tracing
US6928639B2 (en) * 2001-09-11 2005-08-09 International Business Machines Corporation Time-interval based monitor function for dynamic insertion into and removal from a running application
KR100433549B1 (ko) 2002-05-11 2004-05-31 삼성전자주식회사 소프트웨어 분석 방법 및 장치
AU2003254027A1 (en) * 2002-07-19 2004-02-09 Xaffire, Inc. Method and apparatus for instrumentation on/off
US7143396B2 (en) * 2002-11-06 2006-11-28 Sun Microsystems, Inc. System and method for measuring code segment performance
US7171663B2 (en) * 2002-12-09 2007-01-30 International Business Machines Corporation External event interrupt for server-side programs
US20040267548A1 (en) * 2003-06-25 2004-12-30 Jones James O. Workload profiling in computers
US20050010908A1 (en) * 2003-07-10 2005-01-13 International Business Machines Corporation Method, apparatus and computer program product for implementing breakpoint based performance measurement
JP2005352894A (ja) * 2004-06-11 2005-12-22 Nec Corp 性能解析プログラム及び性能解析プログラムの生成方法
GB2425859A (en) 2005-05-05 2006-11-08 Advanced Risc Mach Ltd Modelling of programmable devices
JP4693044B2 (ja) 2005-08-18 2011-06-01 株式会社日立ソリューションズ ソースコード脆弱性検査装置
JP4208085B2 (ja) * 2005-08-30 2009-01-14 インターナショナル・ビジネス・マシーンズ・コーポレーション アプリケーションプログラムの制御方法およびその装置
US7577875B2 (en) * 2005-09-14 2009-08-18 Microsoft Corporation Statistical analysis of sampled profile data in the identification of significant software test performance regressions
KR100727627B1 (ko) 2005-11-11 2007-06-13 벨록스소프트(주) 동적링킹 라이브러리를 사용하는 어플리케이션을 지원하는방법 및 이를 이용한 시스템
JP2007164595A (ja) 2005-12-15 2007-06-28 Toshiba Corp コンピュータシステムの関数呼び出し方法、コンピュータシステムおよびライブラリ
US7770163B2 (en) * 2006-03-24 2010-08-03 International Business Machines Corporation Method of efficiently performing precise profiling in a multi-threaded dynamic compilation environment
US8117614B2 (en) * 2006-05-19 2012-02-14 International Business Machines Corporation Extract CPU time facility
US8261244B2 (en) 2006-06-02 2012-09-04 Microsoft Corporation Arbitrary runtime function call tracing
GB2442495B (en) * 2006-10-02 2009-04-01 Transitive Ltd Method and apparatus for handling dynamically linked function cells with respect to program code conversion
US7681054B2 (en) * 2006-10-03 2010-03-16 International Business Machines Corporation Processing performance improvement using activity factor headroom
US7926047B2 (en) * 2006-11-28 2011-04-12 Red Hat, Inc. Methods and systems for optimization in a run-time environment
US7340378B1 (en) * 2006-11-30 2008-03-04 International Business Machines Corporation Weighted event counting system and method for processor performance measurements
US7661032B2 (en) 2007-01-06 2010-02-09 International Business Machines Corporation Adjusting sliding window parameters in intelligent event archiving and failure analysis
US8856753B2 (en) * 2008-04-18 2014-10-07 International Business Machines Corporation Granular measurement of processor performance in executing sections of software code
US8051332B2 (en) * 2008-07-15 2011-11-01 Avicode Inc. Exposing application performance counters for .NET applications through code instrumentation
KR101034697B1 (ko) 2008-08-07 2011-05-16 주식회사 케이티 모바일 플랫폼 모듈의 동적 로딩 지원 방법 및 시스템
CN101383690B (zh) * 2008-10-27 2011-06-01 西安交通大学 一种基于socket的容错计算机系统的网络同步方法
US20100115494A1 (en) * 2008-11-03 2010-05-06 Gorton Jr Richard C System for dynamic program profiling
US20100138811A1 (en) * 2008-12-02 2010-06-03 Qualcomm Incorporated Dynamic Performance Profiling
US8347001B2 (en) * 2010-01-08 2013-01-01 International Business Machines Corporation Hardware support for software controlled fast multiplexing of performance counters
US8954996B2 (en) * 2009-12-11 2015-02-10 Red Hat, Inc. Profiling the system providing performance statistics in real time
US8473928B2 (en) * 2010-04-19 2013-06-25 Sap Ag Call graph simplification/comparison and automatic initial suspects finding of performance degradations
KR101256149B1 (ko) 2010-07-12 2013-04-19 홍익대학교 산학협력단 프로그램 카운터 인코딩을 이용한 간접 함수 호출 보호 방법 및 보호 장치
US20120036501A1 (en) * 2010-08-03 2012-02-09 Tomas Evensen Method and System for Capturing System and User Events Using Hardware Trace Devices
US9158650B2 (en) * 2010-08-04 2015-10-13 BoxTone, Inc. Mobile application performance management

Also Published As

Publication number Publication date
KR20140066913A (ko) 2014-06-03
US20140149968A1 (en) 2014-05-29
EP2735970B1 (en) 2020-01-01
US9959191B2 (en) 2018-05-01
CN103838662A (zh) 2014-06-04
JP2014106972A (ja) 2014-06-09
EP2735970A2 (en) 2014-05-28
EP2735970A3 (en) 2015-04-29
KR101991687B1 (ko) 2019-06-24

Similar Documents

Publication Publication Date Title
CN103838662B (zh) 动态库性能分析方法和动态库性能分析系统
JP5257816B2 (ja) コンテキストスイッチサンプリング
US7315795B2 (en) Performance analyzing method using hardware
US8214628B2 (en) Computer performance monitoring by associating counter values with particular processes when an interrupt is detected
US9081629B2 (en) Excluding counts on software threads in a state
US8850394B2 (en) Debugging system and method
US7653855B2 (en) Random number test circuit, random number generation circuit, semiconductor integrated circuit, IC card and information terminal device
US20120095728A1 (en) Data processing apparatus, performance evaluation/analysis apparatus, and performance evaluation/analysis system and method
JP5889332B2 (ja) 並行ソフトウェア環境のためのアクティビティ記録システム
US20140149078A1 (en) Performance measurement unit, processor core including the same and process profiling method
ES2882177T3 (es) Reproducción especulativa de código ejecutable
US10191833B2 (en) Method to efficiently trigger concurrency bugs based on expected frequencies of execution interleavings
US20140156978A1 (en) Detecting and Filtering Biased Branches in Global Branch History
CN109634822B (zh) 一种函数耗时统计方法、装置、存储介质及终端设备
CN115905040B (zh) 计数器的处理方法、图形处理器、设备及存储介质
JP6544054B2 (ja) 情報処理装置、実行情報記録プログラムおよび実行情報記録方法
CN104424035B (zh) 用于对存储访问频率的间歇采样的方法和系统
CN104685473B (zh) 一种软件测试方法及装置
JP2005215816A (ja) ハードウェアモニタを用いた性能プロファイリング方法
US20140075164A1 (en) Temporal locality aware instruction sampling
WO2012056569A1 (ja) 性能測定方法、性能測定装置、及び、性能測定プログラム
KR102210544B1 (ko) 전자 시스템의 결함 분석 방법
JP2009217385A (ja) プロセッサ及びマルチプロセッサ
JP2008234354A (ja) Cpu負荷分析装置およびプログラム
CN109782978A (zh) 列表内容选取方法及装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant