CN101620562B - 一种嵌入式系统性能的评估方法及系统 - Google Patents
一种嵌入式系统性能的评估方法及系统 Download PDFInfo
- Publication number
- CN101620562B CN101620562B CN200910090828XA CN200910090828A CN101620562B CN 101620562 B CN101620562 B CN 101620562B CN 200910090828X A CN200910090828X A CN 200910090828XA CN 200910090828 A CN200910090828 A CN 200910090828A CN 101620562 B CN101620562 B CN 101620562B
- Authority
- CN
- China
- Prior art keywords
- function
- time
- current
- recording
- real
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 329
- 238000011156 evaluation Methods 0.000 claims description 44
- 238000012905 input function Methods 0.000 claims description 3
- 230000004807 localization Effects 0.000 claims 1
- 238000010586 diagram Methods 0.000 description 7
- 230000002159 abnormal effect Effects 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 238000005070 sampling Methods 0.000 description 2
- FFBHFFJDDLITSX-UHFFFAOYSA-N benzyl N-[2-hydroxy-4-(3-oxomorpholin-4-yl)phenyl]carbamate Chemical compound OC1=C(NC(=O)OCC2=CC=CC=C2)C=CC(=C1)N1CCOCC1=O FFBHFFJDDLITSX-UHFFFAOYSA-N 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000000691 measurement method Methods 0.000 description 1
- 238000007619 statistical method Methods 0.000 description 1
- 239000011800 void material Substances 0.000 description 1
Images
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种嵌入式系统性能的评估方法,该方法包括:对函数的时间信息、和相对应的函数的状态信息进行实时的连续采集;通过对采集结果统计的方式,实现嵌入式系统的性能评估。本发明还公开了一种嵌入式系统性能的评估系统,该系统中:采集单元,用于对函数的时间信息、和相对应的函数的状态信息进行实时的连续采集;将采集结果发送给统计单元;统计单元,用于对所述采集结果进行统计;将统计结果发送给评估单元;评估单元,用于根据统计结果实现嵌入式系统的性能评估。采用本发明的方法及系统,能精确地对嵌入式系统性能进行评估。
Description
技术领域
本发明涉及嵌入式系统领域,尤其涉及一种嵌入式系统性能的评估方法及系统。
背景技术
现有的嵌入式系统中,系统运行时的处理器(CPU)占用率是衡量系统性能的重要指标,通常的测量方法是在系统运行时启动一个最低优先级的空闲任务,通过统计在一段时间内空闲任务运行的时间片,再用总的运行时间减去空闲任务的运行时间片后,得到系统中所有其他进程的运行的时间,用这种方法可以计算出嵌入式系统运行时的CPU占用率。例如中国专利公开号为CN02157690,发明名称为“一种在多任务实时操作系统中检测CPU占用率的方法”即为统计CPU占用率的常见方法,具体为:通过在进程切换时加入钩子函数统计各进程的运行时间片。它是以进程为基本统计单位,从总体衡量各个进程的运行时间,目的在于监控进程的运行时间片、监测进程死循环等异常情况。然而,在系统的实时运行过程中,仅通过统计进程的占用率计算CPU占用率以达到评估嵌入式系统性能,比如系统的实时运行状态是远远不够的,需要比进程更细粒度的评估指标,从而引入了以函数为基本统计单位的评估指标,具体来说,通过统计各函数的运行时间和运行情况,可以统计出函数的占用率,并分析出函数间的调用关系和代码的关键路径,从而对调用次数频繁的函数进行代码优化,最终降低CPU的占用率,以提高系统性能。以下对现有的一种通过统计各函数的运行时间和运行情况达到评估嵌入式系统性能的方案进行阐述。
中国专利公开号为CN200810142490.3,发明名称为“一种CPU占用率测量方法及装置”,具体为:通过使用定时中断采样程序计数器,并解析当前程序计数器对应的函数名称,来达到统计各函数的运行时间和运行情况的目的,然而由于定时器中断的限制,该方案并不能精确统计各函数的运行时间和运行情况,由于该方案统计的是由离散的多个运行瞬间的采样得到的结果,在两次定时器中断之间运行并退出的函数则无法统计到,因此,无法精确地对嵌入式系统性能进行评估,目前迫切需要一种能精确地对嵌入式系统性能进行评估的实现方案。
发明内容
有鉴于此,本发明的主要目的在于提供一种嵌入式系统性能的评估方法及系统,能精确地对嵌入式系统性能进行评估。
为达到上述目的,本发明的技术方案是这样实现的:
一种嵌入式系统性能的评估方法,该方法包括:根据设置在各函数入口的入记录标识、设置在各函数出口的出记录标识、进程重新切换入的切换入记录标识、进程切换出的切换出记录标识中的至少一种标识对函数的时间信息、和相对应的函数的状态信息进行实时记录,对实时记录的函数的时间信息、和相对应的函数的状态信息进行实时的连续采集;根据所述采集结果,统计出嵌入式系统的当前进程中,各个函数的运行时间和各个函数的运行状态并确定为评估参数;根据所述评估参数实现嵌入式系统实时运行状态的性能评估。
其中,将各个函数的运行时间和各个函数的运行状态进一步确定为故障定位指示参数;根据所述故障定位指示参数实现嵌入式系统的故障定位。
其中,进行所述采集之前还包括:以进程为单位分配记录区,并建立进程号与记录区的对应关系,在所述记录区实时记录当前进程调用函数的运行情况;其中,
所述记录区包括:所述函数的时间信息和所述函数的状态信息。
其中,所述入记录标识具体为入桩函数;所述出记录标识具体为出桩函数;所述切换入记录标识和切换出记录标识具体采用进程切换钩子函数的形式;
当捕获到所述入桩函数时,所述实时记录之前还包括:根据当前调用所述入桩函数的进程所在的进程号和建立的对应关系,查询到与所述进程号相对应的记录区;所述实时记录进一步为:将读取的当前时间戳确定为所述函数的时间信息并写入记录区;同时,将当前函数进入被调用状态确定为所述函数的状态信息并写入记录区;或者,
当捕获到所述出桩函数时,所述实时记录之前还包括:根据当前调用所述出桩函数的进程所在的进程号和建立的对应关系,查询到与所述进程号相对应的记录区;所述实时记录进一步为:将读取的当前时间戳确定为所述函数的时间信息并写入记录区;同时,将当前函数退出被调用状态确定为所述函数的状态信息并写入记录区;或者,
当捕获到进程切换钩子函数形式的所述切换入记录标识时,所述实时记录之前还包括:根据当前切换入进程所在的进程号和建立的对应关系,查询到与所述进程号相对应的记录区;所述实时记录进一步为:将读取的当前时间戳确定为所述函数的时间信息并写入记录区;同时,将表征当前进程进入切换入状态的进程切换钩子函数,确定为所述函数的状态信息并写入记录区;或者,
当捕获到进程切换钩子函数形式的所述切换出记录标识时,所述实时记录之前还包括:根据当前切换出进程所在的进程号和建立的对应关系,查询到与所述进程号相对应的记录区;所述实时记录进一步为:将读取的当前时间戳确定为所述函数的时间信息并写入记录区;同时,将表征当前进程进入切换出状态的进程切换钩子函数,确定为所述函数的状态信息并写入记录区。
其中,所述当前时间戳采取绝对时间的格式时,通过读取处理器的计数器或硬件实现的计数器获得;或者,
所述当前时间戳采取相对时间的格式时,以标识形式存在;其中,将从实时时钟或软件系统时钟获取的系统时间添加为所述标识。
其中,在进行所述实时记录时,进一步根据对各个进程分别设置的记录开关、或对所有进程设置的总记录开关的开/关状态,对记录的范围进行控制;
和/或根据对各个函数设置的函数嵌套层次范围,对记录的范围进行控制。
其中,所述采集具体为:采集通过入桩函数所实时记录的当前函数的时间信息、和通过出桩函数所实时记录的当前函数的时间信息;
所述统计函数的运行时间具体为:根据出桩函数所实时记录的当前函数的时间信息,与入桩函数所实时记录的当前函数的时间信息之间的时间差值,统计出当前函数的运行时间;
或者,所述采集具体为:采集通过入桩函数所实时记录的当前函数的时间信息、和通过出桩函数所实时记录的当前函数的时间信息;以及采集表征当前进程进入切换入状态的进程切换钩子函数所实时记录的当前函数的时间信息、和表征当前进程进入切换出状态的进程切换钩子函数所实时记录的当前函数的时间信息;
所述统计函数的运行时间具体为:根据出桩函数所实时记录的当前函数的时间信息,与入桩函数所实时记录的当前函数的时间信息之间的时间差值,获得第一时间差值;根据表征当前进程进入切换入状态的进程切换钩子函数所实时记录的当前函数的时间信息、与表征当前进程进入切换出状态的进程切换钩子函数所实时记录的当前函数的时间信息之间的时间差值,获得第二时间差值;根据所述第一时间差值与所述第二时间差值之间的差值,统计出当前函数的运行时间。
其中,该方法进一步包括:统计函数占用率,具体为:根据多个进程中所述当前函数的运行时间的总和,统计出当前函数在多个进程中的总运行时间;根据当前进程的所述当前函数的运行时间与所述总运行时间的比值,统计出当前进程中的当前函数在多个进程中所占的函数占用率。
其中,所述采集具体为:采集通过入桩函数所实时记录的当前函数的时间信息、和当前函数的状态信息;以及采集通过出桩函数所实时记录的当前函数的时间信息、和当前函数的状态信息;
所述统计函数的运行状态具体为:根据所述出桩函数所实时记录的当前函数的时间信息,与所述入桩函数所实时记录的当前函数的时间信息之间的时间差值,统计出当前函数的运行时间;结合所述当前函数的运行时间、所述入桩 函数所实时记录的当前函数的状态信息、和所述出桩函数所实时记录的当前函数的状态信息,统计出在当前函数的运行时间内当前函数的运行状态。
一种嵌入式系统性能的评估系统,该系统包括:采集单元、统计单元、和评估单元;其中,
采集单元,用于根据设置在各函数入口的入记录标识、设置在各函数出口的出记录标识、进程重新切换入的切换入记录标识、进程切换出的切换出记录标识中的至少一种标识对函数的时间信息、和相对应的函数的状态信息进行实时记录,对实时记录的函数的时间信息、和相对应的函数的状态信息进行实时的连续采集;将采集结果发送给所述统计单元;
统计单元,用于对所述采集结果进行统计,统计出嵌入式系统的当前进程中,各个函数的运行时间和各个函数的运行状态并确定为评估参数;将评估参数发送给所述评估单元;
评估单元,用于根据所述评估参数实现嵌入式系统实时运行状态的性能评估。
其中,所述统计单元,进一步用于根据所述采集结果,统计出所述嵌入式系统的当前进程中,各个函数的运行时间和各个函数的运行状态;
所述评估单元,进一步用于将收到的各个函数的运行时间和各个函数的运行状态确定为评估参数;根据所述评估参数实现嵌入式系统实时运行状态的性能评估。
其中,该系统还包括:故障定位单元,用于将收到的各个函数的运行时间和各个函数的运行状态确定为故障定位指示参数;根据所述故障定位指示参数实现嵌入式系统的故障定位。
其中,该系统还包括:记录区分配及关系建立单元,用于以进程为单位分配记录区,并建立进程号与记录区的对应关系;其中,所述记录区包括:所述函数的时间信息和所述函数的状态信息。
其中,所述入记录标识具体为入桩函数;所述出记录标识具体为出桩函数;所述切换入记录标识和切换出记录标识具体采用进程切换钩子函数的形式;该 系统还包括查询单元;其中,
捕获到所述入桩函数的情况下,所述查询单元,用于根据当前调用所述入桩函数的进程所在的进程号和建立的对应关系,查询到与所述进程号相对应的记录区;所述实时记录单元,进一步用于将读取的当前时间戳确定为所述函数的时间信息并写入记录区;同时,将当前函数进入被调用状态确定为所述函数的状态信息并写入记录区;或者,
捕获到所述出桩函数的情况下,所述查询单元,用于根据当前调用所述出桩函数的进程所在的进程号和建立的对应关系,查询到与所述进程号相对应的记录区;所述实时记录单元,进一步用于将读取的当前时间戳确定为所述函数的时间信息并写入记录区;同时,将当前函数退出被调用状态确定为所述函数的状态信息并写入记录区;或者,
捕获到进程切换钩子函数形式的所述切换入记录标识的情况下,所述查询单元,用于根据当前切换入进程所在的进程号和建立的对应关系,查询到与所述进程号相对应的记录区;所述实时记录单元,进一步用于将读取的当前时间戳确定为所述函数的时间信息并写入记录区;同时,将表征当前进程进入切换入状态的进程切换钩子函数,确定为所述函数的状态信息并写入记录区;或者,
捕获到进程切换钩子函数形式的所述切换出记录标识的情况下,所述查询单元,用于根据当前切换出进程所在的进程号和建立的对应关系,查询到与所述进程号相对应的记录区;所述实时记录单元,进一步用于将读取的当前时间戳确定为所述函数的时间信息并写入记录区;同时,将表征当前进程进入切换出状态的进程切换钩子函数,确定为所述函数的状态信息并写入记录区。
本发明对函数的时间信息、和相对应的函数的状态信息进行实时的连续采集;通过对采集结果统计的方式,实现嵌入式系统的性能评估。
由于本发明是对函数的时间信息、和相对应的函数的状态信息进行实时的连续采集后所进行的统计,因此,可以统计到各个函数在连续时间点的函数状态;而现有技术是由离散的多个运行瞬间的采样得到的结果,无法统计到在两次定时器中断之间运行并退出的函数,因此,采用本发明的统计结果实现嵌入式系统的性能评估,其精确度比现有技术高的多。
附图说明
图1为本发明方法的实现流程示意图;
图2为本发明实例1的进程号对应记录区的示意图;
图3为本发明实例2的函数运行时间的一个记录区示意图;
图4为本发明实例3的函数运行时间的一个记录区示意图;
图5为本发明实例4的函数运行时间的一个记录区示意图;
图6为本发明实例4的函数运行时间的另一个记录区示意图。
具体实施方式
本发明的基本思想是:对函数的时间信息、和相对应的函数的状态信息进行实时的连续采集;通过对采集结果统计的方式,实现嵌入式系统的性能评估。
下面结合附图对技术方案的实施作进一步的详细描述。
如图1所示,一种嵌入式系统性能的评估方法,该方法包括以下步骤:
步骤101、对函数的时间信息、和相对应的函数的状态信息进行实时的连续采集。
步骤102、通过对采集结果统计的方式,实现嵌入式系统的性能评估。
针对步骤101~步骤102所构成的技术方案而言,步骤102中,统计的处理过程具体为:根据采集结果,统计出嵌入式系统的当前进程中,各个函数的运行时间和各个函数的运行状态。
实现嵌入式系统的性能评估的处理过程具体为:将各个函数的运行时间和各个函数的运行状态确定为评估参数;根据评估参数实现嵌入式系统实时运行状态的性能评估。
这里,还可以进一步地将各个函数的运行时间和各个函数的运行状态确定 为故障定位指示参数;根据故障定位指示参数实现嵌入式系统的故障定位。
这里,步骤101中,进行采集之前还包括:以进程为单位分配记录区,并建立进程号与记录区的对应关系;在记录区实时记录当前进程调用函数的运行情况。其中,记录区包括:函数的时间信息和函数的状态信息。所述运行情况正是通过函数的时间信息和函数的状态信息这两方面信息来确定的。
针对实时记录而言,实时记录具体包括:根据设置在各函数入口的入记录标识、设置在各函数出口的出记录标识、进程重新切换入的切换入记录标识、进程切换出的切换出记录标识中的至少一种标识,来进行实时记录。
其中,入记录标识具体为入桩函数;出记录标识具体为出桩函数;切换入记录标识和切换出记录标识具体采用进程切换钩子函数的形式。这里,采用进程切换钩子函数形式的切换入记录标识时,此时的进程切换钩子函数实际上具体为:表征当前进程进入切换入状态的进程切换钩子函数;采用进程切换钩子函数形式的切换出记录标识时,此时的进程切换钩子函数实际上具体为:表征当前进程进入切换出状态的进程切换钩子函数。
由于记录函数的时间信息和对应的函数的状态信息,所采用的具体记录标识,即:入桩函数、出桩函数、进程切换钩子函数形式的切换入记录标识、进程切换钩子函数形式的切换出记录标识有所不同,因此,之前分配记录区、建立对应关系及查询记录区记录,和最终得到的实时记录情况也有所不同,以下分四种情况分别阐述。
第一种情况:当捕获到入桩函数时的情况,此时入桩函数被当前进程调用。
当捕获到入桩函数时,实时记录之前还包括:分配记录区、建立对应关系及查询记录区记录的过程,具体为:根据当前调用入桩函数的进程所在的进程号和建立的对应关系,查询到与所述进程号相对应的记录区。
实时记录进一步为:将读取的当前时间戳确定为函数的时间信息并写入记录区;同时,将当前函数进入被调用状态确定为函数的状态信息并写入记录区。
第二种情况:当捕获到出桩函数时的情况,此时出桩函数被当前进程调用。
当捕获到出桩函数时,实时记录之前还包括:分配记录区、建立对应关系 及查询记录区记录的过程,具体为:根据当前调用出桩函数的进程所在的进程号和建立的对应关系,查询到与进程号相对应的记录区。
实时记录进一步为:将读取的当前时间戳确定为函数的时间信息并写入记录区;同时,将当前函数退出被调用状态确定为函数的状态信息并写入记录区。
第三种情况:当捕获到进程切换钩子函数形式的切换入记录标识时的情况。
当捕获到进程切换钩子函数形式的切换入记录标识时,实时记录之前还包括:分配记录区、建立对应关系及查询记录区记录的过程,具体为:根据当前切换入进程所在的进程号和建立的对应关系,查询到与进程号相对应的记录区。
实时记录进一步为:将读取的当前时间戳确定为函数的时间信息并写入记录区;同时,将表征当前进程进入切换入状态的进程切换钩子函数,确定为函数的状态信息并写入记录区。这里需要指出的是:此时,记录区的本条记录中包括:表征当前进程进入切换入状态的进程切换钩子函数的时间信息、和函数信息。
第四种情况:当捕获到进程切换钩子函数形式的切换出记录标识时的情况。
当捕获到进程切换钩子函数形式的切换出记录标识时,实时记录之前还包括:分配记录区、建立对应关系及查询记录区记录的过程,具体为:根据当前切换出进程所在的进程号和建立的对应关系,查询到与进程号相对应的记录区。
实时记录进一步为:将读取的当前时间戳确定为函数的时间信息并写入记录区;同时,将表征当前进程进入切换出状态的进程切换钩子函数,确定为函数的状态信息并写入记录区。这里需要指出的是:此时,记录区的本条记录中包括:表征当前进程进入切换出状态的进程切换钩子函数的时间信息、和函数信息。
这里,针对读取的时间戳而言,时间戳的获取来源有两种方式,第一种方式:当前时间戳采取绝对时间的格式时,通过读取处理器的计数器或硬件实现的计数器获得当前时间戳;第二种方式:当前时间戳采取相对时间的格式时,以标识形式存在;其中,将从实时时钟(RTC)或软件系统时钟获取的系统时间添加为该标识,以获取当前时间戳。
这里,为了避免记录的范围过大,导致系统中需开辟的记录区存储空间过大,占用系统资源的问题,本发明进一步采取两种方式进行完善,第一种方式具体为:在进行实时记录时,进一步根据对各个进程分别设置的记录开关、或对所有进程设置的总记录开关的开/关状态,对记录的范围,或者称为记录粒度进行控制。具体来说,可以对所有进程设置总开关,或者仅对当前进程设置开关,看哪个进程中的函数需要统计,如果开关处于开状态,则对进程中的函数进行统计,即为:统计进程中的各个函数运行时间、各个函数占用率、各个函数在运行时间内的运行状态、各个函数之间的相对调用关系等;如果开关处于关状态,则不对进程中的函数进行统计。第二种方式具体为:在进行实时记录时,进一步根据对各个函数设置的函数嵌套层次范围,对记录的范围进行控制。如果当前函数的函数嵌套层次在函数嵌套层次范围之内,则对当前函数进行统计,否则不统计。
这里,采集到的信息不同,基于该采集的信息统计函数的运行时间也有所不同,以下分为两种情况分别阐述。
第一种情况:采集到的信息具体为:通过入桩函数所实时记录的当前函数的时间信息、和通过出桩函数所实时记录的当前函数的时间信息。
此时,统计函数的运行时间具体为:根据出桩函数所实时记录的当前函数的时间信息,与入桩函数所实时记录的当前函数的时间信息之间的时间差值,统计出当前函数的运行时间。
第二种情况:采集到的信息具体为:通过入桩函数所实时记录的当前函数的时间信息、和通过出桩函数所实时记录的当前函数的时间信息;以及表征当前进程进入切换入状态的进程切换钩子函数所实时记录的当前函数的时间信息、和表征当前进程进入切换出状态的进程切换钩子函数所实时记录的当前函数的时间信息。
此时,统计函数的运行时间具体包括以下几方面内容:
一、根据出桩函数所实时记录的当前函数的时间信息,与入桩函数所实时记录的当前函数的时间信息之间的时间差值,获得第一时间差值。
二、根据表征当前进程进入切换入状态的进程切换钩子函数所实时记录的当前函数的时间信息、与表征当前进程进入切换出状态的进程切换钩子函数所实时记录的当前函数的时间信息之间的时间差值,获得第二时间差值。
三、根据所述第一时间差值与所述第二时间差值之间的差值,统计出当前函数的运行时间。
在计算中各个进程中每个函数的运行时间的基础上,该方法进一步包括:统计函数占用率,具体包括以下几方面内容:
一、根据多个进程中当前函数的运行时间的总和,统计出当前函数在多个进程中的总运行时间。
二、根据当前进程的当前函数的运行时间与所述总运行时间的比值,统计出当前进程中的当前函数在多个进程中所占的函数占用率。也就是说,函数占用率=各个函数的运行时间/函数的总运行时间。
这里,本发明还可以根据采集的信息统计出各个函数之间的相对调用关系、以及统计出在函数的运行时间内函数的运行状态。以下,对函数的运行状态的统计方法进行阐述。
采集的信息具体为:通过入桩函数所实时记录的当前函数的时间信息、和当前函数的状态信息;以及采集通过出桩函数所实时记录的当前函数的时间信息、和当前函数的状态信息。
统计函数的运行状态具体包括以下几方面内容:
一、根据出桩函数所实时记录的当前函数的时间信息,与入桩函数所实时记录的当前函数的时间信息之间的时间差值,统计出当前函数的运行时间。
二、结合当前函数的运行时间、入桩函数所实时记录的当前函数的状态信息、和出桩函数所实时记录的当前函数的状态信息,统计出在当前函数的运行时间内当前函数的运行状态。
综上所述,本发明主要包括以下内容:
本发明的方法可以包括以下步骤:
第一步、编写入桩函数和出桩函数。
这里,入桩函数在函数进入时被调用,出桩函数在函数退出时被调用;入桩函数和出桩函数主要完成当前时间戳的记录和被调用函数地址的记录。被调用函数地址通过函数名称来界定,实际上所采用的不同函数名称隐含了函数的状态信息。比如,函数名称为IN Function1()可表示:Function1进入被调用的状态;函数名称为OUT Function1()可表示:Function1退出被调用的状态。
第二步、通过编译器在编译时自动给需要统计的函数增加入桩函数和出桩函数。
第三步、以进程为单位分配记录区,每个记录区统计当前进程调用函数的运行记录。
这里,进一步地,为了在嵌入式操作系统中更加精确地统计函数运行时间,还需要编写进程切换钩子函数,当发生进程切换时,对于切换出和切换入的进程分别在相应的记录区中记录当前切换时间戳。
第四步、记录数据包括函数地址、当前时间戳等,时间戳可由可利用处理器的计数器或硬件实现的计数器读取获得;也可添加从RTC或软件系统时钟获取系统时间作为标识,需避免时间戳的重复。
第五步、设置记录开关以过滤需要记录的函数。
这里,由于对每个函数记录会导致过多的信息记录,因此可对所有进程设置总记录开关,并在各进程也分别设置记录开关,以便对记录粒度进行控制,便于过滤需要记录的函数。还可以设置函数嵌套层次的范围,控制记录函数的嵌套层次,以便于过滤需要记录的函数。
第六步、中断服务函数运行时,使用当前进程的记录区,将函数进出记录数据存放在进程记录区中。
第七步、采集所有记录区中的数据,统计各函数运行时间并显示。
总之,发明为克服采用现有技术无法精确地对嵌入式系统性能进行评估的问题,在现有嵌入式软件系统中,以进程中的函数为统计单位,并通过统计各个函数的运行时间、各个函数的运行状态、函数占用率、分析各个函数之间的相对调用关系,可以更精确地对嵌入式系统性能进行评估。而且,本发明根据 对统计结果的分析,能优化代码结构和运行效率,改善系统性能,并进一步提高故障定位的准确度。
综上所述,采用本发明,无需修改现有代码,利用GCC编译选项自动添加桩函数,在各函数入口和出口处的桩函数统计进入和退出函数的时间点,通过二者的时间差计算各函数实际运行时间,可以实现精确统计具体函数的运行时间;分析频繁运行的函数,达到细粒度统计便于代码优化,改善系统性能;同时,便于监测在某个时间段内的系统异常情况,对故障的定位提供了更加可靠的方式,无需对已有代码进行修改。对于故障现场记录能提供相应精确的函数运行时间的记录,从而提高了故障定位的准确度。
以下举实例对本发明的内容进行阐述。
实例1:进程号和记录区的索引对应关系。
如图2所示为本发明进程号对应记录区的示意图。系统上电后,对每个进程初始化相应的记录区,并建立进程号与记录区的索引的对应关系,当包括入桩函数和出桩函数在内的桩函数,被当前进程调用时,桩函数能根据当前进程的进程号索引到相对应的记录区。
实例2:采用一个记录区中的记录,统计一个进程中的各个函数的运行时间。此时仅仅包括入桩函数和出桩函数。
如图3所示为一个进程调用函数的时间戳记录示意图。由于T1时刻入桩函数记录函数Function1调用;T2时刻入桩函数记录函数Function2调用;T3时刻出桩函数记录退出函数Function2的调用;T4时刻出桩函数记录退出函数Function1的调用,因此,根据调用记录可以知道函数间调用关系如下:
void Function1()
{
Function2();
}
因此,可以计算出函数Function1的运行时间为T4-T1;函数Function2的运行时间为T3-T2。
实例3:采用一个记录区中的记录,统计一个进程中的各个函数的运行时间。此时,除了包括入桩函数和出桩函数,还包括进程切换钩子函数。
如图4所示,由于在该进程记录区中,区别于图2还记录了操作系统调度当前进程切换出运行状态的时间点T3、和重新切换入运行状态的时间点T4,因此,可以计算出函数Function1的运行时间为(T6-T1)-(T4-T3);Function2的运行时间为(T5-T2)-(T4-T3)。
实例4:采用两个记录区中的记录,统计两个进程中的各个函数的运行时间,以及一个进程中函数在这两个进程中的函数占用率。
如图5或图6所示,在两个进程记录区中分别记录了当前函数的调用时间戳,由于在进程1中函数Function1的运行时间为(T7-T1)-(T5-T3);函数Function2的运行时间为(T6T2)-(T5-T3);在进程2中,函数Function2的运行时间为(T9-T4)-(T8-T5);因此,将Function2在两个进程中的运行时间相加可以计算出Function2函数的总运行时间。
计算出每个函数的运行时间即可知道函数的占用率。同样根据上述方法也可得出各函数间的相对调用关系。
实例5:实现本发明方法时的初始化流程。该流程包括以下步骤:
步骤201、以进程为单位分配记录区,并建立进程号与记录区的对应关系。
步骤202、设置记录开关和进程记录的函数嵌套层次范围。
这里,为避免记录区记录过多的函数调用记录或记录区消耗过快,可以分别设置记录开关、或者函数嵌套层次范围;也可以同时设置记录开关和函数嵌套层次范围。其中,设置需要记录的函数嵌套层次范围,需要记录的函数嵌套层次范围,目的是只对函数嵌套层次数在特定范围内的函数进行统计,以控制记录范围。
步骤203、启动硬件计数器作为时间戳读取源;添加进程切换钩子函数,使发生进程切换时在进入和退出运行态的进程对应的记录区中正确记录相应的时间戳。
实例6:只包括入桩函数和出桩函数时,函数时间戳记录的流程,该流程 包括以下步骤:
步骤301、桩函数被调用;其中,入桩函数累加当前进程函数调用时的函数嵌套层次数;出桩函数减少当前进程函数调用时的函数嵌套层次数。
步骤302、查询当前进程所设置的记录开关的状态。
当记录开关为开的状态时,表示当前函数需要记录在进程中的运行时间和运行状态。如果需要记录,并且进程中被调用函数的函数嵌套层次数在设定的函数嵌套层次范围内,则获取当前进程号;被调用的桩函数根据进程号获取对应的记录区,读取当前硬件计数器并获取当前时间戳;在记录区中记录当前时间戳和被调用函数的名称,这个名称即为地址信息,也可以理解为函数状态信息。
当记录开关为关的状态时,表示当前函数不需要记录在进程中的运行时间和运行状态。
实例7:包括进程切换钩子函数时,进程切换时间戳记录的流程,该流程包括:如果需要进程切换,则获取切入和切出进程号;根据切入和切出进程号分别获取到对应的记录区;读取当前硬件计数器并获取当前时间戳;在记录区中记录切入和切出时间戳,以及对应的进程切换钩子函数的名称。如果进程不需要切换,则退出当前进程切换流程。
一种嵌入式系统性能的评估系统,该系统包括:采集单元、统计单元、和评估单元。其中,采集单元,用于对函数的时间信息、和相对应的函数的状态信息进行实时的连续采集;将采集结果发送给统计单元。统计单元,用于对采集结果进行统计;将统计结果发送给评估单元。评估单元,用于根据统计结果实现嵌入式系统的性能评估。
这里,统计单元,进一步用于根据采集结果,统计出嵌入式系统的当前进程中,各个函数的运行时间和各个函数的运行状态。评估单元,进一步用于将收到的各个函数的运行时间和各个函数的运行状态确定为评估参数;根据评估参数实现嵌入式系统实时运行状态的性能评估。
这里,该系统还包括:故障定位单元,用于将收到的各个函数的运行时间 和各个函数的运行状态确定为故障定位指示参数;根据故障定位指示参数实现嵌入式系统的故障定位。
这里,该系统还包括:记录区分配及关系建立单元,和实时记录单元。其中,记录区分配及关系建立单元,用于以进程为单位分配记录区,并建立进程号与记录区的对应关系;其中,记录区包括:函数的时间信息和函数的状态信息。实时记录单元,用于根据设置在各函数入口的入记录标识、设置在各函数出口的出记录标识、进程重新切换入的切换入记录标识、进程切换出的切换出记录标识中的至少一种标识,来进行实时记录。
这里,入记录标识具体为入桩函数;出记录标识具体为出桩函数;切换入记录标识和切换出记录标识具体采用进程切换钩子函数的形式;该系统还包括查询单元。
其中,捕获到入桩函数的情况下,查询单元的一种具体实现为:查询单元用于根据当前调用入桩函数的进程所在的进程号和建立的对应关系,查询到与所述进程号相对应的记录区。实时记录单元的一种具体实现为:实时记录单元进一步用于将读取的当前时间戳确定为函数的时间信息并写入记录区;同时,将当前函数进入被调用状态确定为函数的状态信息并写入记录区。
捕获到出桩函数的情况下,查询单元的一种具体实现为:查询单元用于根据当前调用出桩函数的进程所在的进程号和建立的对应关系,查询到与进程号相对应的记录区。实时记录单元的一种具体实现为:实时记录单元进一步用于将读取的当前时间戳确定为函数的时间信息并写入记录区;同时,将当前函数退出被调用状态确定为函数的状态信息并写入记录区。
捕获到进程切换钩子函数形式的切换入记录标识的情况下,查询单元的一种具体实现为:查询单元用于根据当前切换入进程所在的进程号和建立的对应关系,查询到与进程号相对应的记录区。实时记录单元的一种具体实现为:实时记录单元进一步用于将读取的当前时间戳确定为函数的时间信息并写入记录区;同时,将表征当前进程进入切换入状态的进程切换钩子函数,确定为函数的状态信息并写入记录区。
捕获到进程切换钩子函数形式的切换出记录标识的情况下,查询单元的一种具体实现为:查询单元用于根据当前切换出进程所在的进程号和建立的对应关系,查询到与进程号相对应的记录区。实时记录单元的一种具体实现为:实时记录单元进一步用于将读取的当前时间戳确定为函数的时间信息并写入记录区;同时,将表征当前进程进入切换出状态的进程切换钩子函数,确定为函数的状态信息并写入记录区。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。
Claims (13)
1.一种嵌入式系统性能的评估方法,其特征在于,该方法包括:
根据设置在各函数入口的入记录标识、设置在各函数出口的出记录标识、进程重新切换入的切换入记录标识、进程切换出的切换出记录标识中的至少一种标识对函数的时间信息、和相对应的函数的状态信息进行实时记录,对实时记录的函数的时间信息、和相对应的函数的状态信息进行实时的连续采集;
根据所述采集结果,统计出嵌入式系统的当前进程中,各个函数的运行时间和各个函数的运行状态并确定为评估参数;根据所述评估参数实现嵌入式系统实时运行状态的性能评估。
2.根据权利要求1所述的方法,其特征在于,将各个函数的运行时间和各个函数的运行状态进一步确定为故障定位指示参数;根据所述故障定位指示参数实现嵌入式系统的故障定位。
3.根据权利要求1所述的方法,其特征在于,进行所述采集之前还包括:以进程为单位分配记录区,建立进程号与记录区的对应关系,在所述记录区实时记录当前进程调用函数的运行情况;其中,
所述记录区包括:所述函数的时间信息和所述函数的状态信息。
4.根据权利要求3所述的方法,其特征在于,所述入记录标识具体为入桩函数;所述出记录标识具体为出桩函数;所述切换入记录标识和切换出记录标识具体采用进程切换钩子函数的形式;
当捕获到所述入桩函数时,所述实时记录之前还包括:根据当前调用所述入桩函数的进程所在的进程号和建立的对应关系,查询到与所述进程号相对应的记录区;所述实时记录进一步为:将读取的当前时间戳确定为所述函数的时间信息并写入记录区;同时,将当前函数进入被调用状态确定为所述函数的状态信息并写入记录区;或者,
当捕获到所述出桩函数时,所述实时记录之前还包括:根据当前调用所述出桩函数的进程所在的进程号和建立的对应关系,查询到与所述进程号相对应的记录区;所述实时记录进一步为:将读取的当前时间戳确定为所述函数的时间信息并写入记录区;同时,将当前函数退出被调用状态确定为所述函数的状态信息并写入记录区;或者,
当捕获到进程切换钩子函数形式的所述切换入记录标识时,所述实时记录之前还包括:根据当前切换入进程所在的进程号和建立的对应关系,查询到与所述进程号相对应的记录区;所述实时记录进一步为:将读取的当前时间戳确定为所述函数的时间信息并写入记录区;同时,将表征当前进程进入切换入状态的进程切换钩子函数,确定为所述函数的状态信息并写入记录区;或者,
当捕获到进程切换钩子函数形式的所述切换出记录标识时,所述实时记录之前还包括:根据当前切换出进程所在的进程号和建立的对应关系,查询到与所述进程号相对应的记录区;所述实时记录进一步为:将读取的当前时间戳确定为所述函数的时间信息并写入记录区;同时,将表征当前进程进入切换出状态的进程切换钩子函数,确定为所述函数的状态信息并写入记录区。
5.根据权利要求4所述的方法,其特征在于,所述当前时间戳采取绝对时间的格式时,通过读取处理器的计数器或硬件实现的计数器获得;或者,
所述当前时间戳采取相对时间的格式时,以标识形式存在;其中,将从实时时钟或软件系统时钟获取的系统时间添加为所述标识。
6.根据权利要求4所述的方法,其特征在于,在进行所述实时记录时,进一步根据对各个进程分别设置的记录开关、或对所有进程设置的总记录开关的开/关状态,对记录的范围进行控制;
和/或根据对各个函数设置的函数嵌套层次范围,对记录的范围进行控制。
7.根据权利要求4所述的方法,其特征在于,所述采集具体为:采集通过入桩函数所实时记录的当前函数的时间信息、和通过出桩函数所实时记录的当前函数的时间信息;
所述统计函数的运行时间具体为:根据出桩函数所实时记录的当前函数的时间信息,与入桩函数所实时记录的当前函数的时间信息之间的时间差值,统计出当前函数的运行时间;
或者,所述采集具体为:采集通过入桩函数所实时记录的当前函数的时间信息、和通过出桩函数所实时记录的当前函数的时间信息;以及采集表征当前进程进入切换入状态的进程切换钩子函数所实时记录的当前函数的时间信息、和表征当前进程进入切换出状态的进程切换钩子函数所实时记录的当前函数的时间信息;
所述统计函数的运行时间具体为:根据出桩函数所实时记录的当前函数的时间信息,与入桩函数所实时记录的当前函数的时间信息之间的时间差值,获得第一时间差值;根据表征当前进程进入切换入状态的进程切换钩子函数所实时记录的当前函数的时间信息、与表征当前进程进入切换出状态的进程切换钩子函数所实时记录的当前函数的时间信息之间的时间差值,获得第二时间差值;根据所述第一时间差值与所述第二时间差值之间的差值,统计出当前函数的运行时间。
8.根据权利要求7所述的方法,其特征在于,该方法进一步包括:统计函数占用率,具体为:根据多个进程中所述当前函数的运行时间的总和,统计出当前函数在多个进程中的总运行时间;根据当前进程的所述当前函数的运行时间与所述总运行时间的比值,统计出当前进程中的当前函数在多个进程中所占的函数占用率。
9.根据权利要求4所述的方法,其特征在于,所述采集具体为:采集通过入桩函数所实时记录的当前函数的时间信息、和当前函数的状态信息;以及采集通过出桩函数所实时记录的当前函数的时间信息、和当前函数的状态信息;
所述统计函数的运行状态具体为:根据所述出桩函数所实时记录的当前函数的时间信息,与所述入桩函数所实时记录的当前函数的时间信息之间的时间差值,统计出当前函数的运行时间;结合所述当前函数的运行时间、所述入桩函数所实时记录的当前函数的状态信息、和所述出桩函数所实时记录的当前函数的状态信息,统计出在当前函数的运行时间内当前函数的运行状态。
10.一种嵌入式系统性能的评估系统,其特征在于,该系统包括:采集单元、统计单元、和评估单元;其中,
采集单元,用于根据设置在各函数入口的入记录标识、设置在各函数出口的出记录标识、进程重新切换入的切换入记录标识、进程切换出的切换出记录标识中的至少一种标识对函数的时间信息、和相对应的函数的状态信息进行实时记录,对实时记录的函数的时间信息、和相对应的函数的状态信息进行实时的连续采集;将采集结果发送给所述统计单元;
统计单元,用于对所述采集结果进行统计,统计出嵌入式系统的当前进程中,各个函数的运行时间和各个函数的运行状态并确定为评估参数;将评估参数发送给所述评估单元;
评估单元,用于根据所述评估参数实现嵌入式系统实时运行状态的性能评估。
11.根据权利要求10所述的系统,其特征在于,该系统还包括:故障定位单元,用于将收到的各个函数的运行时间和各个函数的运行状态确定为故障定位指示参数;根据所述故障定位指示参数实现嵌入式系统的故障定位。
12.根据权利要求10所述的系统,其特征在于,该系统还包括:记录区分配及关系建立单元,用于以进程为单位分配记录区,并建立进程号与记录区的对应关系;其中,所述记录区包括:所述函数的时间信息和所述函数的状态信息。
13.根据权利要求12所述的系统,其特征在于,所述入记录标识具体为入桩函数;所述出记录标识具体为出桩函数;所述切换入记录标识和切换出记录标识具体采用进程切换钩子函数的形式;该系统还包括查询单元;其中,
捕获到所述入桩函数的情况下,所述查询单元,用于根据当前调用所述入桩函数的进程所在的进程号和建立的对应关系,查询到与所述进程号相对应的记录区;所述实时记录单元,进一步用于将读取的当前时间戳确定为所述函数的时间信息并写入记录区;同时,将当前函数进入被调用状态确定为所述函数的状态信息并写入记录区;或者,
捕获到所述出桩函数的情况下,所述查询单元,用于根据当前调用所述出桩函数的进程所在的进程号和建立的对应关系,查询到与所述进程号相对应的记录区;所述实时记录单元,进一步用于将读取的当前时间戳确定为所述函数的时间信息并写入记录区;同时,将当前函数退出被调用状态确定为所述函数的状态信息并写入记录区;或者,
捕获到进程切换钩子函数形式的所述切换入记录标识的情况下,所述查询单元,用于根据当前切换入进程所在的进程号和建立的对应关系,查询到与所述进程号相对应的记录区;所述实时记录单元,进一步用于将读取的当前时间戳确定为所述函数的时间信息并写入记录区;同时,将表征当前进程进入切换入状态的进程切换钩子函数,确定为所述函数的状态信息并写入记录区;或者,
捕获到进程切换钩子函数形式的所述切换出记录标识的情况下,所述查询单元,用于根据当前切换出进程所在的进程号和建立的对应关系,查询到与所述进程号相对应的记录区;所述实时记录单元,进一步用于将读取的当前时间戳确定为所述函数的时间信息并写入记录区;同时,将表征当前进程进入切换出状态的进程切换钩子函数,确定为所述函数的状态信息并写入记录区。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200910090828XA CN101620562B (zh) | 2009-08-07 | 2009-08-07 | 一种嵌入式系统性能的评估方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200910090828XA CN101620562B (zh) | 2009-08-07 | 2009-08-07 | 一种嵌入式系统性能的评估方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101620562A CN101620562A (zh) | 2010-01-06 |
CN101620562B true CN101620562B (zh) | 2011-08-24 |
Family
ID=41513809
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200910090828XA Active CN101620562B (zh) | 2009-08-07 | 2009-08-07 | 一种嵌入式系统性能的评估方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101620562B (zh) |
Families Citing this family (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102004678B (zh) * | 2010-11-11 | 2013-06-12 | 青岛普加智能信息有限公司 | 操作系统性能分析方法及装置 |
CN102541724A (zh) * | 2010-12-09 | 2012-07-04 | 中国科学院沈阳计算技术研究所有限公司 | 一种实时操作系统的性能评估方法 |
US8762108B2 (en) * | 2011-07-22 | 2014-06-24 | International Business Machines Corporation | Real time device evaluation |
CN102521132A (zh) * | 2011-12-14 | 2012-06-27 | 亿赞普(北京)科技有限公司 | 实时输出日志的自动化测试方法和系统 |
CN102622290A (zh) * | 2012-03-07 | 2012-08-01 | 苏州阔地网络科技有限公司 | 一种进程监控的方法及系统 |
CN103744772A (zh) * | 2014-01-28 | 2014-04-23 | 北京经纬恒润科技有限公司 | 一种检测任务运行性能的方法和系统 |
CN105988919B (zh) * | 2015-03-02 | 2018-12-25 | 阿里巴巴集团控股有限公司 | Java型web容器内存使用量检测方法及相关装置 |
CN105630651A (zh) * | 2015-12-28 | 2016-06-01 | 北京像素软件科技股份有限公司 | 性能监视方法和装置 |
CN106021083B (zh) * | 2016-05-18 | 2019-03-08 | 青岛海信电器股份有限公司 | 一种评估实时操作系统实时性的方法及装置 |
CN109976989B (zh) * | 2016-08-18 | 2023-05-12 | 北京并行科技股份有限公司 | 跨节点应用性能监测方法、装置及高性能计算系统 |
CN107148041B (zh) * | 2017-06-20 | 2020-12-18 | 义乌市智享通讯设备有限公司 | 无线接入设备异常运行的检测方法及无线接入设备 |
CN110018925B (zh) * | 2018-01-10 | 2023-08-29 | 厦门雅迅网络股份有限公司 | 系统安全冗余方法及计算机可读存储介质 |
CN109490611B (zh) * | 2018-10-29 | 2021-03-05 | 宁波三星智能电气有限公司 | 一种嵌入式设备的时间统计方法 |
CN109684219A (zh) * | 2018-12-26 | 2019-04-26 | 百度在线网络技术(北京)有限公司 | 系统性能测试方法、装置及存储介质 |
CN112000461A (zh) * | 2020-06-30 | 2020-11-27 | 航天信息股份有限公司 | 一种用于嵌入式终端任务运行时间的采集方法及装置 |
CN115237728B (zh) * | 2022-09-26 | 2022-12-06 | 东方电子股份有限公司 | 一种实时操作系统运行状态的可视化监视方法 |
-
2009
- 2009-08-07 CN CN200910090828XA patent/CN101620562B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN101620562A (zh) | 2010-01-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101620562B (zh) | 一种嵌入式系统性能的评估方法及系统 | |
CN104182320B (zh) | 一种监控内存泄漏的方法及装置 | |
US8141053B2 (en) | Call stack sampling using a virtual machine | |
EP2239664B1 (en) | Context switch sampling | |
CN102576326B (zh) | 操作监测设备、操作监测方法和程序存储介质 | |
EP2438523B1 (en) | System and method for collecting application performance data | |
US9298651B2 (en) | Continuous in-memory accumulation of hardware performance counter data | |
CN100517249C (zh) | 一种捕获导致内存被野指针改写的函数的方法 | |
CN102947829B (zh) | 数据处理装置以及数据处理方法 | |
US8060543B1 (en) | Tracking software object use | |
CN101615143A (zh) | 用于内存泄漏诊断的方法和装置 | |
US20100180245A1 (en) | Methods and products for determining and visualizin ic behavior | |
CN110007857B (zh) | 一种闪存芯片的寿命预测方法及装置 | |
CN104917836A (zh) | 基于集群监控分析计算设备可用性的方法及装置 | |
CN111898068B (zh) | 一种基于pert算法及仪表用量分析的异常检测方法 | |
CN109086149A (zh) | 一种微服务接口调用热点分析的方法 | |
CN105429792A (zh) | 用户行为流量获取方法及装置、用户行为分析方法及系统 | |
CN1979444A (zh) | 保证伺服程序不间断运行的系统及其方法 | |
CN101101565A (zh) | 一种实时检测定位硬件复位原因的装置及其方法 | |
CN114330848A (zh) | 基于时序信号的猪场设备生命周期预测方法 | |
CN109655647B (zh) | 一种电能表的异常事件记录方法 | |
CN111368104B (zh) | 信息处理方法、装置及设备 | |
CN114063881B (zh) | 分布式系统的磁盘管理方法及装置 | |
CN114821548A (zh) | 驾驶时使用手机行为的检测方法、报警方法、装置、车辆 | |
CN115617600A (zh) | 收集用于调试和分析的运行时信息 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |