CN114428712A - 耗时统计方法及装置 - Google Patents
耗时统计方法及装置 Download PDFInfo
- Publication number
- CN114428712A CN114428712A CN202210088270.7A CN202210088270A CN114428712A CN 114428712 A CN114428712 A CN 114428712A CN 202210088270 A CN202210088270 A CN 202210088270A CN 114428712 A CN114428712 A CN 114428712A
- Authority
- CN
- China
- Prior art keywords
- time
- data
- resource
- task
- operator
- 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.)
- Pending
Links
Images
Classifications
-
- 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/3006—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system is distributed, e.g. networked systems, clusters, multiprocessor systems
-
- 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/302—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a software system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3051—Monitoring arrangements for monitoring the configuration of the computing system or of the computing system component, e.g. monitoring the presence of processing resources, peripherals, I/O links, software programs
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本公开提供了一种耗时统计方法、装置、设备、存储介质以及计算机程序产品,涉及人工智能技术领域,具体为深度学习技术领域,可应用于耗时统计等场景。具体实现方案为:基于任务依赖关系,确定同一任务链路上的多个数据任务;获取执行多个数据任务产生的外部准备耗时;基于多个数据任务中预先注册的多个资源监听器,获取执行多个数据任务产生的多组资源耗时和运行耗时;将外部准备耗时、多组资源耗时和运行耗时,按照任务依赖关系进行串联,得到耗时结果。基于资源监听器获取资源耗时和运行耗时,并基于任务依赖关系得到耗时结果,提高了耗时统计的准确率。
Description
技术领域
本公开涉及人工智能技术领域,具体为深度学习技术领域,可应用于耗时统计等场景,尤其涉及一种耗时统计方法、装置、设备、存储介质以及计算机程序产品。
背景技术
目前在对大数据的数据作业进行耗时统计时,通常只对数据作业的总体耗时进行监控,或者采用拉取式的单数据耗时监控,对于作业链路上的各个上游耗时信息无法监控,无法对全链路耗时数据进行分析。
发明内容
本公开提供了一种耗时统计方法、装置、设备、存储介质以及计算机程序产品,提高了耗时统计的准确率。
根据本公开的一方面,提供了一种耗时统计方法,包括:基于任务依赖关系,确定同一任务链路上的多个数据任务;获取执行多个数据任务产生的外部准备耗时;基于多个数据任务中预先注册的多个资源监听器,获取执行多个数据任务产生的多组资源耗时和运行耗时;将外部准备耗时、多组资源耗时和运行耗时,按照任务依赖关系进行串联,得到耗时结果。
根据本公开的另一方面,提供了一种耗时统计装置,包括:确定模块,被配置为基于任务依赖关系,确定同一任务链路上的多个数据任务;第一获取模块,被配置为获取执行多个数据任务产生的外部准备耗时;第二获取模块,被配置为基于多个数据任务中预先注册的多个资源监听器,获取执行多个数据任务产生的多组资源耗时和运行耗时;串联模块,被配置为将外部准备耗时、多组资源耗时和运行耗时,按照任务依赖关系进行串联,得到耗时结果。
根据本公开的又一方面,提供了一种电子设备,包括:至少一个处理器;以及与至少一个处理器通信连接的存储器;其中,存储器存储有可被至少一个处理器执行的指令,指令被上述至少一个处理器执行,以使上述至少一个处理器能够执行上述耗时统计方法。
根据本公开的又一方面,提供了一种存储有计算机指令的非瞬时计算机可读存储介质,其中,上述计算机指令用于使上述计算机执行上述耗时统计方法。
根据本公开的再一方面,提供了一种计算机程序产品,包括计算机程序,上述计算机程序在被处理器执行时实现上述耗时统计方法。
应当理解,本部分所描述的内容并非旨在标识本公开的实施例的关键或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。
附图说明
附图用于更好地理解本方案,不构成对本公开的限定。其中:
图1是本公开可以应用于其中的示例性系统架构图;
图2是根据本公开的耗时统计方法的一个实施例的流程图;
图3是根据本公开的耗时统计方法的另一个实施例的流程图;
图4(a)和图4(b)是根据本公开的耗时统计方法的一个示意图;
图5(a)和图5(b)是根据本公开的耗时统计方法的另一个示意图;
图6是根据本公开的耗时统计装置的一个实施例的结构示意图;
图7是用来实现本公开实施例的耗时统计方法的电子设备的框图。
具体实施方式
以下结合附图对本公开的示范性实施例做出说明,其中包括本公开实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本公开的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
图1示出了可以应用本公开的耗时统计方法或耗时统计装置的实施例的示例性系统架构100。
如图1所示,系统架构100可以包括终端设备101、102、103,网络104和服务器105。网络104用以在终端设备101、102、103和服务器105之间提供通信链路的介质。网络104可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
用户可以使用终端设备101、102、103通过网络104与服务器105交互,以获取耗时结果等。终端设备101、102、103上可以安装有各种客户端应用,例如资源监听应用等等。
终端设备101、102、103可以是硬件,也可以是软件。当终端设备101、102、103为硬件时,可以是各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等等。当终端设备101、102、103为软件时,可以安装在上述电子设备中。其可以实现成多个软件或软件模块,也可以实现成单个软件或软件模块。在此不做具体限定。
服务器105可以提供各种基于耗时统计的服务。例如,服务器105可以对从终端设备101、102、103获取到的多个数据任务进行分析和处理,并生成处理结果(例如获取耗时结果等)。
需要说明的是,服务器105可以是硬件,也可以是软件。当服务器105为硬件时,可以实现成多个服务器组成的分布式服务器集群,也可以实现成单个服务器。当服务器105为软件时,可以实现成多个软件或软件模块(例如用来提供分布式服务),也可以实现成单个软件或软件模块。在此不做具体限定。
需要说明的是,本公开实施例所提供的耗时统计方法一般由服务器105执行,相应地,耗时统计装置一般设置于服务器105中。
应该理解,图1中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。
继续参考图2,其示出了根据本公开的耗时统计方法的一个实施例的流程200。该耗时统计方法包括以下步骤:
步骤201、基于任务依赖关系,确定同一任务链路上的多个数据任务。
在本实施例中,耗时统计方法的执行主体(例如图1所示的服务器105)可以基于任务依赖关系,确定同一任务链路上的多个数据任务。其中,任务依赖关系是指数据产生的链路关系,同一任务链路上的多个数据任务是指具有链路关系的多个数据任务,多个数据任务之间彼此依赖,示例性的,首个数据任务A经过加工处理,得到处理结果A1,数据任务B基于A1进行加工处理,得到处理结果B1,数据任务C基于B1进行加工处理,得到处理结果C1,数据任务A、数据任务B和数据任务C之间存在任务依赖关系,属于同一任务链路上的三个数据任务。具体地,可以先确定数据加工目标,并在数据任务池中确定实现数据加工目标所需要的第一个数据任务,从数据任务池中获取与第一个数据任务具有链路关系任务,作为同一任务链路上的第二个数据任务,以此类推,从数据任务池中获取所有具有链路关系的数据任务,作为同一任务链路上的多个数据任务。
步骤202、获取执行多个数据任务产生的外部准备耗时。
在本实施例中,上述执行主体在获取多个数据任务后,可以获取执行多个数据任务产生的外部准备耗时。其中,外部准备耗时是指从任务开始到外部数据准备就绪所经过的时长,外部数据可以是执行多个数据任务所需的输入数据,具体地,可以在检测到数据任务开始执行后,同时开始执行计时算子和外部数据准备算子,当外部数据准备就绪后,计时算子停止计时,从计时算子中输出计时时长,作为外部准备耗时。
步骤203、基于多个数据任务中预先注册的多个资源监听器,获取执行多个数据任务产生的多组资源耗时和运行耗时。
在本实施例中,上述执行主体在获取外部准备耗时后,可以进一步获取多组资源耗时和运行耗时。其中,资源监听器是在数据任务执行过程中,监听申请执行器数量的监听器,可以预先在每个数据任务中注册一个资源监听器。具体地,当多个数据任务按照任务依赖关系顺序执行时,当检测到一个数据任务开始执行,则该数据任务中的资源监听器被激活,资源监听器开始监听该数据任务申请执行器的数量,并记录下开始监听的时间,当监听到已经申请达到该数据任务所需要的执行器数量时,停止申请,并记录下停止申请的时间,开始进行该数据任务的数据计算,当检测到该数据任务停止计算时,记录下停止计算的时间,并关闭资源监听器。该数据任务的停止申请时间与开始监听时间的时间差,即该数据任务的资源耗时,该数据任务的停止计算时间与停止申请时间的时间差,即该数据任务的运行耗时,同一数据任务的资源耗时和运行耗时可以作为一组资源耗时和运行耗时,以此获取执行多个数据任务产生的多组资源耗时和运行耗时。
步骤204、将外部准备耗时、多组资源耗时和运行耗时,按照任务依赖关系进行串联,得到耗时结果。
在本实施例中,上述执行主体在获取外部准备耗时、多组资源耗时和运行耗时后,可以进一步得到耗时结果。具体地,可以将外部准备耗时作为一个串联单元,将一组资源耗时和运行耗时作为一个串联单元,基于产生外部准备耗时或一组资源耗时和运行耗时的数据任务之间的任务依赖关系,将各个串联单元进行串联,得到耗时结果。示例性的,可以基于数据任务之间的任务依赖关系,将外部准备耗时作为第一个串联单元,将数据任务A产生的一组资源耗时和运行耗时作为第二个串联单元,将数据任务C产生的一组资源耗时和运行耗时作为第三个串联单元,将数据任务B产生的一组资源耗时和运行耗时作为第四个串联单元,将串联结果确定为耗时结果。
本公开实施例提供的耗时统计方法,首先基于任务依赖关系,确定同一任务链路上的多个数据任务,然后获取执行多个数据任务产生的外部准备耗时,接着基于多个数据任务中预先注册的多个资源监听器,获取执行多个数据任务产生的多组资源耗时和运行耗时,最后将外部准备耗时、多组资源耗时和运行耗时,按照任务依赖关系进行串联,得到耗时结果。基于上述方法可以使得到的外部准备耗时、资源耗时和运行耗时更准确,从而使得到的耗时结果更准确,且将获取的外部准备耗时、多组资源耗时和运行耗时进行串联,便于进行阶段性的耗时分析,为数据任务的时效优化提供了数据支撑。
进一步继续参考图3,其示出了根据本公开的耗时统计方法的另一个实施例的流程300。该耗时统计方法包括以下步骤:
步骤301、基于任务依赖关系,确定同一任务链路上的多个数据任务。
在本实施例中,步骤301具体操作已在图2所示的实施例中步骤201进行了详细的介绍,在此不再赘述。
步骤302、基于任务依赖关系,确定同一任务链路上的首个数据任务。
在本实施例中,上述执行主体可以基于任务依赖关系,确定同一任务链路上的首个数据任务。其中,首个数据任务即在同一任务链路上,第一个执行的数据任务。具体地,可以对在同一任务链路上的多个数据任务进行分析,从多个数据任务中找出生成的数据结果被其它数据任务使用,但没有使用其它数据任务生成的数据结果的数据任务,作为首个数据任务。
步骤303、响应于执行首个数据任务中的依赖检查算子之前,执行在首个数据任务中预先添加的第一回调算子,得到开始时间。
在本实施例中,上述执行主体可以基于首个任务数据中的第一回调算子,得到开始时间。具体地,首个任务数据可以包括依赖检查算子和计算算子,为了便于记录需要的时间点,可以以切面的形式在依赖检查算子前添加第一回调算子,在依赖检查算子后添加第二回调算子,在计算算子后添加第三回调算子。其中,切面即以面向切面编程的形式,在首个数据任务中找到三个分割点,在每个分割点处添加一个回调算子,第一回调算子、第二回调算子、第三回调算子均是请求记录时间的算子,当程序运行到任意一个回调算子的位置时,回调算子可以以应用程序接口的形式,调用耗时监控服务,耗时监控服务可以记录下当前时间点,其中,耗时监控服务是独立于任意一个数据任务的时间记录服务。通过这种切面式的任务调度回调算子,既不影响数据任务正常执行,又可准确、实时的获取数据任务时间点。
首个数据任务的算子执行顺序是第一回调算子、依赖检查算子、第二回调算子、计算算子、第三回调算子,当检测到开始执行首个数据任务,且在执行首个数据任务的依赖检查算子之前,执行第一回调算子,第一回调算子可以以应用程序接口的形式,调用耗时监控服务,耗时监控服务可以记录下当前时间点,作为开始时间。
步骤304、将首个数据任务的依赖检查完成时间与开始时间的时间差,确定为外部准备耗时。
在本实施例中,上述执行主体在获取开始时间后,可以进一步得到外部准备耗时。具体地,首个数据任务获取开始时间后,第一回调算子执行完毕,开始执行依赖检查算子,依赖检查算子用于检查上游数据是否就绪,在首个数据任务中,依赖检查算子用于检查外部数据时候准备就绪,当依赖检查算子执行完毕后,开始执行第二回调算子,第二回调算子可以以应用程序接口的形式,调用耗时监控服务,耗时监控服务可以记录下当前时间点,作为依赖检查完成时间。计算首个数据任务的依赖检查完成时间与开始时间的时间差,将获取的时间差作为外部准备耗时。
步骤305、基于多个数据任务中预先注册的多个资源监听器,获取多个数据任务各自的资源就绪时间。
在本实施例中,上述执行主体可以获取多个数据任务各自的资源就绪时间。具体地,可以预先在每个数据任务中各注册一个资源监听器,每个数据任务在执行数据任务时,顺序执行第一回调算子、依赖检查算子、第二回调算子、计算算子、第三回调算子,资源监听器位于每个数据任务的计算算子内,当一个数据任务开始执行时,先依次执行完毕第一回调算子、依赖检查算子、第二回调算子,当检测到开始执行计算算子时,计算算子中的资源监听器被激活,资源监听器开始监听该数据任务申请执行器的数量,当监听到已经申请达到该数据任务所需要的执行器数量时,资源监听器记录下此时的时间,作为该数据任务的资源就绪时间,以此获取多个数据任务各自的资源就绪时间。
在本实施例的一些可选实现方式中,可以对多个数据任务中的任意一个数据任务,执行以下资源就绪时间确定步骤:响应于开始执行数据任务中的计算算子并检测到新增执行器,生成申请事件;将申请事件发送到资源监听器中;通过资源监听器对累计申请的执行器数量进行监听;响应于监听到累计申请的执行器数量大于等于预设阈值,记录资源就绪时间。
具体地,对于任意一个数据任务,在依次执行完毕第一回调算子、依赖检查算子、第二回调算子后,检测到开始执行计算算子时,开始申请执行器,以便进行计算,当检测到新增执行器时,可以生成一个申请事件,申请事件用于通知新增了多少执行器。可以先将申请事件发送到监听器总线中,其中,监听器总线是一种可以容纳多种不同类型监听器的监听器容器,监听器总线在接收到申请事件后,可以将申请事件广播至监听器总线中的每个监听器中,预先注册的资源监听器进行响应,接收申请事件并进行处理。资源监听器可以读取申请事件中关于新增了多少执行器的信息,在已存储的累计申请执行器数量的基础上,再累加新增的执行器数量,得到更新的累计申请执行器数量,当更新的累计申请执行器数量大于等于预设阈值时,示例性的,预设阈值为该数据任务所需执行器数量的30%,例如为20,则记录下此时的时间,作为该数据任务的资源就绪时间,以此获取多个数据任务各自的资源就绪时间。需要说明的是,任意一个数据任务的运行机制是不需要申请到足够的执行器即可开始执行计算,因此,可以将预设阈值数量的执行器就位的时间视为资源就绪时间,其中,预设阈值数量的执行器可以是一个数据任务所需要的总执行器数量的30%,也可以是总执行器数量的50%、70%、90%。
步骤306、获取多个数据任务各自的依赖检查完成时间和结束时间。
在本实施例中,上述执行主体可以进一步获取多个数据任务各自的依赖检查完成时间和结束时间。其中,依赖检查完成时间即上游任务就绪的时间,也相当于待执行数据任务的依赖检查算子执行完成的时间。具体地,可以预先在每个任务的依赖检查算子和计算算子中添加时间记录程序,当检测到依赖检查算子执行完成时,触发时间记录程序,记录下此时的时间,作为该任务的依赖检查完成时间,并继续执行计算算子,当检测到计算算子执行完成时,触发时间记录程序,记录下此时的时间,作为该任务的结束时间,以此获取多个数据任务各自的依赖检查完成时间和结束时间。
在本实施例的一些可选实现方式中,可以对多个数据任务中的任意一个数据任务,执行以下依赖检查完成时间和结束时间确定步骤:执行数据任务中的依赖检查算子,响应于依赖检查算子执行完毕,执行在数据任务中预先添加的第二回调算子,得到依赖检查完成时间;执行数据任务中的计算算子,响应于计算算子执行完毕,执行在数据任务中预先添加的第三回调算子,得到结束时间。
具体地,每个数据任务在执行数据任务时,可以顺序执行第一回调算子、依赖检查算子、第二回调算子、计算算子、第三回调算子,其中,第一回调算子、第二回调算子、第三回调算子均是预先添加在每个数据任务中的请求记录时间的算子,当程序运行到任意一个回调算子的位置时,回调算子可以以应用程序接口的形式,调用耗时监控服务,耗时监控服务可以记录下当前时间点,其中,耗时监控服务是独立于任意一个数据任务的时间记录服务。当一个数据任务开始执行时,先依次执行完毕第一回调算子、依赖检查算子,当检测到依赖检查算子执行完毕时,开始执行第二回调算子,第二回调算子以应用程序接口的形式,调用耗时监控服务,耗时监控服务记录下当前时间点,作为该数据任务的依赖检查完成时间,继续执行该数据任务的计算算子,当检测到计算算子执行完毕时,开始执行第三回调算子,第三回调算子以应用程序接口的形式,调用耗时监控服务,耗时监控服务记录下当前时间点,作为该数据任务的结束时间,以此获取多个数据任务各自的依赖检查完成时间和结束时间。
步骤307、基于资源就绪时间、依赖检查完成时间和结束时间,得到多组资源耗时和运行耗时。
在本实施例中,上述执行主体在获取资源就绪时间、依赖检查完成时间和结束时间后,可以进一步得到多组资源耗时和运行耗时。具体地,可以将一个数据任务的资源就绪时间、依赖检查完成时间和结束时间输入到耗时计算模型中,从耗时计算模型的输出端,输出该数据任务的一组资源耗时和运行耗时,以此获取多个数据任务对应的多组资源耗时和运行耗时。
本实施例的一些可选实现方式中,可以对多个数据任务中的任意一个数据任务,通过以下步骤确定一组资源耗时和运行耗时:将数据任务的资源就绪时间与依赖检查完成时间的时间差,确定为数据任务的资源耗时;将数据任务的结束时间与资源就绪时间的时间差,确定为数据任务的运行耗时。
具体地,对于任意一个数据任务,可以用该数据任务的资源就绪时间减去依赖检查完成时间,将得到的时长作为该数据任务的资源耗时,用该数据任务的结束时间减去资源就绪时间,将得到的时长作为该数据任务的运行耗时,将同一个数据任务的资源耗时和运行耗时作为一组资源耗时和运行耗时,以此获取多个数据任务对应的多组资源耗时和运行耗时。
步骤308、将外部准备耗时作为串联首位。
在本实施例中,上述执行主体在获取外部准备耗时、多组资源耗时和运行耗时后,可以将外部准备耗时、多组资源耗时和运行耗时进行串联。具体地,外部准备耗时是在计算同一任务链路上的任意一个数据任务之前,将数据任务所需的外部输入数据准备就绪所需的时间,因此,外部数据准备是执行多个数据任务的第一个步骤,因此可以将外部准备耗时作为串联首位。
步骤309、按照任务依赖关系,将多组资源耗时和运行耗时依次串联在外部准备耗时之后,得到耗时结果。
在本实施例中,上述执行主体可以进一步串联多组资源耗时和运行耗时。具体地,每一组资源耗时和运行耗时是由同一个数据任务产生的,且一组资源耗时和运行耗时中,资源耗时产生在前,运行耗时产生在后,对于多组资源耗时和运行耗时的串联顺序,可以基于对应的多个数据任务之间的任务依赖关系进行排列,示例性的,多个数据任务共包括三个数据任务:数据任务A、数据任务B、数据任务C,三个数据任务之间的任务依赖关系是先执行数据任务A,基于数据任务A的计算结果执行数据任务C,基于数据任务C,的计算结果执行数据任务B,因此三个数据任务产生的三组资源耗时和运行耗时的串联顺序是:数据任务A产生的资源耗时、运行耗时、数据任务B产生的资源耗时、运行耗时、数据任务C产生的资源耗时、运行耗时,并将三组资源耗时和运行耗时串联在外部准备耗时之后,将得到的串联结果作为耗时结果。
从图3中可以看出,与图2对应的实施例相比,本实施例中的耗时统计方法,基于切面式回调的方法获取每个数据任务的开始时间、依赖检查完成时间、结束时间,不影响数据任务的正常执行,并能实时的对数据任务的阶段耗时信息进行监听,通过在每个数据任务的计算算子中注册资源监听器,监听部分执行器就位时间,来获取资源就绪时间,可以准确地对数据任务的资源耗时信息进行采集,为数据任务的时效优化提供了数据支撑,基于任务依赖关系的全链路分阶段耗时统计方法,极大降低了数据治理过程中对于复杂数据任务链路整体时效的成本。
进一步继续参考图4(a)和图4(b),其示出了根据本公开的耗时统计方法的一个示意图400。从图4(a)中可以看出,任意一个数据任务都包括第一回调算子、依赖检查算子、第二回调算子、计算算子、第三回调算子,当执行一个数据任务时,顺序执行第一回调算子、依赖检查算子、第二回调算子、计算算子、第三回调算子,其中,当执行第一回调算子、第二回调算子、第三回调算子时,是以应用程序接口的形式,调用耗时监控服务,耗时监控服务记录并存储当前时间点,作为该数据任务的开始时间、依赖检查完成时间、结束时间,当执行依赖检查算子和计算算子时,则分别调用依赖检查服务和计算集群来完成。图4(b)是任意一个数据任务中的计算算子内的资源监听器的示意图,在执行数据任务之前,首先将设计的资源监听器注册到计算算子中的监听器总线中,当开始执行计算算子时,资源监听器被激活,用以监听新增执行器的数量,当监听到累计申请的执行器数量达到预设阈值时,资源监听器可以记录该数据任务的资源就绪时间。
进一步继续参考图5(a)和图5(b),其示出了根据本公开的耗时统计方法的另一个示意图500。从图5(a)中可以看出,每一个数据任务都会获取四个时间点,分别是开始时间、依赖检查完成时间、资源就绪时间、结束时间,每一个数据任务都会基于获取的四个时间点得到三个耗时,分别是依赖检查耗时、资源耗时、运行耗时,其中,依赖检查耗时即检查上游任务就绪所耗费的时间,在同一任务链路上的首个数据任务中,依赖检查耗时即检查外部数据准备就绪所耗费的时间,因此,首个数据任务的依赖检查耗时即外部准备耗时,剩余每个数据任务的依赖检查耗时即其上游任务全部就绪所耗费的时间,每个数据任务的资源耗时即申请到预设阈值数量的执行器所耗费的时间,运行耗时即执行计算算子中的计算任务所耗费的时间。从图5(b)中可以看出,当获取所有数据任务的依赖检查耗时、资源耗时、运行耗时后,可以将得到的所有耗时进行串联,外部准备耗时是执行多个数据任务的第一步耗费的时间,因此作为串联首位,剩余数据任务的依赖检查耗时与上游任务的总体耗时相同,因此,在串联时不再重复体现,忽略剩余数据任务的依赖检查耗时,而基于数据任务之间的任务依赖关系,将剩余数据任务的资源耗时和运行耗时分别串联在外部准备耗时之后,得到耗时结果,基于串联得到的耗时结果可以直观的分析各个阶段的耗时情况,为时效优化提供了数据支撑。
进一步参考图6,作为对耗时统计方法的实现,本公开提供了一种耗时统计装置的一个实施例,该装置实施例与图2所示的方法实施例相对应,该装置具体可以应用于各种电子设备中。
如图6所示,本实施例的耗时统计装置600可以包括确定模块601,第一获取模块602,第二获取模块603,串联模块604。其中,确定模块601,被配置为基于任务依赖关系,确定同一任务链路上的多个数据任务;第一获取模块602,被配置为获取执行多个数据任务产生的外部准备耗时;第二获取模块603,被配置为基于多个数据任务中预先注册的多个资源监听器,获取执行多个数据任务产生的多组资源耗时和运行耗时;串联模块604,被配置为将外部准备耗时、多组资源耗时和运行耗时,按照任务依赖关系进行串联,得到耗时结果。
在本实施例中,耗时统计装置600:确定模块601,第一获取模块602,第二获取模块603,串联模块604的具体处理及其所带来的技术效果可分别参考图2对应实施例中的步骤201-204的相关说明,在此不再赘述。
在本实施例的一些可选实现方式中,第二获取模块603包括:第一获取子模块,被配置为基于多个数据任务中预先注册的多个资源监听器,获取多个数据任务各自的资源就绪时间;第二获取子模块,被配置为获取多个数据任务各自的依赖检查完成时间和结束时间;第三获取子模块,被配置为基于资源就绪时间、依赖检查完成时间和结束时间,得到多组资源耗时和运行耗时。
在本实施例的一些可选实现方式中,第一获取模块602包括:对于多个数据任务中的任意一个数据任务,执行以下资源就绪时间确定单元:生成单元,被配置为响应于开始执行数据任务中的计算算子并检测到新增执行器,生成申请事件;发送单元,被配置为将申请事件发送到资源监听器中;监听单元,被配置为通过资源监听器对累计申请的执行器数量进行监听;记录单元,被配置为响应于监听到累计申请的执行器数量大于等于预设阈值,记录资源就绪时间。
在本实施例的一些可选实现方式中,第二获取子模块包括:对于多个数据任务中的任意一个数据任务,执行以下依赖检查完成时间和结束时间确定单元:第一执行单元,被配置为执行数据任务中的依赖检查算子,响应于依赖检查算子执行完毕,执行在数据任务中预先添加的第二回调算子,得到依赖检查完成时间;第二执行单元,被配置为执行数据任务中的计算算子,响应于计算算子执行完毕,执行在数据任务中预先添加的第三回调算子,得到结束时间。
在本实施例的一些可选实现方式中,第三获取子模块包括:对于多个数据任务中的任意一个数据任务,通过以下单元确定一组资源耗时和运行耗时:第一确定单元,被配置为将数据任务的资源就绪时间与依赖检查完成时间的时间差,确定为数据任务的资源耗时;第二确定单元,被配置为将数据任务的结束时间与资源就绪时间的时间差,确定为数据任务的运行耗时。
在本实施例的一些可选实现方式中,第一获取模块602包括:确定子模块,被配置为基于任务依赖关系,确定同一任务链路上的首个数据任务;第四获取子模块,被配置为响应于执行首个数据任务中的依赖检查算子之前,执行在首个数据任务中预先添加的第一回调算子,得到开始时间;第五获取子模块,被配置为将首个数据任务的依赖检查完成时间与开始时间的时间差,确定为外部准备耗时。
在本实施例的一些可选实现方式中,串联模块604包括:第一串联子模块,被配置为将外部准备耗时作为串联首位;第二串联子模块,被配置为按照任务依赖关系,将多组资源耗时和运行耗时依次串联在外部准备耗时之后,得到耗时结果。
根据本公开的实施例,本公开还提供了一种电子设备、一种可读存储介质和一种计算机程序产品。
图7示出了可以用来实施本公开的实施例的示例电子设备700的示意性框图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本公开的实现。
如图7所示,设备700包括计算单元701,其可以根据存储在只读存储器(ROM)702中的计算机程序或者从存储单元708加载到随机访问存储器(RAM)703中的计算机程序,来执行各种适当的动作和处理。在RAM703中,还可存储设备700操作所需的各种程序和数据。计算单元701、ROM 702以及RAM 703通过总线704彼此相连。输入/输出(I/O)接口705也连接至总线704。
设备700中的多个部件连接至I/O接口705,包括:输入单元706,例如键盘、鼠标等;输出单元707,例如各种类型的显示器、扬声器等;存储单元708,例如磁盘、光盘等;以及通信单元709,例如网卡、调制解调器、无线通信收发机等。通信单元709允许设备700通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
计算单元701可以是各种具有处理和计算能力的通用和/或专用处理组件。计算单元701的一些示例包括但不限于中央处理单元(CPU)、图形处理单元(GPU)、各种专用的人工智能(AI)计算芯片、各种运行机器学习模型算法的计算单元、数字信号处理器(DSP)、以及任何适当的处理器、控制器、微控制器等。计算单元701执行上文所描述的各个方法和处理,例如耗时统计方法。例如,在一些实施例中,耗时统计方法可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元708。在一些实施例中,计算机程序的部分或者全部可以经由ROM 702和/或通信单元709而被载入和/或安装到设备700上。当计算机程序加载到RAM 703并由计算单元701执行时,可以执行上文描述的耗时统计方法的一个或多个步骤。备选地,在其他实施例中,计算单元701可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行耗时统计方法。
本文中以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、芯片上系统的系统(SOC)、负载可编程逻辑设备(CPLD)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
用于实施本公开的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)和互联网。
计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。服务器可以为分布式系统的服务器,或者是结合了区块链的服务器。服务器也可以是云服务器,或者是带人工智能技术的智能云计算服务器或智能云主机。服务器可以为分布式系统的服务器,或者是结合了区块链的服务器。服务器也可以是云服务器,或者是带人工智能技术的智能云计算服务器或智能云主机。
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发公开中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本公开公开的技术方案所期望的结果,本文在此不进行限制。
上述具体实施方式,并不构成对本公开保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本公开的精神和原则之内所作的修改、等同替换和改进等,均应包含在本公开保护范围之内。
Claims (17)
1.一种耗时统计方法,包括:
基于任务依赖关系,确定同一任务链路上的多个数据任务;
获取执行所述多个数据任务产生的外部准备耗时;
基于所述多个数据任务中预先注册的多个资源监听器,获取执行所述多个数据任务产生的多组资源耗时和运行耗时;
将所述外部准备耗时、所述多组资源耗时和运行耗时,按照所述任务依赖关系进行串联,得到耗时结果。
2.根据权利要求1所述的方法,其中,所述基于所述多个数据任务中预先注册的多个资源监听器,获取执行所述多个数据任务产生的多组资源耗时和运行耗时包括:
基于所述多个数据任务中预先注册的多个资源监听器,获取所述多个数据任务各自的资源就绪时间;
获取所述多个数据任务各自的依赖检查完成时间和结束时间;
基于所述资源就绪时间、所述依赖检查完成时间和所述结束时间,得到所述多组资源耗时和运行耗时。
3.根据权利要求2所述的方法,其中,所述基于所述多个数据任务中预先注册的多个资源监听器,获取所述多个数据任务各自的资源就绪时间包括:
对于所述多个数据任务中的任意一个数据任务,执行以下资源就绪时间确定步骤:
响应于开始执行数据任务中的计算算子并检测到新增执行器,生成申请事件;
将所述申请事件发送到所述资源监听器中;
通过所述资源监听器对累计申请的执行器数量进行监听;
响应于监听到所述累计申请的执行器数量大于等于预设阈值,记录所述资源就绪时间。
4.根据权利要求3所述的方法,其中,所述获取所述多个数据任务各自的依赖检查完成时间和结束时间包括:
对于所述多个数据任务中的任意一个数据任务,执行以下依赖检查完成时间和结束时间确定步骤:
执行数据任务中的依赖检查算子,响应于所述依赖检查算子执行完毕,执行在所述数据任务中预先添加的第二回调算子,得到所述依赖检查完成时间;
执行所述数据任务中的计算算子,响应于所述计算算子执行完毕,执行在所述数据任务中预先添加的第三回调算子,得到所述结束时间。
5.根据权利要求4所述的方法,其中,所述基于所述资源就绪时间、所述依赖检查完成时间和所述结束时间,得到所述多组资源耗时和运行耗时包括:
对于所述多个数据任务中的任意一个数据任务,通过以下步骤确定一组资源耗时和运行耗时:
将所述数据任务的所述资源就绪时间与所述依赖检查完成时间的时间差,确定为所述数据任务的所述资源耗时;
将所述数据任务的所述结束时间与所述资源就绪时间的时间差,确定为所述数据任务的所述运行耗时。
6.根据权利要求4-5任一项所述的方法,其中,所述获取执行所述多个数据任务产生的外部准备耗时包括:
基于所述任务依赖关系,确定所述同一任务链路上的首个数据任务;
响应于执行所述首个数据任务中的依赖检查算子之前,执行在所述首个数据任务中预先添加的第一回调算子,得到开始时间;
将所述首个数据任务的所述依赖检查完成时间与所述开始时间的时间差,确定为所述外部准备耗时。
7.根据权利要求6所述的方法,其中,所述将所述外部准备耗时、所述多组资源耗时和运行耗时,按照所述任务依赖关系进行串联,得到耗时结果包括:
将所述外部准备耗时作为串联首位;
按照所述任务依赖关系,将所述多组资源耗时和运行耗时依次串联在所述外部准备耗时之后,得到所述耗时结果。
8.一种耗时统计装置,所述装置包括:
确定模块,被配置为基于任务依赖关系,确定同一任务链路上的多个数据任务;
第一获取模块,被配置为获取执行所述多个数据任务产生的外部准备耗时;
第二获取模块,被配置为基于所述多个数据任务中预先注册的多个资源监听器,获取执行所述多个数据任务产生的多组资源耗时和运行耗时;
串联模块,被配置为将所述外部准备耗时、所述多组资源耗时和运行耗时,按照所述任务依赖关系进行串联,得到耗时结果。
9.根据权利要求8所述的装置,其中,所述第二获取模块包括:
第一获取子模块,被配置为基于所述多个数据任务中预先注册的多个资源监听器,获取所述多个数据任务各自的资源就绪时间;
第二获取子模块,被配置为获取所述多个数据任务各自的依赖检查完成时间和结束时间;
第三获取子模块,被配置为基于所述资源就绪时间、所述依赖检查完成时间和所述结束时间,得到所述多组资源耗时和运行耗时。
10.根据权利要求9所述的装置,其中,所述第一获取子模块包括:
对于所述多个数据任务中的任意一个数据任务,执行以下资源就绪时间确定单元:
生成单元,被配置为响应于开始执行数据任务中的计算算子并检测到新增执行器,生成申请事件;
发送单元,被配置为将所述申请事件发送到所述资源监听器中;
监听单元,被配置为通过所述资源监听器对累计申请的执行器数量进行监听;
记录单元,被配置为响应于监听到所述累计申请的执行器数量大于等于预设阈值,记录所述资源就绪时间。
11.根据权利要求10所述的装置,其中,所述第二获取子模块包括:
对于所述多个数据任务中的任意一个数据任务,执行以下依赖检查完成时间和结束时间确定单元:
第一执行单元,被配置为执行数据任务中的依赖检查算子,响应于所述依赖检查算子执行完毕,执行在所述数据任务中预先添加的第二回调算子,得到所述依赖检查完成时间;
第二执行单元,被配置为执行所述数据任务中的计算算子,响应于所述计算算子执行完毕,执行在所述数据任务中预先添加的第三回调算子,得到所述结束时间。
12.根据权利要求11所述的装置,其中,所述第三获取子模块包括:
对于所述多个数据任务中的任意一个数据任务,通过以下单元确定一组资源耗时和运行耗时:
第一确定单元,被配置为将所述数据任务的所述资源就绪时间与所述依赖检查完成时间的时间差,确定为所述数据任务的所述资源耗时;
第二确定单元,被配置为将所述数据任务的所述结束时间与所述资源就绪时间的时间差,确定为所述数据任务的所述运行耗时。
13.根据权利要求11-12任一项所述的装置,其中,所述第一获取模块包括:
确定子模块,被配置为基于所述任务依赖关系,确定所述同一任务链路上的首个数据任务;
第四获取子模块,被配置为响应于执行所述首个数据任务中的依赖检查算子之前,执行在所述首个数据任务中预先添加的第一回调算子,得到开始时间;
第五获取子模块,被配置为将所述首个数据任务的所述依赖检查完成时间与所述开始时间的时间差,确定为所述外部准备耗时。
14.根据权利要求13所述的装置,其中,所述串联模块包括:
第一串联子模块,被配置为将所述外部准备耗时作为串联首位;
第二串联子模块,被配置为按照所述任务依赖关系,将所述多组资源耗时和运行耗时依次串联在所述外部准备耗时之后,得到所述耗时结果。
15.一种电子设备,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1-7中任一项所述的方法。
16.一种存储有计算机指令的非瞬时计算机可读存储介质,其中,所述计算机指令用于使所述计算机执行根据权利要求1-7中任一项所述的方法。
17.一种计算机程序产品,包括计算机程序,所述计算机程序在被处理器执行时实现根据权利要求1-7中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210088270.7A CN114428712A (zh) | 2022-01-25 | 2022-01-25 | 耗时统计方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210088270.7A CN114428712A (zh) | 2022-01-25 | 2022-01-25 | 耗时统计方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114428712A true CN114428712A (zh) | 2022-05-03 |
Family
ID=81314015
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210088270.7A Pending CN114428712A (zh) | 2022-01-25 | 2022-01-25 | 耗时统计方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114428712A (zh) |
-
2022
- 2022-01-25 CN CN202210088270.7A patent/CN114428712A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113037594B (zh) | 基于云服务的压力测试方法和装置 | |
CN111563014A (zh) | 接口服务性能测试方法、装置、设备和存储介质 | |
CN112506619A (zh) | 作业处理方法、装置、电子设备、存储介质和程序产品 | |
CN112749013A (zh) | 线程负载的检测方法、装置、电子设备及存储介质 | |
CN113778644B (zh) | 任务的处理方法、装置、设备及存储介质 | |
CN113641544B (zh) | 用于检测应用状态的方法、装置、设备、介质和产品 | |
CN114389969A (zh) | 客户端的测试方法、装置、电子设备和存储介质 | |
CN116645082A (zh) | 一种系统巡检方法、装置、设备以及存储介质 | |
CN115687406A (zh) | 一种调用链数据的采样方法、装置、设备及存储介质 | |
CN115391204A (zh) | 自动驾驶服务的测试方法、装置、电子设备及存储介质 | |
CN115437961A (zh) | 数据处理方法、装置、电子设备及存储介质 | |
CN114428712A (zh) | 耗时统计方法及装置 | |
CN115576827A (zh) | 业务流程软件的性能测试方法、装置、设备及存储介质 | |
CN113590447B (zh) | 埋点处理方法和装置 | |
CN114546799A (zh) | 埋点日志校验方法、装置、电子设备、存储介质及产品 | |
CN112835759A (zh) | 测试数据处理方法、装置、电子设备以及存储介质 | |
CN114117289A (zh) | 浏览器运行数据的获取方法、装置及电子设备 | |
CN112925623A (zh) | 任务处理方法、装置、电子设备和介质 | |
CN113535020A (zh) | 用于生成应用图标的方法、装置、设备、介质和产品 | |
CN113225228B (zh) | 数据处理方法及装置 | |
CN117290113B (zh) | 一种任务处理方法、装置、系统和存储介质 | |
CN117539719A (zh) | 应用运行监测方法、装置、设备及介质 | |
CN114238149A (zh) | 账务系统的批量测试方法、电子设备及存储介质 | |
CN116760734A (zh) | 一种网络请求检测方法、装置、设备及介质 | |
CN115756993A (zh) | 系统运行检测方法、装置、电子设备和存储介质 |
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 |