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

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

Info

Publication number
CN103838662B
CN103838662B CN 201310581221 CN201310581221A CN103838662B CN 103838662 B CN103838662 B CN 103838662B CN 201310581221 CN201310581221 CN 201310581221 CN 201310581221 A CN201310581221 A CN 201310581221A CN 103838662 B CN103838662 B CN 103838662B
Authority
CN
Grant status
Grant
Patent type
Application number
CN 201310581221
Other languages
English (en)
Other versions
CN103838662A (zh )
Inventor
李敏周
伯恩哈德·艾格
李在镇
金永洛
金鸿圭
金洪准
Original Assignee
三星电子株式会社
首尔大学校产学协力团
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
Grant date

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING; 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; 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; 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; 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; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/88Monitoring involving counting

Abstract

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

Description

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

[0001 ] 本申请要求于2012年11月23日提交到韩国知识产权局的第10-2012-0133854号韩 国专利申请的优先权,其中,所述专利申请的公开内容通过引用全部合并于此。

技术领域

[0002]与示例性实施例一致的方法和设备涉及一种动态库性能分析方法和动态库性能 分析系统。

背景技术

[0003]性能分析指的是当前执行的程序的执行状态的分析或与操作系统(0S)内核的通 信状态的分析。通过性能分析,可以测量程序的性能信息,并可检测出潜在影响性能的因 素。

发明内容

[0004]示例性实施例提供一种动态库性能分析方法、存储所述方法的计算机可读记录介 质和动态库性能分析系统,所述系统可测量在动态库函数单元中性能测量单元(PMU)事件 计数。

[0005]示例性实施例也提供一种动态库性能分析方法、使用所述方法的计算机可读记录 介质和动态库性能分析系统,所述系统可测量在分时系统中由于发生上下文切换在动态库 函数单元中性能测量单元(PMU)事件计数。

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

[0007]根据示例性实施例的一方面,提供一种动态库性能分析方法,包括:对目标进程分 配任务结构,将在执行目标进程时产生的性能测量单元(PMU)计数值记录在任务结构中作 为进程PMU计数,其中,记录步骤包括:当使用上下文切换来开始执行目标进程时,初始化处 理器核心的PMU计数器的PMU计数值,并且在目标进程切换到另一进程之前,将处理器核心 的PMU计数器的当前PMU计数值累加地记录在任务结构中作为进程PMU计数。

[0008]根据示例性实施例的一方面,提供一种动态库性能分析方法,包括:在动态库函数 的起始地址处写入第一断点指令;当目标进程执行第一断点指令时产生函数进入事件;在 动态库函数的返回地址处写入第二断点指令;当目标进程执行第二断点指令时产生函数结 束事件。

[0009]根据示例性实施例的又一方面,提供一种动态库性能分析系统,包括:PMU计数器, 被配置力记求作为在处理器核心中发生的事件的累加值的PMJ计数值;任务结构,在任务结 构中针对每一个目标进程记录了进程PMU计数,所述进程PMU计数是在执行目标进程时记录 的累加的PMU计数;监视进程,被配置为在动态库函数的起始地址处写入第一断点指令和在 动态库函数的返回地址处写入第二断点指令,其中,监视进程记录作为当目标进程执行第 一断点指令时的进程PMU计数的第一事件计数值,记录作为当目标进程执行第二断点指令 时的进程PMU计数的第二事件计数值,并通过将第一事件计数值与第二事件计数值进行比 较来计算在执行动态库函数时在处理器核心中产生的PMU计数。

附图说明

[0010]通过参照附图详细地描述示例性实施例,以上和其它方面将变得更清楚,其中: [0011]图1是示出根据示例性实施例的动态库性能分析方法的示意流程图;

[0012]图2到图8示意性地示出监视进程和目标进程的操作;

[0013]图9示出在目标进程中的事件发生和在监视进程中事件处理过程的示意图;

[00M]图10是不出进程调度器的进程PMU计数计算过程的示意流程图;

[0015]图11和图12示出使用与用于测量进程pMu计数的进程相应的任务结构的性能分析 系统;

[0016]图13示出当从目标进程的库函数中调用另一库函数时的进程pMU计数测量过程。

具体实施方式

[0017]现在将参照附图,在下文中更全面地描述示例性实施例。然而,示例性实施例可以 以各种形式被实现并不应被理解为限于在此阐述的示例性实施例。相反地,提供这些示例 性实施例使得本公开将是彻底且完整的,并将全面地向本领域技术人员传达本公开的范 围。贯穿整个说明,相同的标号指示相同的组件。

[0018] 使用的单数术语和类似指称应被理解为包含单数和复数两者,除非这里另有指示 或清楚地与上下文相矛盾。术语“包含”、“具有”、“包括”和“含有”被理解为开放式术语(BP, 表示“包括但不限于”),除非另有提及。

[0019] 除非另有定义,本文使用的所有的技术术语和科学术语与本领域普通技术人员所 通常理解的具有相同的意义。应注意,使用的任意和全部示例,或在本文中提供的示例性术 语仅意图更好地示意本公开而并非限制本公开的范围,除非另有所指。此外,除非另有定 义,可能不会过分解释在通用字典中定义的全部术语。

[0020] 在下文中,将参照附图描述示例性实施例。

[0021] 在以下描述中,作为处理器核心的内部组件的性能测量单元(PMU),指示用于测量 在处理器核心中发生的事件的组件。这里,本领域技术人员可理解在处理器核心中发生的 事件表示时钟周期、存储器操作(例如,读取或写入)、缓存事件(例如,命中、未命中或写 回)、执行指令等。

[0022] PMU计数器是在PMU内提供的寄存器。PMU计数器对在处理器核心中的发生的事件 进行计数并记录PMU事件计数的累加值。可在软件中编程PMU,并且PMU计数器可使用特定汇 编指令来执行读取和写入操作。

[0023] 在以下的描述中,从P祖J计数器读取的PMU计数被用作硬件PMU计数。

[0024]进程调度器是支持分时系统的操作系统(〇S)内核的内部组件。进程调度器通过根 据优先级的顺序划分中央处理单元(CPU)可用性来执行多个进程。在示例性实施例中,将通 过针对L i nux内核的示例来描述0S内核。

[0025]图1是示出根据本发明的实施例的动态库性能分析方法的示意流程图,而图2到图 8示意性地示出监视进程和目标进程的操作。

[0026] 参照图1,首先,监视进程在库函数的起始地址处设置第一断点(S110)。

[0027]在用户进程被执行时,监视进程跟踪用户进程并监视在处理器核心中发生的事 件。监视进程可包括例如,分析器。这里,分析器是用于测量程序的性能和在开发程序的过 程中发现瓶颈的开发工具。

[0028] 例如,库函数可以是例如,动态库函数但是不限于此。

[0029] 参照图2,执行监视进程10和目标进程20。目标进程20是作为监视进程10的监视目 标的用户进程并包括用户程序21和链接到用户程序21的动态库22。

[0030] 如上所述,监视进程10跟踪用户进程,并且可以访问(读取、写入)目标进程20的地 址空间。在0S(诸如Linux)中,0S通常不能直接访问其它用户进程的地址空间和寄存器。然 而,监视进程10例外地被允许访问其它用户进程的空间地址和寄存器。

[0031] 监视进程10在库函数的起始地址(例如,在地址0x20)处设置第一断点BP_ST。其 后,监视进程10可进入等待模式。例如,可通过插入软件断点指令设置第一断点BP_ST,但不 限于此。

[0032] 在设置第一断点BP_ST中,断点指令可取代库函数的起始地址的原始指令。

[0033]同时,虽然没有清晰地示出,但是监视进程10在库函数的起始地址处设置第一断 点BP_ST之前,动态库22可被载入存储器并与用户程序21链接。

[0034] 在用户程序21中,为了调用预定动态库函数,用于调用用户程序21的动态库函数 的代码可调用与动态库函数相应的程序链接表(PLT),并且具有动态库函数被加载到的地 址的全局偏移表(GOT)可被PLT引用。这里,记录在GOT中的动态库函数被加载到的地址可被 动态链接器记录。也就是说,GOT的缺省值可被设置为动态链接器的地址。因此,动态库函数 的第一调用执行动态链接器并将动态库加载到存储器,并且动态库函数的地址可被记录在 GOT中。其后,用于调用用户程序21的动态库函数的指令可在不执行动态链接器的情况下, 通过引用记录在GOT中的动态库函数的地址来使用PLT调用动态库函数。

[0035]这里,PLT是第一次被调用的代码区域,其用于使用户程序21调用预定的动态库函 数。PLT包括对于每一个动态库函数间接调用各种动态库函数的代码。GOT是由PLT引用用于 调用预定动态库函数的数据区域。动态库函数的地址被存储在GOT的存储空间中。

[0036] 接下来,再次参照图1,目标进程执行第一断点(S120)。如果目标进程在库函数的 起始地址处执行第一断点,则可产生事件(例如,函数进入事件)。通过函数进入事件,停止 目标进程的执行并从等待模式中释放监视进程。当目标进程执行断点时,可发生事件并且 监视进程可处理所述事件,这将参照图9更加详细地描述。

[0037] 参照图3,在用户程序21中执行用于调用库函数的代码①L_CL)(例如,地址〇x 10的 代码)。因此,可以通过与库函数相应的PLT,通过引用记录在GOT中的库函数的地址来调用 库函数的起始地址0x20。

[0038]可选地,在运行时加载库函数的情况下,可通过使用函数指针直接调用动态链接 器来直接调用库函数的起始地址0x20。最终,从目标进程20调用库函数,并执行在库函数的 起始地址0x20设置的第一断点BP_ST。

[OO39]接下来,再次参照图1,监视进程获得目标进程的资源使用统计(S130)。可通过函 数进入事件将监控进程从等待模式中释放,并且监控进程可获得目标进程的资源使用统 计。

[0040]在0S内核中,资源使用统计可包括关于进程的资源使用统计的数据(例如,Linux 的等待因素中的结构体使用)但不限于此。

[0041]在示例性实施例中,进程PMU计数信息可被添加到资源使用统计。由目标进程的任 务结构来管理进程PMU计数信息,而且进程PMU计数信息是在执行目标进程时产生的针对每 一个目标进程的PMU计数的累加值。

[0042]这里,进程PMU计数是在执行目标进程时(也就是说,从开始执行由进程调度器调 度到处理器核心的预定用户进程时到另一用户进程被调度到处理器核心停止执行用户进 程时)产生的PMU计数的累加值。通常,相应于各个处理器核心,记录硬件PMU计数。然而,在 示例性实施例中,进程PMU计数是与每一个进程相应的记录的PMU计数。

[0043]参照图4,监视进程10获得目标进程20的第一资源使用统计。这里,第一资源使用 统计指示当随着执行目标进程20的第一断点BP_ST产生函数进入事件时的目标进程20的资 源使用统计。第一资源使用统计包括进程PMU计数,进程PMU计数是直到目标进程20执行第 一断点BP_ST为止在处理器核心中产生的累加的PMU计数。

[0044]通常,监视进程10不能直接访问0S内核。在示例性实施例中,为了将在〇s内核中收 集的进程PMU计数传送到监视进程10,如上所述,可以使用附加地包括进程PMU计数信息的 资源使用统计,但不限于此。

[0045] 接下来,再次参照图1,监视进程在库函数进入模式中记录进程PMU计数(S140)。监 视进程从目标进程的第一资源使用统计中提取进程PMU计数,并可将提取的进程PMU计数记 录为第一 PMU计数。

[0046] 接下来,监视进程在库函数的返回地址处设置第二断点(S150)。在下文中,监视进 程进入等待模式,并可以重新开始目标进程的执行。可以通过将第二断点的指令(例如,软 件断点指令)插入到库函数的返回地址来设置第二断点,但不限于此。

[0047] 参照图5,在库函数的返回地址(例如,地址Ox 11)处设置第二断点BP_RT。库函数的 返回地址可以是在库函数的执行被完成之后记录在其中的目标进程20的用户程序21的下 一执行代码的地址。

[0048] 接下来,再次参照图1,目标进程执行第二断点(S160)。如果目标进程执行在库函 数的返回地址处设置的第二断点,则可发生事件(例如,函数结束事件)。目标进程的执行被 中断,并且由函数结束事件将监视进程从等待模式中释放。

[0049] 参照图6,在用户程序21中,执行库函数的返回地址的执行代码,例如,地址0x11的 代码。当完成库函数的执行并且从目标进程20中返回库函数时,执行设置在库函数的返回 地址处的第二断点BP_RT。

[0050] 接下来,再次参照图1,监视进程获得目标进程的资源使用统计(S170)。在获得目 标进程的资源使用统计时,由函数结束事件将监视进程从等待模式中释放。

[0051] 参照图7,监视进程获得目标进程20的第二资源使用统计。这里,在根据第二断点 BP—RT的执行在发生函数结束事件时获得目标进程2〇的第二资源使用统计。第二资源使用 统计包括到目标进程20己经执行第二断点BP_RT为止在处理器核心中产生的PMU计数的累 加的进程PMU计数。 一

[0052]接下来,再次参照图1,监视进程在库函数结束模式中计算累加的进程pMU计数 (Sl8〇)。监视进程可从目标进程的第二资源使用统计中提取进程PMU计数并可将提取的进 程PMU计数记录为第二PMU计数。

[0053]监视进程计算通过将第一 PMU计数与第二PMU计数进行比较来计算在执行动态库 函数时产生的累加的PMU计数。

[00M]同时,监视进程可累加地存储每一个动态库函数计算的进程PMU计数。为此,可提 供存储空间以用于累加地存储每一个动态库函数的PMU计数。例如,可以在监视进程的用户 存储器空间中提供存储空间,但不限于此。

[0055]接下来,从库函数的返回地址移除第二断点(Sl9〇)。其后,监视进程进入等待模 式,并且可重新开始目标进程的执行。

[0056]参照图8,监视进程10从库函数的返回地址0x11中移除第二断点BP_RT。

[0057]常规的库函数性能分析方法可包括例如,在编译或运行时插入的监视代码的使用 或基于性能分析的采样。

[0058]然而,在常规的库函数性能分析方法中会出现多种问题。也就是说,在编译时使用 插入的监视代码的方法中,为了执行性能分析会需要重新编译。此外,当在分时系统中执行 上下文切换时,另一进程的运行时间会与性能分析相关联,从而导致不准确结果。特别地, 基于性能分析的采样具有局限在于基于性能分析的采样会基于统计数据导致不准确、近似 的结果。

[0059]例如,在Linux环境中使用并基于在执行时插入监视代码的方法的^ race,可被用 作在执行性能分析时用于跟踪库函数的执行的工具。在ltrace中,库函数的起始点和结束 点插入软件断点,库函数的执行时间被计算为给定事件与断点一起发生的时间。此外,在 ltrace中,假设库函数起始于与库函数相应的PLT的起始地址,计算库函数目标的执行时 间。

[0060]特别地,使用ltrace,不能对在目标进程的运行时动态地加载的库函数进行性能 分析。由于通过动态链接器使用函数指针来获得在运行时显式加载的库函数的地址,并且 在没有通过PLT的情况下直接调用该地址,所以使用在PLT设置的断点不能获得任何事件。 此外,性能分析只能在第一次调用库函数时启动,而当从库函数中调用另一库函数时,不能 完成性能分析。此外,当在分时系统中发生上下文切换时,另一进程的运行时间可被无意地 包含在计算的目标进程的运行时间中。

[0061]但是,在根据示例性实施例的动态库分析方法中,在运行时加载动态库函数之后, 在没有将断点插入PLT的起始地址的情况下,断点被设置在动态库函数的起始地址处,从而 更加广泛地支持动态库函数的性能分析。

[0062]因此,也可对甚至不调用PLT的库函数进行性能分析。此外,如稍后将要描述地,甚 至从相关的库函数调用另一库函数时,能够对各个库函数进行性能分析,因而独立地测量 并计算调用程序的进程PMU计数和被调用程序的进程PMU计数。

[0063]在下文中,将参照图9描述在目标进程中的事件发生和在监视进程中的事件处理 过程。图9示意性示出在目标进程中的事件发生和在监视进程中的事件处理过程。

[0064] 参照图9,首先,监视进程10开始监视目标进程20 (S210)。如上所述,监视进程10可 在跟踪目标进程20时,在目标进程20的库函数的起始地址处设置第一断点。

[0065] 接下来,监视进程10进入事件等待模式以等待事件的发生(S220)。

[0066] 接下来,执行目标进程20(S310)。目标进程20可执行由监视进程10设置的断点。例 如,目标进程20可执行在库函数的起始地址处设置的第一断点。可选地,目标进程20可执行 在库函数的返回地址处设置的第二断点。

[0067] 接下来,检测在目标进程20中的事件的发生(S320)。当目标进程20执行断点时,在 目标进程20中发生事件。例如,当目标进程20执行在库函数的起始地址设置的第一断点时, 可发生函数进入事件。可选地,目标进程20可执行在库函数的返回地址处设置的第二断点, 可发生函数结束事件。

[0068] 停止目标进程20的执行(S330)。如果发生事件,则结束目标进程20的执行,并且事 件的发生被通知到监视进程10以允许从事件等待模式中释放监视进程。

[0069] 接下来,监视进程10可处理事件(S230)。当目标进程20执行断点时,监视进程10可 处理事件。例如,在发生函数进入事件的情况下,当目标进程20执行在库函数的起始地址处 设置的第一断点时,监视进程10可获得目标进程20的资源使用统计然后从中提取进程PMU 计数,由此在库函数的返回地址处设置第二断点。可选地,在当目标进程20执行在库函数的 返回地址处设置的第二断点时发生函数结束事件的情况下,监视进程10可获得目标进程20 的资源使用统计,以随后从中提取进程PMU计数,接着是移除在库函数的返回地址处设置的 第二断点。

[0070]接下来,监视进程10重新开始目标进程的执行(S240)。监视进程10以上述方式处 理事件并再次进入等待模式以从S220重复处理步骤。然后,监视进程1〇重新开始目标进程 2〇的执行以允许目标进程20重复地从S310执行处理步骤。

[0071] 在下文中,将参照图10描述进程调度器的进程PMU计数计算过程。图10是进程调度 器的进程PMU计数计算过程的示意流程图。

[0072]参照图10,在0S内核中执行进程调度器(S410)。如上所述,进程调度器通过根据优 先级的顺序划分CPU可用性来执行多个进程。

[0073]接下来,当通过上下文切换开始执行目标进程时,进程调度器初始化PMU计数器的 硬件PMU计数(S42〇)。更具体地,在上下文切换之前,例如,当监视进程进入等待模式并且在 目标进程被执行之前,可将硬件PMU计数初始化为〇。

[0074]接下来,OS内核执行目标进程(S430)。

[0075]接下来,为了实现将上下文切换到另一进程,目标进程进入进程调度器(S44〇)。 [0076]接下来,进程调度器累加地将硬件PMU计数记录在与目标进程相应的任务结构中 (S450)。更具体地,进程调度器读取累加地记录在PMU计数器中的硬件PMU计数直到完成目 标进程的执行并调度另一用户进程为止,例如,直到停止目标进程的执行并执行监控进程 为止。然后,读取的硬件PMU计数被累加地记录进程PMU计数中,而进程PMU计数被记录在与 目标进程相应的任务结构中。

[0077]每当发生上下文切换时,可重复执行图10中所示的进程pMU计数计算过程。因此, 即使发生上下文切换,执行另一用户进程时产生的硬件PMU计数不被包括在进程PMU计数 中。

[0078]图11和图12示出使用与用于测量进程PMU计数的进程相应的任务结构的性能分析 系统。

[0079]参照图11,性能分析系统包括监视进程1 〇、第一目标进程20a、第二目标进程20b、 OS内核30和处理器核心40。

[0080]当产生函数进入事件和函数结束事件时,监视进程10可从资源使用统计中提取目 标进程的进程PMU计数,并基于提取的进程PMU计数,监视进程10可计算在目标库函数的执 行期间产生的进程PMU计数。

[0081]第一目标进程20a和第二目标进程20b是将由监视进程10跟踪的用户进程。在图11 中给出了两个目标进程的示例,S卩,第一目标进程20a和第二目标进程20b,但是示例性实施 例的方面不限于此。

[0082] 0S内核3〇包括任务结构:31和进程调度器32。任务结构31是从0S内核分配给每一个 进程的数据结构。在图11中给出了包括第一任务结构31a和第二任务结构31b的任务结构31 的示例,但示例性实施例的方面不限于此。

[0083]可在任务结构31a和任务结构31b中的每一个中额外地提供累加地记录进程PMU计 数的空间。在调度第一目标进程20a时产生的进程PMU计数可被记录在第一任务结构31a中, 而在调度第二目标进程2〇b时产生的进程PMU计数可被记录在第二任务结构31b中。处理器 核心40可包括PMU 41和CPU 4LPMU 41测量在处理器核心40中发生的事件并将PMU计数值 记录在PMU计数器中。可根据由PMU 41支持的PMU计数器的数量来测量在库函数的执行期间 发生的各种事件。在进程调度中,CPU 42根据进程调度器32执行用户进程。

[0084]参照图12,性能分析系统包括可作为多处理器核心的处理器核心50。在图12中给 出了处理器核心50包括第一 CPU和第二CPU的示例,但不限于此。

[0085] 多处理器核心50可包括与CPU 52和CPU 54的PMU 51和PMU 53。

[0086]根据图10中示出的进程PMU计数计算过程以及图11和图12中示出的使用与进程相 应的任务结构的性能分析系统,在每一个进程的执行期间产生的进程PMU计数可被保留在 0S内核的内部数据结构中。因此,即使在分时系统中执行上下文切换时,使用由〇s内核为每 一个进程独立地分配的任务结构,因此阻止了另一用户进程的硬件PMU计数被无意的包括 在目标进程的进程PMU计数中。

[0087]在下文中,将参照图13描述当从目标进程的库函数中调用另一库函数时的进程 PMU计数测量过程。图13示出当从目标进程的库函数中调用另一库函数时的进程PMU计数测 量过程。

[0088]参照图13,用户程序21包括执行代码21a和PLT 21b。稍后将会描述的PLT 21b是用 于调用动态库函数的代码区域,并可包括例如qux_plt、baz_plt、bar_plt、foo_plt等。

[0089]链接到用户程序21的动态库22可包括,例如动态库函数(诸如,qux〇、baz ()、bar ()或foo ())。通过监视进程,分别在动态库函数的起始地址处设置断点BP_ST1、BP_ST2、 BP_ST3和BP_ST 4。

[0090]如果在执行代码21a中调用动态库函数,例如,f00(),则从PLT 21b中调用用于调 用f〇〇 ()的代码区域,例如foo_plt。接下来,代码区域f00_plt通过参照记录在GOT (未示 出)中的f〇〇0的地址来调用加载到存储器的动态库22的函数f〇〇0。

[0091] 由于在f〇〇()的起始地址处设置第一断点BP_ST4,所以产生函数进入事件,并且监 视进程记录在foo ()函数输入模式中的进程PMU计数作为第一PMU计数值。其后,监视进程 在foo 0的返回地址处设置第二断点BP_RT4。

[0092] 接下来,如果执行foo 0时调用另一动态库函数,例如,bar 〇,则产生函数进入事 件,这是因为在bar 〇的起始地址处设置了第三断点BP_ST3,并且监视进程将bar 0函数进 入模式中的进程PMU计数记录作为第二PMU计数值。其后,监视进程在bar ()的返回地址处设 置第四断点BP_RT3。

[0093] 接下来,如果完成bar ()的执行并返回bar 0,则产生函数结束事件,这是因为在 bar 0的返回地址处设置了第四断点BP_RT3,并且监视进程将bar ()函数结束模式中的进 程PMU计数记录作为第三PMU计数值。

[0094]接下来,如果完成foo ()的剩余代码的执行并返回f〇〇(),则产生函数进入事件,这 是因为在foo 0的返回地址处设置了第二断点BP_RT4,并且监视进程将foo ()函数结束模式 中的进程PMU计数记录作为第四PMU计数值。

[0095]为了计算执行foo 0函数时产生的实际进程PMU计数,监视进程获得通过从第四 PMU计数值减去第一 PMU计数值得到的PMU计数与通过从第三PMU计数值减去第二PMU计数值 得到的PMU计数之间的差。如上所述,根据示例性实施例,由于调用程序与被调用程序可被 单独地测量并计算,所以可以实现对各个库函数的性能分析。

[0096] 关于公开于此的方面中描述的方法或算法的步骤可直接在硬件实现中实现,在由 处理器执行的软件模块中实现或在两者的结合中实现。软件模块可置于RAM存储器、闪存、 ROM存储器、EPROM存储器、EEPR0M存储器、寄存器、硬盘、可拆卸磁盘、CD-ROM或本领域公知 的存储介质的任何其它形式。示例性存储介质可被耦合到处理器,从而使处理器可从存储 介质中读取信息并将信息写入存储介质。在可选方案中,存储介质可被集成到处理器。而 且,在一些方面,处理器和存储介质可置于特定用途集成电路(ASIC)。此外,ASIC可置于用 户终端中。可选地,处理器和存储介质可作为独立组件放置在用户终端中。

[0097] 在详细描述的结尾,本领域技术人员将理解,在实质上不脱离本发明的原理的情 况下,可对优选的实施例做出多个变化和修改。因此,在描述性意义上使用的示例性实施例 而不是为了限制的目的。

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所述的动态库性能分析方法,还包括: 在第二断点的写入步骤后,进入监视进程的等待模式, 其中,第二事件计数值的记录步骤包括:当目标进程执行第二断点指令时,从等待模式 中释放监视进程。
CN 201310581221 2012-11-23 2013-11-19 动态库性能分析方法和动态库性能分析系统 CN103838662B (zh)

Priority Applications (2)

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

Publications (2)

Publication Number Publication Date
CN103838662A true 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
CN 201310581221 CN103838662B (zh) 2012-11-23 2013-11-19 动态库性能分析方法和动态库性能分析系统

Country Status (5)

Country Link
US (1) US9959191B2 (zh)
EP (1) EP2735970A3 (zh)
JP (1) JP2014106972A (zh)
KR (1) KR20140066913A (zh)
CN (1) CN103838662B (zh)

Families Citing this family (3)

* 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系统的性能采集分析的方法、装置及系统
CN106126384A (zh) * 2016-06-12 2016-11-16 华为技术有限公司 一种采集性能监视单元pmu事件的方法及装置

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 Interrupt-based hardware support for profiling system performance
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
US6381735B1 (en) * 1998-10-02 2002-04-30 Microsoft Corporation Dynamic classification of sections of software
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
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 삼성전자주식회사 소프트웨어 분석 방법 및 장치
WO2004010295A3 (en) * 2002-07-19 2004-03-18 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 性能解析プログラム及び性能解析プログラムの生成方法
GB0509201D0 (en) 2005-05-05 2005-06-15 Advanced Risc Mach Ltd Modelling of programmable devices
JP4693044B2 (ja) 2005-08-18 2011-06-01 株式会社日立ソリューションズ ソースコード脆弱性検査装置
JP4208085B2 (ja) * 2005-08-30 2009-01-14 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Maschines Corporation アプリケーションプログラムの制御方法およびその装置
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
US8954996B2 (en) * 2009-12-11 2015-02-10 Red Hat, Inc. Profiling the system providing performance statistics in real time
US8347001B2 (en) * 2010-01-08 2013-01-01 International Business Machines Corporation Hardware support for software controlled fast multiplexing of performance counters
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 Type
EP2735970A3 (en) 2015-04-29 application
EP2735970A2 (en) 2014-05-28 application
CN103838662A (zh) 2014-06-04 application
US20140149968A1 (en) 2014-05-29 application
KR20140066913A (ko) 2014-06-03 application
JP2014106972A (ja) 2014-06-09 application
US9959191B2 (en) 2018-05-01 grant

Similar Documents

Publication Publication Date Title
Zamfir et al. Execution synthesis: a technique for automated software debugging
Olszewski et al. Kendo: efficient deterministic multithreading in software
US20020170036A1 (en) Detecting a stalled routine
Chen et al. Path-based failure and evolution management
US20040148152A1 (en) System performance prediction mechanism and method based on software component performance measurements
US20120278793A1 (en) System and method for analyzing dynamic performance of complex applications
US7506318B1 (en) Recording and replaying computer programs
US20080077928A1 (en) Multiprocessor system
US20090241095A1 (en) Call Stack Sampling for Threads Having Latencies Exceeding a Threshold
US6658654B1 (en) Method and system for low-overhead measurement of per-thread performance information in a multithreaded environment
Cao et al. Declarative tracepoints: a programmable and application independent debugging system for wireless sensor networks
US20050081206A1 (en) Methods and apparatus for profiling threaded programs
US20030191976A1 (en) Power profiling system and method for correlating runtime information
Froyd et al. Low-overhead call path profiling of unmodified, optimized code
US20100017583A1 (en) Call Stack Sampling for a Multi-Processor System
US7673181B1 (en) Detecting race conditions in computer programs
US20100017789A1 (en) Selectively Obtaining Call Stack Information Based on Criteria
US7426731B2 (en) Determining processor usage by a thread
Jula et al. Deadlock Immunity: Enabling Systems to Defend Against Deadlocks.
US20040123084A1 (en) Enabling tracing of a repeat instruction
Pathak et al. Fine-grained power modeling for smartphones using system call tracing
Yu et al. Maple: a coverage-driven testing tool for multithreaded programs
US8499299B1 (en) Ensuring deterministic thread context switching in virtual machine applications
Desnoyers Low-impact operating system tracing
US20090235247A1 (en) Apparatus and method for checking idle period of virtual machine, and computer readable recording medium for embodying the method

Legal Events

Date Code Title Description
C06 Publication
C10 Entry into substantive examination
GR01