本发明一般地涉及计算机领域。更具体地,本发明涉及统计模块中数据流吞吐的方法及可读存储介质。
背景技术:
处理器的性能监控包括计算完成指令执行所需要的平均每指令周期(cyclesperinstruction,cpi),而线程是现代处理器常用的独立调度和分派的基本单位。线程可以为操作系统内核调度的内核线程,或由用户进程自行调度的用户线程,或由内核与用户进程进行混合调度,应用十分广泛。
然而,如果无法测量线程的性能,便无法掌握其性能瓶颈并对其进行优化。因此,一种方便用户根据性能数据定位线程性能瓶颈,以进行优化的方案是迫切需要的。
技术实现要素:
为了至少部分地解决背景技术中提到的技术问题,本发明的方案提供了一种统计模块中数据流吞吐的方法及可读存储介质。
在一个方面中,本发明揭露一种统计模块中数据流平均吞吐的方法,所述模块具有多个线程。所述方法包括:获取每个线程中所述数据流的帧数;记录每个线程的运行时间;以及根据所述帧数及所述运行时间,计算每个线程的平均吞吐。
在另一个方面中,本发明揭露一种统计模块中数据流实时吞吐的方法,包括:设定运行时间;计数所述运行时间每个线程处理所述数据流的帧数;根据所述帧数及所述运行时间,计算每个线程的实时吞吐。
在另一个方面中,本发明揭露一种计算机可读存储介质,其上存储有统计模块中数据流吞吐的计算机程序代码,当所述计算机程序代码由处理装置运行时,执行前述的方法。
本发明通过统计模块的实时和平均性能,精确地计算每个线程的吞吐,有利于定位性能瓶颈。
附图说明
通过参考附图阅读下文的详细描述,本发明示例性实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本发明的若干实施方式,并且相同或对应的标号表示相同或对应的部分其中:
图1是示出本发明实施例的板卡的结构图;
图2是示出本发明实施例的集成电路装置的结构图;
图3是示出本发明实施例的单核计算装置的内部结构示意图;
图4是示出本发明实施例的多核计算装置的内部结构示意图;
图5是示出本发明实施例的处理器核的内部结构示意图;
图6是示出本发明实施例统计模块中数据流平均吞吐的流程图;
图7a是示出本发明实施例中一种计算单位运行时间的示意图;
图7b是示出本发明实施例中另一种计算单位运行时间的示意图;以及
图8是示出本发明实施例统计模块中数据流实时吞吐的流程图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
应当理解,本发明的权利要求、说明书及附图中的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序。本发明的说明书和权利要求书中使用的术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在此本发明说明书中所使用的术语仅仅是出于描述特定实施例的目的,而并不意在限定本发明。如在本发明说明书和权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。还应当进一步理解,在本发明说明书和权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
如在本说明书和权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。
下面结合附图来详细描述本发明的具体实施方式。
计算机的性能评估是本领域中的一项重要任务,获得计算机的性能统计数据后,才有可能识别性能瓶颈,再根据性能瓶颈改善计算机的效率。本发明所指的计算机可以是中央处理器(centralprocessingunit,cpu)、图形处理器(graphicsprocessingunit,gpu)或其他通用和/或专用处理器中的一种或多种类型的处理器,这些处理器包括但不限于数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现场可编程门阵列(field-programmablegatearray,fpga)、人工智能专用处理器等。
线程是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。
同一进程中的多条线程将共享该进程中的全部系统资源,如虚拟地址空间、文件描述符和信号处理等等。但同一进程中的多个线程有各自的调用栈、寄存器环境、线程本地存储。
一个进程的多个线程并行执行不同的任务。本发明的性能统计技术方案是根据数据流中每帧的时间戳,将数据流动到每个插件的时间戳信息记录到数据库中,再从数据库中读取这些数据来计算模块的性能。每个数据流都通过创建一个性能管理器来记录性能统计的相关数据。初始化性能管理器后,数据库文件便被创建。每一帧数据将会被记录下来,并保存到创建的数据库中。基于数据库中的数据,本发明得以计算模块的实时性能和平均性能。
本发明在评估模块的性能时,特别关注吞吐,吞吐是单位时间内通过该插件的帧数。在进行性能统计时,我们将计算所有帧的实时吞吐和平均吞吐。
本发明的一个实施例是统计模块中数据流吞吐的方法,此实施例应用在一种板卡上,图1示出此实施例的应用场景。板卡10包括芯片101,其是一种系统级芯片,或称片上系统,集成有一个或多个组合处理装置,组合处理装置是一种人工智能运算单元,用以支持各类深度学习和机器学习算法,满足计算机视觉、语音、自然语言处理、数据挖掘等领域复杂场景下的智能处理需求。特别是深度学习技术大量应用在云端智能领域,云端智能应用的一个显著特点是输入数据量大,对平台的存储能力和计算能力有很高的要求,此实施例的板卡10适用在云端智能应用,具有庞大的片外存储、片上存储和强大的计算能力。
芯片101通过对外接口装置102与外部设备103相连接。外部设备103例如是服务器、计算机、摄像头、显示器、鼠标、键盘、网卡或wifi接口等。待处理的数据可以由外部设备103通过对外接口装置102传递至芯片101。芯片101的计算结果可以经由对外接口装置102传送回外部设备103。根据不同的应用场景,对外接口装置102可以具有不同的接口形式,例如pcie接口等。
板卡10还包括用于存储数据的存储器件104,其包括一个或多个存储单元105。存储器件104通过总线与控制器件106和芯片101进行连接和数据传输。板卡10中的控制器件106配置用于对芯片101的状态进行调控。为此,在一个应用场景中,控制器件106可以包括单片机(microcontrollerunit,mcu)。
图2是示出此实施例的芯片101中的组合处理装置的结构图。如图2中所示,组合处理装置20包括计算装置201、接口装置202、处理装置203和dram204。
计算装置201配置成执行用户指定的操作,主要实现为单核智能处理器或者多核智能处理器,用以执行深度学习或机器学习的计算,其可以通过接口装置202与处理装置203进行交互,以共同完成用户指定的操作。
接口装置202用于在计算装置201与处理装置203间传输数据和控制指令。例如,计算装置201可以经由接口装置202从处理装置203中获取输入数据,写入计算装置201片上的存储装置。进一步,计算装置201可以经由接口装置202从处理装置203中获取控制指令,写入计算装置201片上的控制缓存中。替代地或可选地,接口装置202也可以读取计算装置201的存储装置中的数据并传输给处理装置203。
处理装置203作为通用的处理装置,执行包括但不限于数据搬运、对计算装置201的开启和/或停止等基本控制。根据实现方式的不同,处理装置203可以是中央处理器、图形处理器或其他通用和/或专用处理器中的一种或多种类型的处理器,这些处理器包括但不限于数字信号处理器、专用集成电路、现场可编程门阵列或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等,并且其数目可以根据实际需要来确定。如前所述,仅就本发明的计算装置201而言,其可以视为具有单核结构或者同构多核结构。然而,当将计算装置201和处理装置203整合共同考虑时,二者视为形成异构多核结构。
dram204用以存储待处理的数据,为ddr内存,大小通常为16g或更大,用于保存计算装置201和/或处理装置203的数据。
图3示出了计算装置201为单核的内部结构示意图。单核计算装置301用以处理计算机视觉、语音、自然语言、数据挖掘等输入数据,单核计算装置301包括三大模块:控制模块31、运算模块32及存储模块33。
控制模块31用以协调并控制运算模块32和存储模块33的工作,以完成深度学习的任务,其包括取指单元(instructionfetchunit,ifu)311及指令译码单元(instructiondecodeunit,idu)312。取指单元311用以获取来自处理装置203的指令,指令译码单元312则将获取的指令进行译码,并将译码结果作为控制信息发送给运算模块32和存储模块33。
运算模块32包括向量运算单元321及矩阵运算单元322。向量运算单元321用以执行向量运算,可支持向量乘、加、非线性变换等复杂运算;矩阵运算单元322负责深度学习算法的核心计算,即矩阵乘及卷积。
存储模块33用来存储或搬运相关数据,包括神经元存储单元(neuronram,nram)331、权值存储单元(weightram,wram)332、直接内存访问模块(directmemoryaccess,dma)333。nram331用以存储输入神经元、输出神经元和计算后的中间结果;wram332则用以存储深度学习网络的卷积核,即权值;dma333通过总线34连接dram204,负责单核计算装置301与dram204间的数据搬运。
图4示出了计算装置201为多核的内部结构示意图。多核计算装置41采用分层结构设计,多核计算装置41作为一个片上系统,其包括至少一个集群(cluster),每个集群又包括多个处理器核,换言之,多核计算装置41是以片上系统-集群-处理器核的层次所构成的。
以片上系统的层级来看,如图4所示,多核计算装置41包括外部存储控制器401、外设通信模块402、片上互联模块403、同步模块404以及多个集群405。
外部存储控制器401可以有多个,在图中示例性地展示2个,其用以响应处理器核发出的访问请求,访问外部存储设备,例如图2中的dram204,从而自片外读取数据或是将数据写入。外设通信模块402用以通过接口装置202接收来自处理装置203的控制信号,启动计算装置201执行任务。片上互联模块403将外部存储控制器401、外设通信模块402及多个集群405连接起来,用以在各个模块间传输数据和控制信号。同步模块404是一种全局同步屏障控制器(globalbarriercontroller,gbc),用以协调各集群的工作进度,确保信息的同步。多个集群405是多核计算装置41的计算核心,在图中示例性地展示4个,随着硬件的发展,本发明的多核计算装置41还可以包括8个、16个、64个、甚至更多的集群405。集群405用以高效地执行深度学习算法。
以集群的层级来看,如图4所示,每个集群405包括多个处理器核(ipucore)406及一个存储核(memcore)407。
处理器核406在图中示例性地展示4个,本发明不限制处理器核406的数量。其内部架构如图5所示。每个处理器核406类似于图3的单核计算装置301,同样包括三大模块:控制模块51、运算模块52及存储模块53。控制模块51、运算模块52及存储模块53的功用及结构大致与控制模块31、运算模块32及存储模块33相同,不再赘述。需特别说明的是,存储模块53包括输入/输出直接内存访问模块(input/outputdirectmemoryaccess,iodma)533、搬运直接内存访问模块(movedirectmemoryaccess,mvdma)534。iodma533通过广播总线409控制nram531/wram532与dram204的访存;mvdma534则用以控制nram531/wram532与存储单元(sram)408的访存。
回到图4,存储核407主要用以存储和通信,即存储处理器核406间的共享数据或中间结果、以及执行集群405与dram204之间的通信、集群405间彼此的通信、处理器核406间彼此的通信等。在其他实施例中,存储核407具有标量运算的能力,用以执行标量运算。
存储核407包括sram408、广播总线409、集群直接内存访问模块(clusterdirectmemoryaccess,cdma)410及全局直接内存访问模块(globaldirectmemoryaccess,gdma)411。sram408承担高性能数据中转站的角色,在同一个集群405内不同处理器核406之间所复用的数据不需要通过处理器核406各自向dram204获得,而是经sram408在处理器核406间中转,存储核407只需要将复用的数据从sram408迅速分发给多个处理器核406即可,以提高核间通讯效率,亦大大减少片上片外的输入/输出访问。
广播总线409、cdma410及gdma411则分别用来执行处理器核406间的通信、集群405间的通信和集群405与dram204的数据传输。以下将分别说明。
广播总线409用以完成集群405内各处理器核406间的高速通信,此实施例的广播总线409支持核间通信方式包括单播、多播与广播。单播是指点对点(例如单一处理器核至单一处理器核)的数据传输,多播是将一份数据从sram408传输到特定几个处理器核406的通信方式,而广播则是将一份数据从sram408传输到所有处理器核406的通信方式,属于多播的一种特例。
cdma410用以控制在同一个计算装置201内不同集群405间的sram408的访存。
gdma411与外部存储控制器401协同,用以控制集群405的sram408到dram204的访存,或是将数据自dram204读取至sram408中。从前述可知,dram204与nram531或wram532间的通信可以经由2个渠道来实现。第一个渠道是通过iodam433直接联系dram204与nram531或wram532;第二个渠道是先经由gdma411使得数据在dram204与sram408间传输,再经过mvdma534使得数据在sram408与nram531或wram532间传输。虽然表面上看来第二个渠道需要更多的元件参与,数据流较长,但实际上在部分实施例中,第二个渠道的带宽远大于第一个渠道,因此dram204与nram531或wram532间的通信通过第二个渠道可能更有效率。本发明的实施例可根据本身硬件条件选择数据传输渠道。
数据流是指由持续生成的大量且类型相同的数据集合,可以是音视频数据流,此实施例包括一种统计模块中数据流平均吞吐的方法,用来统计模块的物理执行时间内,平均每秒处理完成多少帧数据。由于模块是并行在处理,故此实施例将统计模块每个并行度(可以理解为每个线程)的平均吞吐和模块的总吞吐。此处的模块指的是任何可以执行进程(并行线程)的装置或单元,例如芯片101、处理装置203、单核计算装置301、多核计算装置41、集群405等等。图6示出统计模块中数据流平均吞吐的流程图。
在步骤601中,获取每个线程中数据流的帧数。
在步骤602中,记录每个线程的运行时间。首先,在每个线程的起始点置入起始时间戳,并在每个线程的结束点置入结束时间戳。起始时间戳和结束时间戳可以是同一种时间戳指令,当处理器核406接收到时间戳指令时,便记录下当下时间,并计算前后两个时间戳的时间差值,也就是将结束时间戳的时间减去起始时间戳的时间,便能获得该线程的运行时间。
在步骤603中,根据帧数及运行时间,计算每个线程的平均吞吐。根据定义,吞吐为线程的帧数除以其运行时间,基于在步骤601中所获得的帧数,以及在步骤602中多获得的运行时间,每个线程的平均吞吐可以通过以下公式计算而得:
在步骤604中,计算单位运行时间,所述单位运行时间为每帧的运行时间。计算单位运行时间的目的在于让下一个步骤能够加总得到平均总吞吐,然而,线程是可以并发的,直接将每个线程中各帧数据的运行时间相加可能会重复计算部分运行时间。图7a示出模块的一种进程示意图。此进程包括5个帧数据:第一帧数据701、第二帧数据702、第三帧数据703、第四帧数据704、第五帧数据705,图中“si”与“ei”分别表示第i帧数据的起始时间和结束时间,例如s1与e1分别表示第一帧数据的起始时间和结束时间。
从图中可以清楚看出,第三帧数据703与第四帧数据704的运行时间部分重叠,第四帧数据704与第五帧数据705的运行时间亦部分重叠,如果直接将每帧数据的运行时间相加,也就是(e1-s1) (e2-s2) (e3-s3) (e4-s4) (e5-s5),则两时间段(e3-s4)与(e4-s5)将重复计算,此步骤需要避免重复计算。
首先,判断每帧数据的起始时间是否早于前一帧数据的结束时间。如是,起始时间早于前一帧数据的结束时间的该帧数据的单位运行时间为该帧数据的结束时间减去前一帧数据的结束时间。以第四帧数据704为例,其起始时间s4早于第三帧数据的结束时间e3,因此第四帧数据704的单位运行时间为第四帧数据704的结束时间e4减去第三帧数据703的结束时间e3,也就是t4;同理,第五帧数据705的单位运行时间为第五帧数据705的结束时间e5减去第四帧数据704的结束时间e4,也就是t5。如果帧数据的起始时间不早于前一帧数据的结束时间,该帧数据的单位运行时间为该帧数据的结束时间减去该帧数据的起始时间,例如第一帧数据701、第二帧数据702、第三帧数据703的单位运行时间分别为t1、t2及t3。
另一种单位运行时间的计算方式如图7b所示。先判断每帧数据的结束时间是否晚于下一帧数据的起始时间。如是,结束时间晚于下一帧数据的起始时间的该帧数据的单位运行时间为下一帧数据的起始时间减去该帧数据的起始时间。以第三帧数据703为例,其结束时间e3晚于第四帧数据704的起始时间s4,第三帧数据703的单位运行时间为第四帧数据704的起始时间s4减去第三帧数据703的起始时间s3,也就是t3;同理,第四帧数据704的单位运行时间为第五帧数据705的起始时间s5减去第四帧数据704的起始时间s4,也就是t4。如果帧数据的结束时间不晚于下一帧数据的起始时间,该帧数据的单位运行时间为该帧数据的结束时间减去该帧数据的起始时间,例如第一帧数据701、第二帧数据702、第五帧数据705的单位运行时间分别为t1、t2及t5。
在步骤605中,加总所有单位运行时间,以获得所述模块的平均总吞吐。以图7a与图7b为例,平均总吞吐为t1 t2 t3 t4 t5。
基于前述流程,在进行大量的测量后,便可以得到每个线程的平均吞吐和所有线程的平均总吞吐的大数据,据此进行统计整理,便能作为模块性能管理的参考指标之一。
此实施例亦可统计多个模块中数据流实时吞吐。实时吞吐体现的是程序实时性能。此实施例将最近一段时间内的吞吐作为实时吞吐。图8示出统计多个模块中数据流实时吞吐的流程图。
在步骤801中,设定运行时间。在此步骤中,需设定每次量测的间隔时间,在此实施例中设定每2秒记录一次,即运行时间为2秒。
在步骤802中,计数运行时间每个线程处理数据流的帧数。在最近一次运行时间间内,计数每个线程处理了多少帧数据。
在步骤803中,根据帧数及运行时间,计算每个线程的实时吞吐。每个数据流的实时吞吐可以通过以下公式计算而得:
在步骤804中,计算单位运行时间,所述单位运行时间为每帧的运行时间。如图7a与图7b所示,此实施例可以利用这两种方式获得单位运行时间。
第一种单位运行时间的计算方式如图7a所示。判断每帧数据的起始时间是否早于前一帧数据的结束时间。如是,起始时间早于前一帧数据的结束时间的该帧数据的单位运行时间为该帧数据的结束时间减去前一帧数据的结束时间。如果帧数据的起始时间不早于前一帧数据的结束时间,该帧数据的单位运行时间为该帧数据的结束时间减去该帧数据的起始时间。
另一种单位运行时间的计算方式如图7b所示。先判断每帧数据的结束时间是否晚于下一帧数据的起始时间。如是,结束时间晚于下一帧数据的起始时间的该帧数据的单位运行时间为下一帧数据的起始时间减去该帧数据的起始时间。如果帧数据的结束时间不晚于下一帧数据的起始时间,该帧数据的单位运行时间为该帧数据的结束时间减去该帧数据的起始时间。
在步骤805中,加总所有单位运行时间,以获得所述模块的实时总吞吐。以图7a与图7b为例,平均总吞吐为t1 t2 t3 t4 t5。
基于图8的流程,在进行大量的测量后,便可以得到模块中每个数据流的实时吞吐和所有数据流的实时总吞吐的大数据,据此进行统计整理,便能作为模块性能管理的参考指标之一。
本发明另一个实施例为一种计算机可读存储介质,其上存储有统计模块中数据流吞吐的计算机程序代码,当所述计算机程序代码由处理器运行时,执行如前所述各实施例的方法。在一些实现场景中,上述集成的单元可以采用软件程序模块的形式来实现。如果以软件程序模块的形式实现并作为独立的产品销售或使用时,所述集成的单元可以存储在计算机可读取存储器中。基于此,当本发明的方案以软件产品(例如计算机可读存储介质)的形式体现时,该软件产品可以存储在存储器中,其可以包括若干指令用以使得计算机设备(例如个人计算机、服务器或者网络设备等)执行本发明实施例所述方法的部分或全部步骤。前述的存储器可以包括但不限于u盘、闪存盘、只读存储器(readonlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
本发明通过计算模块的实时和平均性能,精确地获得每个数据流与总数据流的吞吐,有效地统计模块性能,作为性能调试的参考依据。
根据不同的应用场景,本发明的电子设备或装置可以包括服务器、云端服务器、服务器集群、数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、pc设备、物联网终端、移动终端、手机、行车记录仪、导航仪、传感器、摄像头、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、视觉终端、自动驾驶终端、交通工具、家用电器、和/或医疗设备。所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、b超仪和/或心电图仪。本发明的电子设备或装置还可以被应用于互联网、物联网、数据中心、能源、交通、公共管理、制造、教育、电网、电信、金融、零售、工地、医疗等领域。进一步,本发明的电子设备或装置还可以用于云端、边缘端、终端等与人工智能、大数据和/或云计算相关的应用场景中。在一个或多个实施例中,根据本发明方案的算力高的电子设备或装置可以应用于云端设备(例如云端服务器),而功耗小的电子设备或装置可以应用于终端设备和/或边缘端设备(例如智能手机或摄像头)。在一个或多个实施例中,云端设备的硬件信息和终端设备和/或边缘端设备的硬件信息相互兼容,从而可以根据终端设备和/或边缘端设备的硬件信息,从云端设备的硬件资源中匹配出合适的硬件资源来模拟终端设备和/或边缘端设备的硬件资源,以便完成端云一体或云边端一体的统一管理、调度和协同工作。
需要说明的是,为了简明的目的,本发明将一些方法及其实施例表述为一系列的动作及其组合,但是本领域技术人员可以理解本发明的方案并不受所描述的动作的顺序限制。因此,依据本发明的公开或教导,本领域技术人员可以理解其中的某些步骤可以采用其他顺序来执行或者同时执行。进一步,本领域技术人员可以理解本发明所描述的实施例可以视为可选实施例,即其中所涉及的动作或模块对于本发明某个或某些方案的实现并不一定是必需的。另外,根据方案的不同,本发明对一些实施例的描述也各有侧重。鉴于此,本领域技术人员可以理解本发明某个实施例中没有详述的部分,也可以参见其他实施例的相关描述。
在具体实现方面,基于本发明的公开和教导,本领域技术人员可以理解本发明所公开的若干实施例也可以通过本文未公开的其他方式来实现。例如,就前文所述的电子设备或装置实施例中的各个单元来说,本文在考虑了逻辑功能的基础上对其进行拆分,而实际实现时也可以有另外的拆分方式。又例如,可以将多个单元或组件结合或者集成到另一个系统,或者对单元或组件中的一些特征或功能进行选择性地禁用。就不同单元或组件之间的连接关系而言,前文结合附图所讨论的连接可以是单元或组件之间的直接或间接耦合。在一些场景中,前述的直接或间接耦合涉及利用接口的通信连接,其中通信接口可以支持电性、光学、声学、磁性或其它形式的信号传输。
在本发明中,作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元示出的部件可以是或者也可以不是物理单元。前述部件或单元可以位于同一位置或者分布到多个网络单元上。另外,根据实际的需要,可以选择其中的部分或者全部单元来实现本发明实施例所述方案的目的。另外,在一些场景中,本发明实施例中的多个单元可以集成于一个单元中或者各个单元物理上单独存在。
在另外一些实现场景中,上述集成的单元也可以采用硬件的形式实现,即为具体的硬件电路,其可以包括数字电路和/或模拟电路等。电路的硬件结构的物理实现可以包括但不限于物理器件,而物理器件可以包括但不限于晶体管或忆阻器等器件。鉴于此,本文所述的各类装置(例如计算装置或其他处理装置)可以通过适当的硬件处理器来实现,例如中央处理器、gpu、fpga、dsp和asic等。进一步,前述的所述存储单元或存储装置可以是任意适当的存储介质(包括磁存储介质或磁光存储介质等),其例如可以是可变电阻式存储器(resistiverandomaccessmemory,rram)、动态随机存取存储器(dynamicrandomaccessmemory,dram)、静态随机存取存储器(staticrandomaccessmemory,sram)、增强动态随机存取存储器(enhanceddynamicrandomaccessmemory,edram)、高带宽存储器(highbandwidthmemory,hbm)、混合存储器立方体(hybridmemorycube,hmc)、rom和ram等。
以上对本发明实施例进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
1.一种统计模块中数据流平均吞吐的方法,所述模块具有多个线程,所述方法包括:
获取每个线程中所述数据流的帧数;
记录每个线程的运行时间;以及
根据所述帧数及所述运行时间,计算每个线程的平均吞吐。
2.根据权利要求1所述的方法,其中所述平均吞吐为所述帧数除以所述运行时间。
3.根据权利要求1所述的方法,还包括:
计算单位运行时间,所述单位运行时间为每帧的运行时间;以及
加总所有单位运行时间,以获得所述模块的平均总吞吐。
4.根据权利要求3所述的方法,其中所述计算单位运行时间的步骤包括:
判断每帧数据的起始时间是否早于前一帧数据的结束时间;
如是,所述单位运行时间为所述帧数据的结束时间减去所述前一帧数据的结束时间;以及
如否,所述单位运行时间为所述帧数据的结束时间减去所述帧数据的起始时间。
5.根据权利要求3所述的方法,其中所述计算单位运行时间的步骤包括:
判断每帧数据的结束时间是否晚于下一帧数据的起始时间;
如是,所述单位运行时间为所述下一帧数据的起始时间减去所述帧数据的起始时间;以及
如否,所述单位运行时间为所述帧数据的结束时间减去所述帧数据的起始时间。
6.根据权利要求1-5任1项所述的方法,其中所述记录步骤包括:
在每个线程的起始点置入起始时间戳;
在每个线程的结束点置入结束时间戳;以及
计算所述起始时间戳及所述结束时间戳的差值,以获得所述运行时间。
7.根据权利要求1所述的方法,其中所述数据流为音视频数据。
8.一种统计模块中数据流实时吞吐的方法,包括:
设定运行时间;
计数所述运行时间每个线程处理所述数据流的帧数;
根据所述帧数及所述运行时间,计算每个线程的实时吞吐。
9.根据权利要求8所述的方法,其中所述实时吞吐为所述帧数除以所述运行时间。
10.根据权利要求8所述的方法,还包括:
计算单位运行时间,所述单位运行时间为每帧的运行时间;以及
加总所有单位运行时间,以获得所述模块的实时总吞吐。
11.根据权利要求10所述的方法,其中所述计算单位运行时间的步骤包括:
判断每帧数据的起始时间是否早于前一帧数据的结束时间;
如是,所述单位运行时间为所述帧数据的结束时间减去所述前一帧数据的结束时间;以及
如否,所述单位运行时间为所述帧数据的结束时间减去所述帧数据的起始时间。
12.根据权利要求10所述的方法,其中所述计算单位运行时间的步骤包括:
判断每帧数据的结束时间是否晚于下一帧数据的起始时间;
如是,所述单位运行时间为所述下一帧数据的起始时间减去所述帧数据的起始时间;以及
如否,所述单位运行时间为所述帧数据的结束时间减去所述帧数据的起始时间。
13.根据权利要求8-12任一项所述的方法,其中所述计算步骤于间隔特定时间执行一次。
14.根据权利要求8所述的方法,其中所述数据流为音视频数据。
15.一种计算机可读存储介质,其上存储有统计模块中数据流吞吐的计算机程序代码,当所述计算机程序代码由处理装置运行时,执行权利要求1至14任一项所述的方法。
技术总结