• 四川郎酒股份有限公司获第十二届人民企业社会责任奖年度环保奖 2019-05-13
  • 银保监会新规剑指大企业多头融资和过度融资 2019-05-12
  • 韩国再提4国联合申办世界杯 中国网友无视:我们自己来 2019-05-11
  • 中国人为什么一定要买房? 2019-05-11
  • 十九大精神进校园:风正扬帆当有为 勇做时代弄潮儿 2019-05-10
  • 粽叶飘香幸福邻里——廊坊市举办“我们的节日·端午”主题活动 2019-05-09
  • 太原设禁鸣路段 设备在测试中 2019-05-09
  • 拜耳医药保健有限公司获第十二届人民企业社会责任奖年度企业奖 2019-05-08
  • “港独”没出路!“梁天琦们”该醒醒了 2019-05-07
  • 陈卫平:中国文化内涵包含三方面 文化复兴表现在其中 2019-05-06
  • 人民日报客户端辟谣:“合成军装照”产品请放心使用 2019-05-05
  • 【十九大·理论新视野】为什么要“建设现代化经济体系”?   2019-05-04
  • 聚焦2017年乌鲁木齐市老城区改造提升工程 2019-05-04
  • 【专家谈】上合组织——构建区域命运共同体的有力实践者 2019-05-03
  • 【华商侃车NO.192】 亲!楼市火爆,别忘了买车位啊! 2019-05-03
    • / 17
    • 下载费用:30 金币  

    重庆时时彩后二妈: 样本剖析报告的动态计算.pdf

    关 键 词:
    样本 剖析 报告 动态 计算
      专利查询网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    摘要
    申请专利号:

    CN201110253953.5

    申请日:

    2011.08.24

    公开号:

    CN102385552A

    公开日:

    2012.03.21

    当前法律状态:

    授权

    有效性:

    有权

    法律详情: 授权|||专利申请权的转移IPC(主分类):G06F 11/36变更事项:申请人变更前权利人:微软公司变更后权利人:微软技术许可有限责任公司变更事项:地址变更前权利人:美国华盛顿州变更后权利人:美国华盛顿州登记生效日:20150717|||实质审查的生效IPC(主分类):G06F 11/36申请日:20110824|||公开
    IPC分类号: G06F11/36 主分类号: G06F11/36
    申请人: 微软公司
    发明人: A·达迪欧莫夫; M·阿加瓦尔; 季新华
    地址: 美国华盛顿州
    优先权: 2010.08.25 US 12/868,495
    专利代理机构: 上海专利商标事务所有限公司 31100 代理人: 蔡悦
    PDF完整版下载: PDF下载
    法律状态
    申请(专利)号:

    CN201110253953.5

    授权公告号:

    |||||||||

    法律状态公告日:

    2016.04.20|||2015.08.05|||2013.09.11|||2012.03.21

    法律状态类型:

    授权|||专利申请权、专利权的转移|||实质审查的生效|||公开

    摘要

    本发明公开了样本剖析报告的动态计算。对表示程序的执行时间的分层时间树的构造或使用。为构造分层时间树,与根节点对应的时间帧是期间多个调用栈样本从程序中被收集的执行时间。在根节点处开始且递归地进行,每一节点随后以在给定时间段所有调用栈无需被访问的方式来填充,以便提供与该给定时间段有关的报告。

    权利要求书

    1.一种包括在其上具有计算机可执行指令的一个或多个计算机存储介质
    的计算机程序产品,当所述计算机可执行指令由计算系统的一个或多个处理器
    执行时,使得所述计算系统执行以下动作:
    构造表示程序的执行时间的分层时间树的动作,所述程序被执行以获取多
    个调用栈样本,其中所述分层时间树包括多个节点,每一节点与一执行时间间
    隔对应;以及
    用来自所述多个调用栈样本的信息来填充所述分层时间树的动作。
    2.如权利要求1所述的计算机程序产品,其特征在于,所述多个调用样本
    中的至少某些不被包括在填充到所述分层时间树中的信息中。
    3.如权利要求1所述的计算机程序产品,其特征在于,所述填充动作包括:
    对于所述分层时间树的每一叶子节点,表示至少某些在与所述叶子节点对
    应的时间帧中所采样的调用栈。
    4.如权利要求3所述的计算机程序产品,其特征在于,对于所述叶子节点
    中的至少某些,在该叶子节点中的各调用栈中的每一个调用栈被表示为原始调
    用栈数据。
    5.如权利要求3所述的计算机程序产品,其特征在于,所述填充动作还包
    括:
    对于所述分层时间树的每一非叶子节点,表示至少某些在与所述非叶子节
    点对应的时间帧中所采样的唯一调用栈,以及对于在与所述非叶子节点对应的
    所述时间帧中遇到每一个唯一调用栈的次数的计数。
    6.如权利要求5所述的计算机程序产品,其特征在于,对于所述叶子节点
    中的至少某些,在该叶子节点中的各调用栈中的每一个调用栈使用调用栈标识
    符来呈现。
    7.如权利要求1所述的计算机程序产品,其特征在于,对于所述非叶子节
    点中的至少某些,所述唯一调用栈中的至少某些表示在与所述叶子节点对应的
    时间间隔中所有调用栈的至少一预定百分比。
    8.如权利要求7所述的计算机程序产品,其特征在于,所述预定百分比是
    可配置的。
    9.如权利要求7所述的计算机程序产品,其特征在于,所述预定百分比是
    至少百分之80或更多,但小于百分之100。
    10.如权利要求7所述的计算机程序产品,其特征在于,所述预定百分
    比是至少百分之90或更多,但小于百分之100。
    11.如权利要求7所述的计算机程序产品,其特征在于,所述构造分层
    时间树的动作以及所述填充所述分层时间树的动作基本上同时执行。
    12.如权利要求7所述的计算机程序产品,其特征在于,所述构造分层
    时间树的动作以及所述填充所述分层时间树的动作通过执行以下动作来执行:
    将与所述分层时间树中的根节点对应的时间帧设置成期间所述多个调用
    栈样本被收集的整个执行时间的动作。
    13.如权利要求12所述的计算机程序产品,其特征在于,所述计算机
    可执行指令还使得所述计算系统执行以下动作:
    执行以所述时间树的根节点开始并继续到所述时间树的每一节点的以下
    各项的动作:
    如果当前节点的时间间隔包含小于特定数量的调用栈样本,则所述当前节
    点为叶子节点,并且所述叶子节点用在所述时间间隔中所采样的调用栈样本来
    填充;
    如果所述当前节点的时间间隔包含至少特定数量的样本,则所述当前节点
    为非叶子节点,并且所述非叶子节点用在与所述当前节点对应的时间间隔中的
    调用栈中的至少某些有关的经编译的调用栈频率数据来填充,所述时间间隔被
    细分成多个子时间段,并且相同数量的子节点被创建,各自与所述子时间段中
    的一个相对应。
    14.一种包括在其上具有计算机可执行指令的一个或多个计算机存储
    介质的计算机程序产品,当所述计算机可执行指令由计算系统的一个或多个处
    理器执行时,使得所述计算系统执行以下动作:
    访问表示程序的执行时间的分层时间树的动作,所述程序被执行以获取多
    个调用栈样本,其中所述分层时间树包括多个经填充的节点,每一个经填充的
    节点与一执行时间帧对应,并且响应于所述程序的执行时间内的指定时间间
    隔;以及
    使用所述分层时间树来构造与所述多个调用栈样本有关的报告而无需分
    开地访问所有所述多个调用栈样本的动作。
    15.如权利要求14所述的计算机程序产品,其特征在于,使用所述分
    层时间树来构造所述报告的动作包括:
    对于所述分层时间树中的至少第一代子节点,
    对于具有与所述指定时间间隔不相交的时间间隔的任何子节点,忽略该子
    节点的动作;以及
    对于具有完整地包含在所述指定时间间隔内的时间间隔的任何子节点,合
    并来自该子节点的所有原始栈样本数据的动作;
    16.如权利要求15所述的计算机程序产品,其特征在于,使用所述分
    层时间树来构造所述报告的动作还包括对于所述分层时间树中的至少第一代
    子节点中的每一个的以下动作:
    对于作为所述分层时间树中的叶子节点且具有仅部分包含在所述指定时
    间间隔内的一时间间隔的任何子节点,枚举在所述指定时间间隔内的所述叶子
    节点的调用栈样本的动作。
    17.如权利要求16所述的计算机程序产品,其特征在于,使用所述分
    层时间树来构造所述报告的动作还包括对于所述分层时间树中的至少第一代
    子节点中的每一个的以下动作:
    对于作为所述分层时间树中的非叶子节点且具有仅部分包含在所述指定
    时间间隔内的一时间间隔的任何子节点,枚举下一代子节点并且将相同方法应
    用于所述非叶子节点的下一代子节点中的每一个的动作。
    18.如权利要求15所述的计算机程序产品,其特征在于,使用所述分
    层时间树来构造所述报告的动作还包括对于所述分层时间树中的至少第一代
    子节点中的每一个的以下动作:
    对于作为所述分层时间树中的非叶子节点且具有仅部分包含在所述指定
    时间间隔内的一时间间隔的任何子节点,枚举下一代子节点并且将相同方法应
    用于所述非叶子节点的下一代子节点中的每一个的动作。
    19.一种用于构造以及填充表示程序的执行时间的分层时间树的方法,
    所述程序被执行以获取多个调用栈样本,其中所述分层时间树包括多个节点,
    每一节点与一执行时间间隔对应:
    将与所述分层时间树中的根节点对应的时间帧设置成期间所述多个调用
    栈样本被收集的整个执行时间的动作;以及
    执行以所述时间树的根节点开始并通过所述时间树的每一节点继续的以
    下各项的动作:
    如果当前节点的时间间隔包含小于特定数量的调用栈样本,则所述当前节
    点为叶子节点,并且所述叶子节点用在所述时间间隔中所采样的调用栈样本来
    填充;以及
    如果所述当前节点的时间间隔包含至少特定数量的样本,则所述当前节点
    为非叶子节点,并且所述非叶子节点用在与所述当前节点对应的时间间隔中的
    调用栈中的至少某些有关的经编译的调用栈频率数据来填充,所述时间间隔被
    细分成多个子时间段,并且相同数量的子节点被创建,各自与所述子时间段中
    的一个相对应。
    20.如权利要求19所述的方法,其特征在于,还包括:
    访问所述分层树的动作;以及
    使用所述分层时间树来构造与所述多个调用栈样本有关的报告而无需分
    开地访问所有所述多个调用栈样本的动作。

    说明书

    样本剖析报告的动态计算

    技术领域

    本发明涉及计算机应用,尤其涉及样本剖析报告的动态计算。

    背景技术

    软件剖析涉及记录软件程序正在做什么并将结果呈现给用户,使得用户理
    解程序的各部分花费了多少执行时间。一种剖析机制被称为“采样”,其中在
    整个程序的执行中以周期性间隔对程序的调用栈进行采样。调用栈标识程序所
    处于的当前功能以及导致当前功能被调用的功能调用链(从主程序开始),调
    用栈中的每一级表示一功能调用。有时,调用栈可以是十几级或甚至数百级深。
    例如,如果调用栈是每毫秒采样的,并且执行时间是300秒,则将有300,000
    个调用栈样本,每一调用栈可能相当大。由此,所记录的采样的数据可以相当
    庞大,涉及每一个所采样的调用栈的线性序列。在多线程应用中,这一采样对
    每一线程发生。

    为将所记录的数据呈现给用户一特定时间段,对于与该时间段对应的各调
    用栈,呈现程序逐一访问每一个所采样的调用栈。随着呈现程序这样做,它响
    应性地创建了调用栈树,该树中的每一节点表示程序的一功能并且根节点表示
    主程序。当遇到唯一的调用栈时,树通过将带有树中适当祖先链的表示该功能
    的节点添加到树中来扩充,使得随着沿祖先链进行至根节点、以适当次序遇到
    调用栈中所有功能。随后,随着遇到非唯一的调用栈,与适当的调用栈节点相
    关联的计数器递增。该时间段所有的调用栈被计数之后,向用户呈现适当的用
    户界面,从而给予用户对于在该给定时间段程序的哪些部分花费了多少时间的
    概念。

    高级剖析应用允许用户改变所评估的时间段,从而导致采样至新时间段的
    调用栈被再次计数,由此调整向用户的呈现。

    发明内容

    本文所描述的至少一个实施例涉及对表示程序的执行时间的分层时间树
    的构造或使用。为构造分层时间树,与根节点对应的时间帧是期间调用栈样本
    从程序中被收集的执行时间。在根节点处开始且递归地进行,每一节点随后以
    在给定时间段所有调用栈无需被访问的方式来填充,以便提供与该给定时间段
    有关的报告。

    本发明内容并非旨在标识所要求?;さ闹魈獾墓丶卣骰虮匾卣?,也不
    旨在用于帮助确定所要求?;さ闹魈獾姆段?。

    附图说明

    为了描述可以获得上面所列举的及其他优点和特征的方式,下面将参考附
    图来呈现对各实施例的更具体的描述??梢岳斫?,这些附图只描绘了样本实施
    例,并且因此不被认为是对其范围的限制,将通过使用附图并利用附加属性和
    细节来描述和解释各实施例,在附图中:

    图1示出可用于采用此处所描述的各实施例的示例计算系统;

    图2示出用于构造表示程序的执行时间的分层时间树的方法的流程图;

    图3示出可使用图2的方法来构造的示例分层时间树;

    图4示出用于构造表示程序的执行时间的分层时间树的更具体的方法的
    流程图,并且是图2的方法的一个示例;

    图5示出用于使用时间树结构以便构造与在给定的执行时间间隔所获得
    的调用栈样本有关的报告的方法的流程图;以及

    图6示出表示图5的方法的一个示例的更具体的方法的流程图。

    具体实施方式

    根据本文所描述的各实施例,描述了对表示程序的执行时间的分层时间树
    的构造或使用。为构造分层时间树,与根节点对应的时间帧是期间多个调用栈
    样本从程序中被收集的执行时间。在根节点处开始且递归地继续,每一节点随
    后以在给定时间段所有调用栈无需被访问的方式来填充,以便提供与该给定时
    间段有关的报告。首先,将参考图1来描述关于计算系统的某些介绍性讨论。
    随后,对分层时间树的构造和使用的实施例将参考图2至图6来描述。

    首先,参考图1来描述关于计算系统的介绍性讨论。计算系统现在越来越
    多地采取多种多样的形式。计算系统可以例如是手持式设备、电器、膝上型计
    算机、台式计算机、大型机、分布式计算系统,或者甚至通常不被视为计算系
    统的设备。在本说明书以及权利要求书中,术语“计算系统”被广义地定义为
    包括包含至少一个处理器以及其上能含有可由处理器执行的计算机可执行指
    令的存储器的任何设备或系统(或其组合)。存储器可以采取任何形式,并可
    以取决于计算系统的特性和形式。计算系统可以分布在网络环境中,并可包括
    多个组分计算系统。

    如图1所示,在其最基本的配置中,计算系统100通常包括至少一个处理
    单元102和存储器104。存储器104可以是物理系统存储器,该物理系统存储
    器可以是易失性、非易失性、或两者的某种组合。术语“存储器”在此也可用
    来指诸如物理存储介质等非易失性大容量存储。如果计算系统是分布式的,则
    处理、存储器和/或存储能力也可以是分布式的。如此处所使用的那样,术语“模
    块”或“组件”可以指在计算系统上执行的软件对象或例程。此处所描述的不
    同组件、???、引擎,以及服务可以实现为在计算系统上执行的对象或进程(例
    如,作为分开的线程)。

    在随后的描述中,参考由一个或多个计算系统执行的动作描述了各实施
    例。如果这样的动作是以软件实现的,则执行动作的相关联计算系统的一个或
    多个处理器响应于已经执行了计算机可执行指令来引导计算系统的操作。这样
    的操作的示例涉及对数据的操纵。计算机可执行指令(以及被操纵的数据)可
    以存储在计算系统100的存储器104中。计算系统100还可包括可用于提供诸
    如此处所描述的用户界面之类的各种具体用户界面的显示器112。计算系统100
    还可包含允许计算系统100例如通过网络110与其他消息处理器通信的通信信
    道108。

    本发明的各实施例可包括或利用包括诸如例如,一个或多个处理器和系统
    存储器之类的计算机硬件的专用或通用计算机,如以下更详细讨论的。本发明
    范围内的各实施例还包括用于承载或存储计算机可执行指令和/或数据结构的
    物理和其他计算机可读介质。这些计算机可读介质可以是可由通用或专用计算
    机系统访问的任何可用介质。存储计算机可执行指令的计算机可读介质是物理
    存储介质。承载计算机可执行指令的计算机可读介质是传输介质。因而,作为
    示例而非限制,本发明的各实施例可包括至少两种完全不同的计算机可读介
    质:计算机存储介质和传输介质。

    计算机存储介质包括RAM、ROM、EEPROM、CD-ROM或其他光盘存储、
    磁盘存储或其他磁存储设备、或可用于存储计算机可执行指令或数据结构形式
    的所需程序代码装置且可由通用或专用计算机访问的任何其他介质。

    “网络”被定义为允许在计算机系统和/或??楹?或其他电子设备之间传
    输电子数据的一个或多个数据链接。当信息通过网络或另一个通信连接(硬连
    线、无线、或者硬连线或无线的组合)传输或提供给计算机时,该计算机将该
    连接适当地视为传输介质。传输介质可包括可用于承载计算机可执行指令或数
    据结构形式的所需程序代码装置且可由通用或专用计算机访问的网络和/或数
    据链接。上述的组合也应被包括在计算机可读介质的范围内。

    此外,在到达各种计算机系统组件之后,计算机可执行指令或数据结构形
    式的程序代码装置可从传输介质自动传输到计算机存储介质(或反之亦然)。
    例如,通过网络或数据链接接收到的计算机可执行指令或数据结构可被缓存在
    网络接口???例如,“NIC”)内的RAM中,然后最终被传输到计算机系
    统RAM和/或计算机系统处的较不易失性的计算机存储介质。因而,应当理解,
    计算机存储介质可被包括在同样(或甚至主要)利用传输介质的计算机系统组
    件中。

    计算机可执行指令例如包括,当在处理器处执行时使通用计算机、专用计
    算机、或专用处理设备执行某一功能或某组功能的指令和数据。计算机可执行
    指令可以是例如二进制代码、诸如汇编语言之类的中间格式指令、或甚至源代
    码。尽管用结构特征和/或方法动作专用的语言描述了本主题,但可以理解,所
    附权利要求书中定义的主题不必限于上述特征或动作。相反,上述特征和动作
    是作为实现权利要求的示例形式而公开的。

    本领域的技术人员将理解,本发明可以在具有许多类型的计算机系统配置
    的网络计算环境中实践,这些计算机系统配置包括个人计算机、台式计算机、
    膝上型计算机、消息处理器、手持式设备、多处理器系统、基于微处理器的或
    可编程消费电子设备、网络PC、小型计算机、大型计算机、移动电话、PDA、
    寻呼机、路由器、交换机等等。本发明也可在其中通过网络链接(或者通过硬
    连线数据链接、无线数据链接,或者通过硬连线和无线数据链接的组合)的本
    地和远程计算机系统两者都执行任务的分布式系统环境中实施。在分布式系统
    环境中,程序??榭晌挥诒镜睾驮冻檀娲⑵鞔娲⑸璞钢?。

    程序的各组件在程序的执行过程期间通过放置对彼此的功能调用来交互。
    为管理对程序的适当操作,操作系统维护跟踪哪个序列的功能调用已导致当前
    组件被执行的调用栈。当功能调用被放置时,级被压到栈上,由此在概念上留
    下面包屑,使得当功能在程序下完成其工作时程序知道返回到哪里。随着程序
    执行,调用栈将改变以反映程序执行的当前状态在哪里。在复杂程序中,调用
    栈在字面上可以是数百级深。

    常规剖析技术在周期性基础上对调用栈采样,从而生成大的调用栈集合。
    调用栈树生成过程随后遍历所有的调用栈样本以生成调用栈树。调用栈树以表
    示主程序的根节点开始。当调用栈反映主程序调用一功能时,新节点被添加到
    调用栈树以反映该功能调用。当所有调用栈样本已经被评估时,结果是表示所
    有调用栈的复杂调用栈树,其中,每一调用栈类型可通过从任何给定节点沿祖
    先链向上遍历至根节点来重新构造。调用栈树中的每一节点由此与唯一的调用
    栈类型对应,该调用栈类型至少在程序的执行内是唯一的。为了帮助此处所描
    述的至少某些实施例,每一调用栈类型可被分配一个唯一标识符,以允许小得
    多的唯一标识符被使用,而不是对每一调用栈类型的更完整的表示。

    此处所描述的原理允许以伸缩良好的有效方式来评估调用栈集合,由此允
    许剖析报告被快速地生成并且具有可接受的准确性。在一个实施例中,这通过
    使用分层时间树来完成。分层时间树是新的且唯一的,并且不会与以上描述的
    常规的调用栈树混淆。

    图2示出用于构造表示程序的执行时间的分层时间树的方法200的流程
    图。分层时间树将被用于有效地评估并编译从调用栈样本中收集的信息。分层
    时间树包括表示程序的执行时间的根节点。在一个实施例中,根节点表示程序
    的整个执行时间。根节点具有零个或更多子节点(child?node)。对于分层时间
    树中的任何节点,与父节点对应的各子节点各自具有时间间隔,当这些时间间
    隔放在一起时表示与父亲相同的时间间隔。

    例如,假设根节点具有在时间=0毫秒开始并且在时间=1000毫秒结束的
    时间间隔(即,被表达为[0,1000])。现在假设根节点具有四个子节点,即节
    点A、节点B、节点C和节点D。节点A可能具有从时间=0毫秒至时间=250
    毫秒的时间间隔(例如[0,250])。节点B可能具有从时间=250毫秒至时间=
    500毫秒的时间间隔,即[250,500]。节点C可能具有从时间=500毫秒至时间
    =750毫秒的时间间隔[500,750]。节点D可能具有从时间=750毫秒至时间=
    1000毫秒的时间间隔[750,1000]。同样,具有间隔[0,250]的节点A可能有五个
    孩子,这五个孩子具有时间间隔[0,50]、[50,100]、[100,150]、[150,200]以及
    [200,250]。

    方法200包括对分层时间树的构造(动作201)以及填充(动作202)。
    在一个实施例中,不是所有的调用栈样本都被包括在被填充在分层时间树中的
    信息内。例如,对于较少发生的调用栈中的某些的调用栈样本可能被忽略,以
    允许该过程更为高效。在认识到采样本身并不采用完美的准确性的概念时,忽
    略较少发生的某些调用栈可能是可接受的,因为样本发生在程序执行的随机时
    刻。使用样本报告的总体原因是要找出对执行时间的重要部分负责的各功能和
    /或调用栈,而不是捕获某些微小影响。

    在一个实施例中,对于分层时间树的每一叶子节点(leaf?node),在与该
    叶子节点对应的时间帧中采样的各调用栈的至少某一些可被包括作为该叶子
    节点的一部分。在一个示例中,叶子节点可完整地包括调用栈样本。在另一示
    例中,可能只有与调用栈相关联的唯一标识符与叶子节点一起被标识。

    在一个实施例中,对于分层时间树的每一非叶子节点,非叶子节点表示至
    少某些在与非叶子节点对应的时间帧中采样的唯一调用栈,以及对于在与非叶
    子节点对应的该时间帧中遇到每一个唯一调用栈的次数的计数。各唯一调用栈
    可使用唯一调用栈标识符来标识。

    在随后的示例中,分层时间树在构造时被填充。由此,图2的动作201
    和动作202基本上同时执行,或至少以交错方式来执行。例如,可遵循以下过
    程以便构造和填充分层时间树。

    首先,根节点被分配程序的执行时间间隔的对应间隔。在一个实施例中,
    根节点表示程序的整个执行时间段。图3表示示例分层时间树300。在这一示
    例中,根节点301与时间间隔[0,1000](即0至1000毫秒)对应。随后,图4
    的方法400递归地应用于分层时间树中的每一节点。此时,只有分层树的根节
    点存在。然而,方法400将导致其他子节点被添加。

    如果经受该方法的节点的当前间隔包含小于M个调用栈样本(其中M为
    可配置的某一整数)(在判定框401中“是”),则当前节点被指定为叶子节
    点(动作411),并且当前节点用所有调用栈样本来填充(动作412),以及
    如果分层时间树中存在要填充的其他节点(在判定框413中“是”),则方法
    400对分层时间树中的下一节点递归地执行(动作414),或者如果分层时间
    树中不存在其他要填充的节点(在判定框413中“否”),则递归结束(动作
    415)。

    将这一方法400应用于时间树300的根节点,假设“M”为100。现在假
    设在间隔[0,1000]中存在不止100个调用栈样本。在该情况下(在判定框401
    中“否”),则采取通过方法400的不同处理路径,并且该节点被指定为非叶
    子节点(动作421)。与该当前间隔对应的各调用栈类型通过其计数器来排序
    (动作422),最频繁发生的调用栈类型出现在列表的顶部。随后,较频繁发
    生的调用栈类型自顶向下地被选择,直到该时间段调用栈总数的某一百分比P
    被选择(动作423)。随后,间隔被细分成N个子间隔(其中N为整数),并
    且对于每一细分的间隔创建新的子节点(动作424)。方法400随后对下一节
    点递归地执行方法400(动作414)。

    将这应用于图3的根节点301,该根节点被指定为非叶子节点(动作421),
    并且与该间隔对应的调用栈类型随后通过其计数器来排序(动作422)。例如,
    假设在间隔[0,1000]中存在330个调用栈样本,并且当通过计数器来排序时,
    这些调用栈样本包括以下列表:

    调用栈类型:计数器

    A????????????113

    B????????????75

    C????????????46

    D????????????25

    E????????????24

    F????19

    G????13

    H????9

    I????6

    由此,存在9个不同类型的调用栈A至I,总共330个调用栈样本。调用
    栈样本类型从该列表的顶部被选择,直到通过包括对于仅在非叶子节点中的那
    些顶部调用栈类型的统计量来考虑至少95%(其中在这一情况下P=95%)的
    调用栈样本(动作423)。例如,这可能包括使用一对该调用栈类型的唯一标
    识符结合其对于该间隔的计数器。95%阈值在调用栈类型A至G被选择时发生。
    较少发生的调用栈类型H和I从报告中被丢弃。间隔[0,1000]随后被分成两个
    (其中在这一情况下N=2)子间隔,并且新的子节点被创建并且与每一子间
    隔相关(动作424)。在这一情况下,子间隔为[0,500]和[500,1000],尽管不要
    求对各间隔的相等细分。节点311与间隔[0,500]相关,并且节点312与间隔
    [500,1000]相关。方法400随后移至下一节点(在该示例中即节点311)。

    将方法400应用于图3的节点311,间隔[0,500]内的调用栈数量为216,
    该数量是至少100(在判定框401中“否”)。由此节点311被指定为非叶子
    节点(动作421),并且与该间隔对应的调用栈类型随后通过其计数器来排序
    (动作422)。作为示例,假设在通过计数器排序之后,生成以下列表:

    调用栈类型:计数器

    A????????????72

    B????????????44

    C????????????35

    E????????????21

    D????????????20

    F????????????14

    G????????????10

    由此,存在7个不同类型的调用栈A至G,总共216个调用栈样本。调
    用栈样本类型从该列表的顶部被选择,直到通过包括对于仅在非叶子节点中的
    那些调用栈类型的统计量来考虑至少95%的调用栈样本(动作423)。例如,
    这可能包括使用一对该调用栈类型的唯一标识符结合其对于该间隔的计数器。
    95%阈值在调用栈类型A至F被选择时发生。较少发生的调用栈类型G从报
    告中被丢弃。间隔[0,500]随后被分成两个子间隔,并且新的子节点被创建并且
    与每一子间隔相关(动作424)。在这一情况下,子间隔为[0,250]和[250,500]。
    节点321与间隔[0,250]相关,并且节点322与间隔[250,500]相关。方法400随
    后移至下一节点(在该示例中即321,尽管取决于递归的方法它可以是节点
    312)。

    将方法400应用于图3的节点321,间隔[0,250]内的调用栈数量为90,这
    在100阈值以下(在判定框401中“是”)。由此节点321被指定为叶子节点
    (动作411),并且用与间隔[0,250]对应的所有调用栈来填充(动作412)。
    图3中使用星号来示出被指定为叶子节点的那些节点。存在要评估的其他节点
    (在判定框413中“是”),并且由此方法400被应用于下一节点(动作414)。
    在这一递归类型中,下一节点为节点322。

    将方法400应用于图3的节点322,间隔[250,500]内的调用栈数量为116,
    该数量是至少100(在判定框401中“否”)。由此节点322被指定为非叶子
    节点(动作421),并且与该间隔对应的调用栈类型随后通过其计数器来排序
    (动作422)。作为示例,假设在通过计数器排序之后,生成以下列表:

    调用栈类型:计数器

    A????????????40

    B????????????26

    C????????????25

    E????????????15

    D????????????9

    F????????????1

    由此,存在6个不同类型的调用栈A至F,总共116个调用栈样本。调用
    栈样本类型从该列表的顶部被选择,直到通过包括对于仅在非叶子节点中的那
    些调用栈类型的统计量来考虑至少95%的调用栈样本(动作423)。例如,这
    可能包括使用一对该调用栈类型的唯一标识符结合其对于该间隔的计数器。
    95%阈值在调用栈类型A至E被选择时发生。较少发生的调用栈类型F从报告
    中被丢弃。间隔[250,500]随后被分成两个子间隔,并且新的子节点被创建并且
    与每一子间隔相关(动作424)。在这一情况下,子间隔为[250,375]和[375,500]。
    节点331与间隔[250,375]相关,并且节点332与间隔[375,500]相关。方法400
    随后移至下一节点(在该递归示例中即节点331)。

    将方法400应用于图3的节点331,间隔[250,375]内的调用栈数量为45,
    这在100阈值以下(在判定框401中“是”)。由此节点331被指定为叶子节
    点(动作411),并且用与间隔[250,375]对应的所有调用栈来填充(动作412)。
    存在要评估的其他节点(在判定框413中“是”),并且由此方法400被应用
    于下一节点(动作414)。在这一递归类型中,下一节点为节点332。

    将方法400应用于图3的节点332,间隔[375,500]内的调用栈数量为70,
    这在100阈值以下(在判定框401中“是”)。由此节点332被指定为叶子节
    点(动作411),并且用与间隔[375,500]对应的所有调用栈来填充(动作412)。
    存在要评估的其他节点(在判定框413中“是”),并且由此方法400被应用
    于下一节点(动作414)。在这一递归类型中,下一节点为节点312。

    将方法400应用于图3的节点312,间隔[500,1000]内的调用栈数量为99,
    这在100阈值以下(在判定框401中“是”)。由此节点312被指定为叶子节
    点(动作411),并且用与间隔[500,1000]对应的所有调用栈来填充(动作412)。
    没有其他节点要评估(在判定框413中“否”),并且由此时间树现在被完全
    生成并填充(动作415)。

    图5示出用于使用时间树结构以便构造与在给定的执行时间间隔所获得
    的调用栈样本有关的报告的方法的流程图。首先,访问分层时间树(动作501),
    并且随后使用该时间树来构造与所收集的调用栈样本有关的报告,而无需分开
    地访问所有调用栈样本。

    图6示出用于使用时间树来构造这样的报告的方法600的流程图。以根节
    点开始来执行方法600。作为示例,方法600将被应用于图3中示出的示例时
    间树300。处理取决于以下各项而有所不同(参见判定框601):给定时间间
    隔是否1)与正被评估的节点的时间间隔根本不相交(在判定框601中“否”),
    2)与该节点的时间间隔完全相交(在判定框601中“完全包括”),或3)仅
    与该节点的时间间隔部分地相交(在判定框601中“部分包括”)。现在将提
    供若干示例以示出方法600的所有处理路径。

    首先,假设用户想要查看间隔[700,1000]的报告。方法600首先针对根节
    点301来评估。间隔[700,1000]与时间间隔[0,1000]仅部分地相交(在判定框601
    中“部分包括”)。根节点301不是叶子节点(在判定框604中“否”),并
    且由此根节点的各子节点(即第一代子节点)随后被评估。

    方法600随后针对节点311来评估。间隔[700,1000]与时间间隔[0,500]完
    全不相交(在判定框601中“否”)。处理由此前进至各第一代子节点中的下
    一节点312。

    方法600随后针对节点312来评估。间隔[700,1000]与节点312的间隔
    [500,1000]仅部分地相交(在判定框601中“部分包括”)。此外,节点312
    为叶子节点(在判定框604中“是”)。由此,该方法枚举指定时间间隔[700,1000]
    内的叶子节点的调用栈样本,由此完成该方法。不必评估第二代子节点321,
    因为在评估第一代子节点311时没有遇到动作605。仅在评估根节点时遇到动
    作605。注意,其中只有各调用栈被访问的枚举是针对节点312的,这些枚举
    仅包括99个调用栈。

    现在假设用户想要获取间隔[0,700]的报告。该方法首先针对根节点301来
    评估。再一次,间隔[700,1000]与时间间隔[0,1000]仅部分地相交(在判定框601
    中“部分包括”)。根节点不是叶子节点(在判定框604中“否”),并且由
    此根节点的各子节点(即第一代子节点)随后被评估。

    方法600随后针对节点311来评估。间隔[0,700]与时间间隔[0,500]完全相
    交(在判定框601中“完全包括”)。随后,对这一节点的统计量由此被合并
    到结果中(动作603)。例如,在该示例中回想,对于节点311的统计量包括
    以下:

    调用栈类型:计数器

    A????????????72

    B????????????44

    C????????????35

    E????????????21

    D????????????20

    F????14

    各调用栈中的每一调用栈的这些数量随后相对于先前已枚举的这些相同
    的调用类型的任何计数器来计数。在这一情况下,各个的先前计数为零,并且
    由此未来计数以这些数量开始。该过程随后移至这一代中的下一节点。在这一
    情况下,下一节点会是节点312。

    方法600随后针对节点312来评估。间隔[0,700]与节点312的间隔
    [500,1000]仅部分地相交(在判定框601中“部分包括”)。此外,节点312
    为叶子节点(在判定框604中“是”)。由此,该方法枚举指定时间间隔[500,700]
    内的叶子节点的调用栈样本,由此完成该方法。同样,不必评估第二代子节点
    321,因为在评估第一代子节点311时没有遇到动作605。注意,其中只有各调
    用栈被访问的枚举是针对节点312的,这些枚举仅包括99个调用栈。

    现在提供对于间隔[300,700]的最后一个示例。该方法首先针对根节点301
    来评估。再一次,间隔[300,700]与时间间隔[0,1000]仅部分地相交(在判定框
    601中“部分包括”)。根节点不是叶子节点(在判定框604中“否”),并
    且由此根节点的各子节点(即第一代子节点)随后被评估。在这一示例中将遇
    到某一递归。

    该方法随后针对节点311来评估。间隔[300,700]与时间间隔[0,500]仅部分
    地相交(在判定框601中“部分包括”)。节点311不是叶子节点(在判定框
    604中“否”),并且由此节点311的各子节点(即第二代子节点321和322)
    随后被评估。通过递归,节点312最终被将评估,当在这一类型的递归示例中,
    第二代节点321是要评估的下一节点。

    方法600随后针对节点321来评估。间隔[300,700]与时间间隔[0,250]完全
    不相交(在判定框601中“否”)。处理由此前进至各第二代子节点中的下一
    节点322(动作602)。

    方法600随后针对节点322来评估。间隔[300,700]与时间间隔[250,500]
    仅部分地相交(在判定框601中“部分包括”)。节点322不是叶子节点(在
    判定框604中“否”),并且由此节点322的各子节点(即第三代子节点331
    和332)随后被评估。

    方法600随后针对节点331来评估。间隔[300,700]与节点331的间隔
    [250,375]仅部分地相交(在判定框601中“部分包括”)。此外,节点331为
    叶子节点(在判定框604中“是”)。由此,该方法枚举指定时间间隔[300,375]
    内的叶子节点的调用栈样本。过程随后前进至第三代节点332。

    方法600随后针对节点332来评估。间隔[300,700]与节点312的间隔
    [375,500]完整地相交(在判定框601中“完全包括”)。对于节点332的统计
    量最后与结果合并。在一个示例中,这可通过执行对节点332中70个调用栈
    的每一调用栈类型的计数来执行。另选地,对节点332可能已经预先计算了统
    计量(即,对调用栈的每一类型的计数),在该情况下,在结果中可使用这些
    统计量,而无需访问与时间间隔[375,500]对应的每一个别调用栈。这完成了对
    第三代子节点331和332、以及对第二代子节点321和322的处理。通过递归,
    处理随后前进至节点312来进行评估。

    方法600随后针对节点312来评估。间隔[300,700]与节点312的间隔
    [500,1000]仅部分地相交(在判定框601中“部分包括”)。此外,节点312
    为叶子节点(在判定框604中“是”)。由此,该方法枚举指定时间间隔[500,700]
    内的叶子节点的调用栈样本。处理由此完成。

    这一方法具有多个效率优点。最重要的是,需要从调用栈文件读取的数据
    量与我们逐一读取所有栈的情况相比显著更低。在某些情况下,对于具有被完
    整地包含在感兴趣的时间间隔内的一时间间隔的节点的统计量,统计量可被快
    速地合并。第二,合并的树和寻找的量受到其对数的限制。第三,合并的各个
    栈的量受到其在节点中的有限数量(M)的限制。

    因此,本文所描述的原理准许基于在程序的执行期间所收集的经采样的调
    用栈来对报告进行可伸缩和动态的生成。本发明可被具体化为其他具体形式而
    不背离其精神或本质特征。所描述的实施例在所有方面都应被认为仅是说明性
    而非限制性的。因此,本发明的范围由所附权利要求书而非前述描述指示。落
    入权利要求书的等效方案的含义和范围内的所有改变都被权利要求书的范围
    所涵盖。

    关于本文
    本文标题:样本剖析报告的动态计算.pdf
    链接地址://www.4mum.com.cn/p-5817437.html
    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    [email protected] 2017-2018 www.4mum.com.cn网站版权所有
    经营许可证编号:粤ICP备17046363号-1 
     


    收起
    展开
  • 四川郎酒股份有限公司获第十二届人民企业社会责任奖年度环保奖 2019-05-13
  • 银保监会新规剑指大企业多头融资和过度融资 2019-05-12
  • 韩国再提4国联合申办世界杯 中国网友无视:我们自己来 2019-05-11
  • 中国人为什么一定要买房? 2019-05-11
  • 十九大精神进校园:风正扬帆当有为 勇做时代弄潮儿 2019-05-10
  • 粽叶飘香幸福邻里——廊坊市举办“我们的节日·端午”主题活动 2019-05-09
  • 太原设禁鸣路段 设备在测试中 2019-05-09
  • 拜耳医药保健有限公司获第十二届人民企业社会责任奖年度企业奖 2019-05-08
  • “港独”没出路!“梁天琦们”该醒醒了 2019-05-07
  • 陈卫平:中国文化内涵包含三方面 文化复兴表现在其中 2019-05-06
  • 人民日报客户端辟谣:“合成军装照”产品请放心使用 2019-05-05
  • 【十九大·理论新视野】为什么要“建设现代化经济体系”?   2019-05-04
  • 聚焦2017年乌鲁木齐市老城区改造提升工程 2019-05-04
  • 【专家谈】上合组织——构建区域命运共同体的有力实践者 2019-05-03
  • 【华商侃车NO.192】 亲!楼市火爆,别忘了买车位啊! 2019-05-03
  • 大乐透走势图2带坐标9188 外盘股票配资 今天江西多乐彩开奖走势图 pk10挂机日赚 69棋牌官网 中彩网合买俱乐部 贵州十一选五开奖查询 正版棋牌下载 浙江省台州市福彩中心咨询电话 河南十一选五玩法 开元棋牌炸金花透视 陕西福彩中心地址查询 北京快中彩开奖走势图 福彩3d走势图选号 幸运赛车官方网 金博棋牌绿色下载