CN106557400A - 设备中动态数据收集的方法以及相应的设备 - Google Patents
设备中动态数据收集的方法以及相应的设备 Download PDFInfo
- Publication number
- CN106557400A CN106557400A CN201510937132.1A CN201510937132A CN106557400A CN 106557400 A CN106557400 A CN 106557400A CN 201510937132 A CN201510937132 A CN 201510937132A CN 106557400 A CN106557400 A CN 106557400A
- Authority
- CN
- China
- Prior art keywords
- equipment
- performance
- data collection
- event
- dynamic data
- 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.)
- Withdrawn
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44505—Configuring for program initiating, e.g. using registry, configuration files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording 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/3466—Performance evaluation by tracing or monitoring
- G06F11/3476—Data logging
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3089—Monitoring arrangements determined by the means or processing involved in sensing the monitored data, e.g. interfaces, connectors, sensors, probes, agents
- G06F11/3093—Configuration details thereof, e.g. installation, enabling, spatial arrangement of the probes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/3024—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a central processing unit [CPU]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording 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/3452—Performance evaluation by statistical analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/40—Data acquisition and logging
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/542—Event management; Broadcasting; Multicasting; Notifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/86—Event-based monitoring
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Quality & Reliability (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Bioinformatics & Computational Biology (AREA)
- Probability & Statistics with Applications (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Evolutionary Biology (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Multimedia (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明公开一种设备中动态数据收集的方法以及相应的设备。设备中动态数据收集的方法包括:通过设备硬件收集高级别性能事件的数据,所述高级别性能事件表明造成性能瓶颈的备选原因;基于数据的实时分析,在造成所述性能瓶颈的所述高级别性能事件之间确定第一性能事件;以及重新配置所述设备硬件,以收集在所述第一性能事件之下的较低级别性能事件的额外的数据,以及所述较低级别性能事件表明比所述备选原因更具体的额外的备选原因;所述设备在连续执行所述应用程序的同时,执行所述收集、所述确定和所述重新配置的步骤。本发明所提供的方法以及设备,能够使能设备以监视和调整其运行时的性能,同时持续不断地执行应用程序。
Description
技术领域
本发明有关于计算***,特别是有关于计算***的运行时数据收集(runtimedata collection)和性能调整(performance tuning)。
背景技术
由于现代计算***的复杂性增加,越来越多的不可预料的性能事件可能在***中发生,导致性能下降,如当处理器出现利用率或缓存出现低命中率(lowhit rate)时。性能事件是导致性能瓶颈的原因。用户可能会注意到一个应用程序需要较长的时间运行,但可能不容易确定(pin-point)发生了什么事件而导致问题的出现。一些现代的计算***配备性能计数器,可以配置来衡量性能的各个方面,如内存带宽或处理器的利用率。评估运行时数据,以确定问题的来源。然而,可用的性能计数器的数量,以及存储计数器数据的缓冲区,通常小于可能会出现在计算***中的可能发生的性能事件。
为了监视更多的性能事件,计算***通常一次收集性能事件的一个子集的数据。性能计数器每次配置为用于性能事件的一个子集,并将应用程序重新启动以收集该子集的数据。轮询策略(round-robin policy)可以用来确定收集哪个子集的数据,并多次重新启动应用程序以涵盖所有可能的性能事件。然而,在运行时反复重新启动应用程序是不希望发生的。
因此,需要使用改进的工具来检测性能瓶颈,以优化计算***的运行时性能。
发明内容
有鉴于此,本发明提供一种设备中动态数据收集的方法以及相应的设备。
依据本发明一实施方式,提供一种设备中动态数据收集的方法,包括:通过设备硬件收集高级别性能事件的数据,所述高级别性能事件表明造成性能瓶颈的备选原因;基于数据的实时分析,在造成所述性能瓶颈的所述高级别性能事件之间确定第一性能事件;以及重新配置所述设备硬件,以收集在所述第一性能事件之下的较低级别性能事件的额外的数据,以及所述较低级别性能事件表明比所述备选原因更具体的额外的备选原因;所述设备在连续执行所述应用程序的同时,执行所述收集、所述确定和所述重新配置的步骤。
依据本发明另一实施方式,提供一种用于执行动态数据收集的设备,包括:
一个或多个处理器,操作以执行应用程序;设备硬件,操作以收集高级别性能事件的数据,所述高级别性能事件表明在连续执行所述应用程序期间造成性能瓶颈的备选原因;诊断模块,耦接至所述设备硬件,其中所述诊断模块***作以基于所述数据的实时分析,在连续执行所述应用程序期间,在造成所述性能瓶颈的所述高级别性能事件之间确定第一性能事件;以及重新配置模块,耦接至所述设备硬件,其中所述重新配置模块***作,以在连续执行所述应用程序期间,重新配置所述设备硬件,以收集所述第一性能事件之下的较低级别性能事件的额外的数据,以及所述较低级别性能事件表明比所述备选原因更具体的额外的备选原因。
本发明所提供的设备中动态数据收集的方法以及相应的设备,能够使能设备以监视和调整其运行时的性能,同时持续不断地执行应用程序。
对于已经阅读后续由各附图及内容所显示的较佳实施方式的本领域的技术人员来说,本发明的各目的是明显的。
附图说明
图1为根据本发明一实施例的执行动态数据收集的设备的示意图。
图2为根据本发明一实施例的性能事件的分层结构的示意图。
图3为根据本发明一实施例的用于动态数据收集的硬件配置的示意图。
图4为根据本发明一实施例的用于动态数据收集的软件和硬件结合的示意图。
图5为根据本发明一实施例的用于动态数据收集的软件层的示意图。
图6为根据本发明一实施例的动态数据收集方法的流程图。
具体实施方式
在权利要求书及说明书中使用了某些词汇来指称特定的组件。所属领域中的技术人员应可理解,硬件制造商可能会用不同的名词来称呼同样的组件。本权利要求书及说明书并不以名称的差异来作为区分组件的方式,而是以组件在功能上的差异来作为区分的准则。在权利要求书及说明书中所提及的「包括」为开放式的用语,故应解释成「包括但不限定于」。另外,「耦接」一词在此包括任何直接及间接的电气连接手段。因此,若文中描述第一设备耦接于第二设备,则代表所述第一设备可直接电连接于所述第二设备,或通过其他设备或连接手段间接地电连接至所述第二设备。
本发明的实施例提供了一种方法和***,该方法和***能够使能设备以监视和调整其运行时的性能,同时持续不断地执行应用程序,例如,图形应用程序或任何计算应用程序。该方法和***在运行时执行性能时间的动态数据收集,不需要重新启动应用程序,只要该应用程序的工作负荷保持在大致相同的水平。因为***可以在运行时进行调整,因此数据收集是动态的,如同数据的收集和分析,性能事件中的哪一个被监视也是动态的。
在一实施例中,***(也可称为设备)收集高级别的性能事件(high-levelperformance events)的数据,实时分析数据,并基于分析结果重新配置设备的硬件(例如,性能计数器),以收集较低级别的(lower-level)性能事件的数据。在出现终止条件之前,为了不同级别的性能事件,可重复数据收集、数据分析和硬件重新配置的过程。在一实施例中,性能事件被安排为多层级的层级结构。至于造成性能瓶颈的原因,较低级别的性能事件相对于较高级别的性能事件更具体。例如,用户可能遇到的性能瓶颈表现为低吞吐量或长的响应时间。造成性能瓶颈的原因,在较高层级,可能是计算资源的低利用率。这种“计算资源的低利用率”是高层级的性能事件,表明了一个可能造成性能瓶颈的原因。要诊断低利用率的原因,收集各种计算资源的运行时数据,并对收集的数据进行实时分析。基于分析,可以确定,低利用率是由于停滞的流水线(pipeline)造成的。这种“停滞的流水线”是较低层级的性能事件,表明了造成低利用率的原因,也表明了一个更具体的造成性能瓶颈的原因。
如前所述,造成性能瓶颈的可能的原因数目远远大于设备中的性能计数器的数量。当需要对一不同的性能事件有进行针对性的诊断时,性能计数器被重新配置来收集来自计算资源的不同集合或其他性能指标的运行时数据。在一个实施例中,当应用程序继续执行时,只要在执行过程中没有工作负载变化,可以重新配置性能计数器。因此,当工作负载保持不变,应用程序可以连续运行而不被中断,同时不同级别的性能事件的运行时数据被收集和分析。一旦确定了性能瓶颈的具体原因,该设备可以重新配置以调整将被执行的应用程序的性能。在一个实施例中,该设备在运行时进行重新配置,而不中断应用程序的执行。
例如,高级别的性能事件可包括,但不限于,计算单元(CU)利用率事件、内存延迟事件、以及类似的事件。较低级别的性能事件的例子可包括,但不限于,计算单元匮乏(starvation)、低缓存命中(cache hits)、资源冲突(conflict)、流水线停滞(stall)、以及类似的事件。计算单元是中央处理单元(CPU)、图形处理单元(GPU)、数字信号处理器(DSP)、或其他类型的计算引擎中的功能单元。计算单元的例子包括,但不限于,向量处理器(例如,向量着色器(shader),顶点着色器等)、像素处理器(例如,像素着色器、片段着色器等)、计算处理器(例如,计算着色器)和用于特定功能(function)或特性(feature)的固定流水线逻辑(如复制引擎)。
为确保当设备收集并分析各级别的性能事件的数据时,该工作负载基本上保持不变,该设备监视应用程序的执行以检测工作负载变化。在一个实施例中,该设备监视工作负载指标(workload indicator)的数量,来检测工作负载的数量或特性是否发生改变。只要工作负载的数量和特点基本保持不变,该设备可以继续运行时数据收集和分析的任务。然而,当工作负载变化时,造成性能瓶颈的原因可能也会改变,这意味着先前收集的运行时数据对于寻找性能瓶颈的原因可能不再是有用的。因此,一旦检测到工作负载变化,数据收集将被重置,并从最高级别的性能事件重新开始收集。同时,当数据收集被重置以及重新开始时,应用程序的执行仍在继续而不会中断。
对于图形应用程序,本文所描述的方法和***利用在时间域中的邻近(即相邻的)的渲染帧中的相似性。类似的帧通常遇到相同的GPU流水线瓶颈以及消耗类似的资源。因此,只要图形工作负载的数量和特性基本保持相同,在图形应用程序的持续运行的同时,可进行动态数据收集和GPU的调整。虽然图形应用程序作为一个例子来描述,应被理解的是,本文所描述的方法和***可以应用于任何执行计算的应用程序。
图1为根据本发明一实施例的设备100的示意图。该设备100包括一个或多个GPU 120、一个或多个CPU 110,并且还可以包括其他处理单元,例如一个或多个数字信号处理器(DSP)等。在一些实施例中,GPU 110和CPU 120可以集成到片上***(SoC)平台。GPU 110和CPU 120通过互连(interconnect)130可相互通信,以及通过互连130与***存储器140进行通信。存储管理单元(MMU)150管理对***存储器140的访问。
在一实施例中,该设备100可以是移动计算机和/或通信设备(例如,智能手机、平板电脑、笔记本电脑、游戏设备等)的一部分。在一实施例中,该设备100可以是计算***,例如桌面计算机***、服务器计算***、云计算***或类似的计算***。
举例来说,GPU 120执行一系列的处理步骤来创建三维场景的二维栅格表示(raster representation)。这些处理步骤被称为三维图形流水线或渲染流水线。三维图形流水线将三维场景(例如,三维模型或三维计算机动画)转换成显示的二维栅格表示。3D图形流水线由多个计算单元组成,其中包括用于加快图形计算的固定功能硬件的组合、以及通用的可编程硬件以允许在图形渲染中的灵活性。通用的可编程硬件也可以称为着色硬件。除了渲染图形,着色硬件还可以执行一般的计算任务。
在一实施例中,当GPU 120执行图形应用程序时,它生成一系列的渲染帧作为输出。通常情况下,在时间上相邻的帧具有类似的特性,如类似的像素数、类似的顶点、或类似的硬件状态(例如,着色上下文(shader context))。GPU 120使用基本相同的资源(如内存和计算单元)渲染这些类似的相邻帧,以及引发基本相同的性能事件和性能瓶颈。因此,该设备100可以收集GPU 120的运行时数据以调整其性能,同时连续不断地执行图形应用程序。同样的原则也适用于其它执行通用或专用操作的处理单元(例如,CPU 110或DSP)。
在一实施例中,该设备100包括工作负载监视模块150,工作负载监视模块150耦接至CPU 110和/或GPU 120,以在设备100执行应用程序时监视负载的变化。对于GPU 120而言,工作负载变化的一个例子是,当前的渲染帧已经不再与先前的渲染帧相类似,例如,相对于像素数目、顶点的数目、或硬件状态。因此,从先前渲染帧的性能事件所收集的数据,已不能用于调整当前的性能。当工作负载监视模块150检测到工作负载变化时,在应用程序继续运行的同时,运行时数据的收集将被重置,并从最高级别的性能事件重新开始收集。在一实施例中,工作负载监视模块150基于一个或多个工作负载指标检测工作负载变化。对于图形应用程序而言,工作负载指标的例子包括,但不限于,顶点计数、像素计数、着色上下文(例如,着色指令类型或计数、着色输入纹理类型(shaderinput texture type)或计数、着色输入顶点或像素计数等)以及类似的指标。
在一实施例中,该设备100还包括诊断模块160,诊断模块160耦接到CPU110、GPU 120、和MMU 150,以接收收集到的性能事件运行时数据。CPU 110、GPU 120,和MMU 150可分别具有嵌入式设备硬件180A、180B和180C,如性能计数器,以从各个处理单元收集数据。设备100可以包括额外的处理单元或模块,其中诊断模块160可以接收收集到的数据。从收集到的数据,可以确定造成性能瓶颈的原因。诊断模块160对所收集的数据进行实时分析,并确定一个或多个性能事件以用于收集额外的数据。
在一实施例中,该设备100还包括重新配置模块170,重新配置模块170耦接到设备硬件180A、180B、和180C,以重新配置设备硬件,基于诊断模块160的分析收集额外的数据。在确定造成性能瓶颈的具体原因之后,重新配置模块170可以在运行时重新配置硬件和/或软件设置,以调整用于执行应用程序的设备的性能,而不需要重新启动应用程序。例如,重新配置模块170可调整硬件设置,关闭某些特性,如图形处理中的粗深度测试(coarse Z-test);或重新配置模块170可调整软件设置,如驱动程序中的命令参数,例如,改变纹理或颜色格式、将命令拆分成组等。
虽然工作负载监视模块150、诊断模块160和重新配置模块170在图1中显示为在CPU 110、GPU 120和***存储器140以外的功能模块,应当理解的是,在一些实施例中,与设备100内的其他类型的存储器、处理单元、控制单元和计算硬件一样,上述模块(150、160和170)可以包括硬件、软件、固件、或其结合,可部分或全部位于CPU 110、GPU 120和***存储器140内。
图2所示为根据本发明一实施例的一个性能事件的分层结构200示意图。诊断模块160从分层结构200的顶部向分层结构200的底部执行诊断任务,以找到造成性能瓶颈的原因。诊断从开始开始状态202,此时数据收集硬件被重置。在某些实施例中,当工作负载变化被检测到或状态201的计时器过期时,诊断可以重任何状态201转变为开始状态202(如图中所示的状态201和状态202之间的点连接)。在本实施例中,虚线框表示性能事件,如位于第一(即,最高)层级的低计算单元利用率210和长内存延迟250。这些性能事件表明了造成性能瓶颈的可替代原因(alternative cause)。较低级别的性能事件比较高级别的性能事件更具体,例如,第二层级的性能事件的每一个,包括:匮乏221、低缓存命中率(读)222、资源冲突223和流水线停滞224,针对低计算单元利用率210提供额外的信息,因此,表明了造成性能瓶颈的更具体的原因。在本实施例中,分层结构200还包括流水线停滞224之下的第三层级,包括:意外的中间数据计数231、低缓存命中率(写)232和先进先出缓冲器(FIFO)写满233。与分层结构200中的每个性能事件相关联的是被诊断模块160监测或记录的一个或多个性能对象(在图2中以实线框来表示)。例如,诊断模块160:记录在低计算单元利用率210的事件中的一个或多个计算单元211的状态;记录在长内存延迟250的事件中MMU的设置和动态随机存取存储器(DRAM)的带宽;记录在低缓存命中率(读)222的事件中与读取操作226相关联的缓存命令;记录在资源冲突223的事件中的本地存储状态227。在流水线停滞224的时间之下,分层结构200表明记录的性能对象:软件(SW)调度状态225(针对匮乏221)、流水线状态228(针对刘实现停滞224)、中间数据234(针对意外的中间数据计数231)、写操作相关的缓存命令235(针对低缓存命中率(写)232)和FIFO命令236(针对FIFO写满233)。
在此所使用的术语“记录”相当于“收集运行时数据”或“在运行时收集…”。例如,“记录存储状态”相当于“收集存储状态的运行时数据”或“在运行时收集存储状态”。
在分层结构200的基础上,收集最高级别性能事件的运行时数据,对收集到的数据进行实时分析,并在分析的基础上确定造成性能瓶颈的最相关的性能事件之一。然后重置设备硬件以收集在确定的性能事件以下的较低级别的性能事件的运行时数据。分级操作直至满足下列终止条件之一:造成性能瓶颈的具体原因被确定、分层结构200的最低层级被达到、工作负载的变化被检测到、或超时。
在一个实施例中,使用性能计数器来提供设备100中的计算和存储资源的状态。计数器数据提供了关于性能瓶颈的信息,并有助于微调***和应用程序的性能。由于计数器的数目和设备100中存储计数器数据的空间有限,性能计数器不能同时跟踪设备100中的所有资源和活动的状态。因此,在每一个时间段,只有性能对象的一个子集被监视。如图2所描述的,收集哪一个子集的决定是由所述性能事件的分层结构来指导的。每次性能事件的一个子集被确定为造成性能瓶颈的潜在原因,重置设备硬件,使得最相关的运行时数据可以被收集和分析。
图3为根据本发明一实施例的设备100中的用于收集运行时数据的硬件配置的示意图。图3中左边的是性能计数器310,应当了解的是,该设备100可以包含任意数量的性能计数器。图3中右边的是性能对象330,如计算单元、流水线、存储单元、高速缓存和命令等的状态,每个性能事件都与一个或多个性能对象相关联。因此,监视不同的性能事件意味着监视一组不同的性能对象。在性能计数器310和性能对象330之间的是多层级(multi-level)多工器(multiplexer,MUX)矩阵320,其配置为在运行时允许不同的性能对象被监视以及性能对象的数据被收集。在一实施例中,每次在一组新的性能事件的数据被收集之前,MUX矩阵320被重新配置,以使性能计数器310用于收集性能对象330的适当的子集的数据。在一些实施例中,“配置或重新配置性能计数器”可以理解为等同于“配置或重新配置MUX矩阵320”。在另一个实施例中,“配置或重新配置性能计数器”可以理解为等同于“选择性地启用从对应于性能事件子集的性能对象子集收集运行时数据”。
图4为根据本发明一实施例的设备100中的用于动态数据收集的软件和硬件结合的示意图。为了收集运行时数据,在步骤(A)中,软件410分配DRAM420(如图1所示的***存储器140)中的缓冲区。作为一种选择,该设备的片上静态随机存取存储器(SRAM)的一部分、寄存器或SoC上的D触发器电路可以指定使用的缓冲区。在步骤(B)中,软件410重置硬件430并配置硬件430,以将收集到的数据对象460从硬件430发送到缓冲区(例如,DRAM 420、片上存储器、或电路)。在一实施例中,收集到的数据对象460是性能计数器数据。在步骤(C)中,硬件430在规定的时间段之后将运行时数据470写入缓冲区。在步骤(D)中,软件410等待轮询间隔440,并在缓冲区中读回所有有效的数据470。在第二个轮询间隔450中重复步骤(A)-(D),并继续直到满足终止条件为止。
图5为根据本发明一实施例的设备100使用的用于动态数据收集的软件层(如,软件410)的示意图。该软件层包括用户模式510和内核模式520。在用户模式510中执行了多个应用程序550。用户模式510还包括用户驱动程序(userdriver)511和性能后台程序(performance daemon)512。内核模式520还包括内核驱动程序521和性能计数器驱动程序522。在该软件层之下是硬件层530,硬件层530包括性能计数器531和其他设备硬件。为简洁起见,设备100中的所有的软件和硬件组件并非都绘示在图中。
在一实施例中,性能计数器驱动程序522执行如图4所描述的软件410的操作。在另一实施例中,性能后台程序512执行如图4所描述的软件410的操作。在又一实施例中,该性能计数器驱动程序522和性能后台程序512的组合执行如图4所描述的软件410的操作。在一实施例中,在运行时数被收集之后,收集的数据存储在性能计数器日志文件560中,性能后台程序512可访问性能计数器日志文件560以确定造成性能瓶颈的原因并用于性能调整。
在图5所示的实施例中,用户驱动程序511和内核驱动程序521分别管理应用程序550和操作***的地址空间。用户驱动程序511和内核驱动程序521也可以分别管理硬件530和应用程序550、以及操作***之间的通信。
同时参考图1,在一实施例中,工作负载监视模块150、诊断模块160和重新配置模块170的操作,除了可由设备硬件(如,性能计数器531)来执行以外,还可以由性能计数器驱动程序522、性能后台程序512或两者的组合来执行。在一实施例中,用户模式510和内核模式520可以是由CPU 110、GPU 120或两者的组合执行的软件。
图6为根据本发明一实施例的在设备执行应用程序的同时在设备中用于动态数据收集的方法600的流程图。方法600可以通过计算***(如图1中的设备100)来执行。参考图6,方法600开始于设备硬件收集高级别性能事件的数据,高级别性能事件表明造成性能瓶颈的备选原因(步骤610)。基于数据的实时分析,该设备100在造成性能瓶颈的高级别性能事件之间确定第一性能事件(步骤620)。设备100重新配置硬件以收集位于第一性能事件之下的较低级别性能事件的额外的数据,以及较低级别性能事件表明比造成性能瓶颈的备选原因更具体的其他备选原因(步骤630)。在设备100连续地执行应用程序的同时,执行上述收集、确定和重新配置的步骤(步骤630)。
图6所示的流程图的操作已被图1所示的实施例所描述。但是,应该理解的是,图6所示的流程图的操作可以通过引用除图1所描述的以外的方式来执行,并且图1所描述的方式可以不同于其他的操作方式。虽然图6所示的流程图显示本发明的某些实施例执行操作的特定顺序,但应该被理解的是,这样的顺序仅作为示例用(例如,替代实施例可以采用不同的顺序来执行操作、合并某些操作、重复某些操作等)。
以上所述仅为本发明的较佳实施方式,凡依本发明权利要求所做的均等变化和修饰,均应属本发明的涵盖范围。
Claims (20)
1.一种设备中动态数据收集的方法,所述设备正在执行应用程序,其特征在于,包括:
通过设备硬件收集高级别性能事件的数据,所述高级别性能事件表明造成性能瓶颈的备选原因;
基于数据的实时分析,在造成所述性能瓶颈的所述高级别性能事件之间确定第一性能事件;以及
重新配置所述设备硬件,以收集在所述第一性能事件之下的较低级别性能事件的额外的数据,以及所述较低级别性能事件表明比所述备选原因更具体的额外的备选原因;
所述设备在连续执行所述应用程序的同时,执行所述收集、所述确定和所述重新配置的步骤。
2.如权利要求1所述的设备中动态数据收集的方法,其特征在于,还包括:
在所述较低级别性能事件之间确定第二性能事件;以及
在所述应用程序的连续执行期间,重新配置一个或多个设备设置,以相对于所述第二性能事件调整所述设备的性能。
3.如权利要求1所述的设备中动态数据收集的方法,其特征在于,所述设备硬件包括性能计数器。
4.如权利要求1所述的设备中动态数据收集的方法,其特征在于,还包括:
在执行所述应用程序时监视多个工作负载变化的指标;以及
当一个或多个所述指标表明所述工作负载变化时,重置所述数据的收集和所述应用程序的执行。
5.如权利要求4所述的设备中动态数据收集的方法,其特征在于,所述重置所述数据的收集还包括:
当一个或多个所述指标显示所述工作负载变化时,重新开始所述数据的收集。
6.如权利要求4所述的设备中动态数据收集的方法,其特征在于,所述指标包括顶点计数、像素计数、着色上下文中的至少一个。
7.如权利要求1所述的设备中动态数据收集的方法,其特征在于,所述高级别性能事件包括计算单元利用率事件和内存延迟事件。
8.如权利要求1所述的设备中动态数据收集的方法,其特征在于,在内核模式下运行的嵌入式软件驱动程序执行所述确定和所述重新配置的步骤。
9.如权利要求1所述的设备中动态数据收集的方法,其特征在于,在用户模式下运行的嵌入式软件的后台程序执行所述确定和所述重新配置的步骤。
10.如权利要求1所述的设备中动态数据收集的方法,其特征在于,所述收集的步骤还包括:
重置所述设备硬件中的性能计数器;
配置所述性能计数器,以收集所述高级别性能事件的所述数据至缓冲区内;以及
轮询间隔后从所述缓冲区中取回所述数据。
11.一种用于执行动态数据收集的设备,其特征在于,包括:
一个或多个处理器,操作以执行应用程序;
设备硬件,操作以收集高级别性能事件的数据,所述高级别性能事件表明在连续执行所述应用程序期间造成性能瓶颈的备选原因;
诊断模块,耦接至所述设备硬件,其中所述诊断模块***作以基于所述数据的实时分析,在连续执行所述应用程序期间,在造成所述性能瓶颈的所述高级别性能事件之间确定第一性能事件;以及
重新配置模块,耦接至所述设备硬件,其中所述重新配置模块***作,以在连续执行所述应用程序期间,重新配置所述设备硬件,以收集所述第一性能事件之下的较低级别性能事件的额外的数据,以及所述较低级别性能事件表明比所述备选原因更具体的额外的备选原因。
12.如权利要求11所述的用于执行动态数据收集的设备,其特征在于,所述诊断模块进一步***作,以在所述较低级别性能事件之间确定第二性能事件,
以及所述重新配置模块进一步***作以重新配置一个或多个设备设置,以在连续执行所述应用程序期间,相对于所述第二性能事件调整所述设备的性能。
13.如权利要求11所述的用于执行动态数据收集的设备,其特征在于,所述设备硬件包括性能计数器。
14.如权利要求11所述的用于执行动态数据收集的设备,其特征在于,还包括工作负载监视模块,所述工作负载监视模块***作以执行:
在执行所述应用程时,监视多个工作负载指标的变化;以及
当一个或多个指标表明所述工作负载变化时,重置所述数据的收集和所述应用程序的执行。
15.如权利要求14所述的用于执行动态数据收集的设备,其特征在于,当一个或多个所述指标显示所述工作负载变化时,所述工作负载监视模块进一步***作,以重新开始所述数据的收集。
16.如权利要求14所述的用于执行动态数据收集的设备,其特征在于,所述指标包括顶点计数、像素计数、着色上下文中的至少一个。
17.如权利要求11所述的用于执行动态数据收集的设备,其特征在于,所述高级别性能事件包括计算单元利用率事件和内存延迟事件。
18.如权利要求11所述的用于执行动态数据收集的设备,其特征在于,所述一个或多个处理器***作以执行在内核模式下运行的嵌入式软件驱动程序,以执行所述诊断模块和所述重新配置模块的操作。
19.如权利要求11所述的用于执行动态数据收集的设备,其特征在于,所述一个或多个处理器***作以执行在用户模式下运行的嵌入式软件的后台程序,以执行所述诊断模块和所述重新配置模块的操作。
20.如权利要求11所述的用于执行动态数据收集的设备,其特征在于,所述一个或多个处理器包括图形处理单元和中央处理单元中的至少一个。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/864,357 | 2015-09-24 | ||
US14/864,357 US10019271B2 (en) | 2015-09-24 | 2015-09-24 | Dynamic runtime data collection and performance tuning |
Publications (1)
Publication Number | Publication Date |
---|---|
CN106557400A true CN106557400A (zh) | 2017-04-05 |
Family
ID=58409514
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510937132.1A Withdrawn CN106557400A (zh) | 2015-09-24 | 2015-12-15 | 设备中动态数据收集的方法以及相应的设备 |
Country Status (2)
Country | Link |
---|---|
US (1) | US10019271B2 (zh) |
CN (1) | CN106557400A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112154419A (zh) * | 2019-08-19 | 2020-12-29 | 深圳市大疆创新科技有限公司 | 性能监测装置、方法、片上***、可移动平台及相机 |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP6911544B2 (ja) | 2017-06-02 | 2021-07-28 | 富士通株式会社 | プログラム、情報処理装置及び情報処理方法 |
US10529912B2 (en) * | 2017-08-23 | 2020-01-07 | New Relic, Inc. | Elastic system monitoring |
US20190342425A1 (en) * | 2018-05-01 | 2019-11-07 | Unity IPR ApS | Method and system for autonomous content optimization in games and graphical interactive applications |
US10848585B2 (en) * | 2018-12-03 | 2020-11-24 | Walmart Apollo, Llc | Using a sharded distributed cache as a pipeline integration buffer |
US11204829B2 (en) * | 2019-03-26 | 2021-12-21 | Innogrit Technologies Co., Ltd. | Systems and methods for an ECC architecture with prioritized task queues |
US10915421B1 (en) * | 2019-09-19 | 2021-02-09 | Intel Corporation | Technology for dynamically tuning processor features |
US11010863B2 (en) | 2019-09-27 | 2021-05-18 | Apple Inc. | Bindpoint emulation |
US11455195B2 (en) * | 2020-01-03 | 2022-09-27 | International Business Machines Corporation | Workload-based cognitive dynamic computing system optimization |
US11698797B2 (en) * | 2021-07-01 | 2023-07-11 | Micro Focus Llc | Application tuning based on performance characteristics |
US12002142B2 (en) * | 2021-07-12 | 2024-06-04 | Qualcomm Incorporated | Performance overhead optimization in GPU scoping |
US11948018B2 (en) | 2021-12-16 | 2024-04-02 | International Business Machines Corporation | Methods and systems for dynamic reconfiguring of hardware performance monitoring unit (PMU) events |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102004678A (zh) * | 2010-11-11 | 2011-04-06 | 青岛普加智能信息有限公司 | 操作***性能分析方法及装置 |
US20120081377A1 (en) * | 2010-10-01 | 2012-04-05 | Sowerby Andrew M | Graphics System which Measures CPU and GPU Performance |
CN103778050A (zh) * | 2013-12-30 | 2014-05-07 | 国网山东省电力公司 | 一种数据库服务器高可用性能检测*** |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8468532B2 (en) * | 2006-06-21 | 2013-06-18 | International Business Machines Corporation | Adjusting CPU time allocated to next thread based on gathered data in heterogeneous processor system having plurality of different instruction set architectures |
US7987345B2 (en) * | 2007-09-28 | 2011-07-26 | Broadcom Corporation | Performance monitors in a multithreaded processor architecture |
US8614716B2 (en) * | 2010-10-01 | 2013-12-24 | Apple Inc. | Recording a command stream with a rich encoding format for capture and playback of graphics content |
US20140089699A1 (en) * | 2012-09-27 | 2014-03-27 | Advanced Micro Devices | Power management system and method for a processor |
US9405575B2 (en) * | 2013-09-09 | 2016-08-02 | Apple Inc. | Use of multi-thread hardware for efficient sampling |
-
2015
- 2015-09-24 US US14/864,357 patent/US10019271B2/en active Active
- 2015-12-15 CN CN201510937132.1A patent/CN106557400A/zh not_active Withdrawn
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120081377A1 (en) * | 2010-10-01 | 2012-04-05 | Sowerby Andrew M | Graphics System which Measures CPU and GPU Performance |
CN102004678A (zh) * | 2010-11-11 | 2011-04-06 | 青岛普加智能信息有限公司 | 操作***性能分析方法及装置 |
CN103778050A (zh) * | 2013-12-30 | 2014-05-07 | 国网山东省电力公司 | 一种数据库服务器高可用性能检测*** |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112154419A (zh) * | 2019-08-19 | 2020-12-29 | 深圳市大疆创新科技有限公司 | 性能监测装置、方法、片上***、可移动平台及相机 |
WO2021031082A1 (zh) * | 2019-08-19 | 2021-02-25 | 深圳市大疆创新科技有限公司 | 性能监测装置、方法、片上***、可移动平台及相机 |
Also Published As
Publication number | Publication date |
---|---|
US10019271B2 (en) | 2018-07-10 |
US20170090955A1 (en) | 2017-03-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106557400A (zh) | 设备中动态数据收集的方法以及相应的设备 | |
EP3830715B1 (en) | Storage aggregator controller with metadata computation control | |
US10761957B2 (en) | Optimization of operating system and virtual machine monitor memory management | |
US8144167B2 (en) | Monitoring graphics processing | |
TW385387B (en) | Method and system for performance monitoring in a multithreaded processor | |
CN104335175B (zh) | 基于***性能度量在***节点之间标识和迁移线程的方法和*** | |
Sheaffer et al. | A flexible simulation framework for graphics architectures | |
Bin et al. | Studying co-running avionic real-time applications on multi-core COTS architectures | |
US20100318990A1 (en) | Method and apparatus for scalable monitoring of virtual machine environments | |
CN101986280A (zh) | 虚拟计算***的自动化测试平台 | |
US8270410B2 (en) | Sampling techniques | |
CN104301389A (zh) | 一种云计算***的能效监控和管理方法与*** | |
US20160147587A1 (en) | Method of analyzing a fault of an electronic system | |
US8898390B2 (en) | Scheduling workloads based on cache asymmetry | |
US20120131277A1 (en) | Active memory processor system | |
CN109462495A (zh) | 一种船舶硬件与通信***检测***及方法 | |
CN107341040A (zh) | 一种虚拟化云平台的数据采集方法和装置 | |
CN104657198B (zh) | Numa架构***在虚拟机环境中的访存优化方法及*** | |
US20170017575A1 (en) | Apparatus and Method of Performing Agentless Remote IO Caching Analysis, Prediction, Automation, and Recommendation in a Computer Environment | |
Li et al. | AI-enabling workloads on large-scale GPU-accelerated system: Characterization, opportunities, and implications | |
US20090006036A1 (en) | Shared, Low Cost and Featureable Performance Monitor Unit | |
CN107977167A (zh) | 一种基于纠删码的分布式存储***的退化读优化方法 | |
CN110347605A (zh) | 防止软件退化的方法、装置、设备及存储介质 | |
CN107656851A (zh) | 一种基于部件能耗模型的云服务器能耗测算方法及*** | |
US11157348B1 (en) | Cognitive control of runtime resource monitoring scope |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WW01 | Invention patent application withdrawn after publication |
Application publication date: 20170405 |
|
WW01 | Invention patent application withdrawn after publication |