一种嵌入式系统性能的评估方法及系统的制作方法

文档序号:6575336阅读:127来源:国知局
专利名称:一种嵌入式系统性能的评估方法及系统的制作方法
技术领域
本发明涉及嵌入式系统领域,尤其涉及一种嵌入式系统性能的评估方法及 系统。
背景技术
现有的嵌入式系统中,系统运行时的处理器(CPU)占用率是衡量系统性能的重要指标,通常的测量方法是在系统运行时启动一个最低优先级的空闲任 务,通过统计在一段时间内空闲任务运行的时间片,再用总的运行时间减去空 闲任务的运行时间片后,得到系统中所有其他进程的运行的时间,,用这种方法可以计算出嵌入式系统运行时的CPU占用率。例如中国专利公开号为 CN021576卯,发明名称为"一种在多任务实时操作系统中检测CPU占用率的 方法,,即为统计CPU占用率的常见方法,具体为通过在进程切换时加入钩子 函数统计各进程的运行时间片。它是以进程为基本统计单位,从总体衡量各个 进程的运行时间,目的在于监控进程的运行时间片、监测进程死循环等异常情 况。然而,在系统的实时运行过程中,仅通过统计进程的占用率计算CPU占用 率以达到评估嵌入式系统性能,比如系统的实时运行状态是远远不够的,需要 比进程更细粒度的评估指标,从而引入了以函数为基本统计单位的评估指标, 具体来说,通过统计各函数的运行时间和运行情况,可以统计出函数的占用率, 并分析出函数间的调用关系和代码的关键路径,从而对调用次数频繁的函数进 行代码优化,最终降低CPU的占用率,以提高系统性能。以下对现有的一种通 过统计各函数的运行时间和运行情况达到评估嵌入式系统性能的方案进行阐 述。中国专利/〉开号为CN2008101424卯.3,发明名称为"一种CPU占用率测量方法及装置",具体为通过使用定时中断采样程序计数器,并解析当前程序 计数器对应的函数名称,来达到统计各函数的运行时间和运行情况的目的,然 而由于定时器中断的限制,该方案并不能精确统计各函数的运行时间和运行情 况,由于该方案统计的是由离散的多个运行瞬间的采样得到的结果,在两次定 时器中断之间运行并退出的函数则无法统计到,因此,无法精确地对嵌入式系 统性能进行评估,目前迫切需要一种能精确地对嵌入式系统性能进行评估的实 现方案。发明内容有鉴于此,本发明的主要目的在于提供一种嵌入式系统性能的评估方法及 系统,能精确地对嵌入式系统性能进行评估。为达到上述目的,本发明的技术方案是这样实现的一种嵌入式系统性能的评估方法,该方法包括对函数的时间信息、和相 对应的函数的状态信息进行实时的连续采集;通过对采集结果统计的方式,实 现嵌入式系统的性能评估。其中,才艮据所述采集结果,统计出所述嵌入式系统的当前进程中,各个函 数的运行时间和各个函数的运行状态并确定为评估参数;才艮据所述评估参数实 现嵌入式系统实时运行状态的性能评估。其中,将各个函数的运行时间和各个函数的运行状态进一步确定为故障定位指示参数;根据所述故障定位指示参数实现嵌入式系统的故障定位。其中,进行所述釆集之前还包括以进程为单位分配记录区,并建立进程 号与记录区的对应关系;在所述记录区实时记录当前进程调用函数的运行情况; 其中,所述记录区包括所述函数的时间信息和所述函数的状态信息。其中,所述实时记录具体包括根据设置在各函数入口的入记录标识、设置在各函数出口的出记录标识、进程重新切换入的切换入记录标识、进程切换出的切换出记录标识中的至少 一种标识,来进行实时记录。其中,所述入记录标识具体为入桩函数;所述出记录标识具体为出桩函数; 所述切换入记录标识和切换出记录标识具体采用进程切换钩子函数的形式;当捕获到所述入桩函数时,所述实时记录之前还包括4艮据当前调用所述 入桩函数的进程所在的进程号和建立的对应关系,查询到与所述进程号相对应 的记录区;所述实时记录进一步为将读取的当前时间戳确定为所述函数的时 间信息并写入记录区;同时,将当前函数进入被调用状态确定为所述函数的状 态信息并写入记录区;或者,当捕获到所述出桩函数时,所述实时记录之前还包括根据当前调用所述 出桩函数的进程所在的进程号和建立的对应关系,查询到与所述进程号相对应 的记录区;所述实时记录进一步为将读取的当前时间戳确定为所述函数的时 间信息并写入记录区;同时,将当前函数退出被调用状态确定为所述函数的状 态信息并写入记录区;或者,当捕获到进程切换钩子函数形式的所述切换入记录标识时,所述实时记录 之前还包括才艮据当前切换入进程所在的进程号和建立的对应关系,查询到与 所述进程号相对应的记录区;所述实时记录进一步为将读取的当前时间戳确 定为所述函数的时间信息并写入记录区;同时,将表征当前进程进入切换入状 态的进程切换钩子函数,确定为所述函数的状态信息并写入记录区;或者,当捕获到进程切换钩子函数形式的所述切换出记录标识时,所述实时记录 之前还包括根据当前切换出进程所在的进程号和建立的对应关系,查询到与 所述进程号相对应的记录区;所述实时记录进一步为将读取的当前时间戳确 定为所述函数的时间信息并写入记录区;同时,将表征当前进程进入切换出状 态的进程切换钩子函数,确定为所述函数的状态信息并写入记录区。其中,所述当前时间戳采取绝对时间的格式时,通过读取处理器的计数器 或硬件实现的计数器获得;或者,所述当前时间戳釆取相对时间的格式时,以标识形式存在;其中,将从实 时时钟或软件系统时钟获取的系统时间添加为所述标识。其中,在进行所述实时记录时,进一步根据对各个进程分别设置的记录开关、或对所有进程设置的总记录开关的开/关状态,对记录的范围进行控制; 和/或根据对各个函数设置的函数嵌套层次范围,对记录的范围进行控制。 其中,所述采集具体为采集通过入桩函数所实时记录的当前函数的时间信息、和通过出桩函数所实时记录的当前函数的时间信息;所述统计函数的运行时间具体为根据出桩函数所实时记录的当前函数的时间信息,与入桩函数所实时记录的当前函数的时间信息之间的时间差值,统计出当前函数的运行时间;或者,所述采集具体为采集通过入桩函数所实时记录的当前函数的时间信息、和通过出桩函数所实时记录的当前函数的时间信息;以及采集表征当前进程进入切换入状态的进程切换钩子函数所实时记录的当前函数的时间信息、和表征当前进程进入切换出状态的进程切换钩子函数所实时记录的当前函数的时间信息;所述统计函数的运行时间具体为根据出桩函数所实时记录的当前函数的 时间信息,与入桩函数所实时记录的当前函数的时间信息之间的时间差值,获 得第一时间差值;根据表征当前进程进入切换入状态的进程切换钩子函数所实 时记录的当前函数的时间信息、与表征当前进程进入切换出状态的进程切换钩 子函数所实时记录的当前函数的时间信息之间的时间差值,获得第二时间差值; 根据所述第一时间差值与所述第二时间差值之间的差值,统计出当前函数的运 行时间。其中,该方法进一步包括统计函数占用率,具体为根据多个进程中所 述当前函数的运行时间的总和,统计出当前函数在多个进程中的总运行时间; 根据当前进程的所述当前函数的运行时间与所述总运行时间的比值,统计出当 前进程中的当前函数在多个进程中所占的函数占用率。其中,所述采集具体为采集通过入桩函数所实时记录的当前函数的时间 信息、和当前函数的状态信息;以及采集通过出桩函数所实时记录的当前函数 的时间信息、和当前函数的状态信息;所述统计函数的运行状态具体为根据所述出桩函数所实时记录的当前函数的时间信息,与所述入桩函数所实时记录的当前函数的时间信息之间的时间差值,统计出当前函数的运行时间;结合所述当前函数的运行时间、所述入桩 函数所实时记录的当前函数的状态信息、和所述出桩函数所实时记录的当前函 数的状态信息,统计出在当前函数的运行时间内当前函数的运行状态。一种嵌入式系统性能的评估系统,该系统包括采集单元、统计单元、和 评估单元;其中,采集单元,用于对函数的时间信息、和相对应的函数的状态信息进行实时 的连续采集;将采集结果发送给所述统计单元;统计单元,用于对所述采集结果进行统计;将统计结果发送给所述评估单元;评估单元,用于4艮据所述统计结果实现嵌入式系统的性能评估。其中,所述统计单元,进一步用于根据所述采集结果,统计出所述嵌入式系统的当前进程中,各个函数的运行时间和各个函数的运行状态;所述评估单元,进一步用于将收到的各个函数的运行时间和各个函数的运行状态确定为评估参数;根据所述评估参数实现嵌入式系统实时运行状态的性能评估。其中,该系统还包括故障定位单元,用于将收到的各个函数的运行时间 和各个函数的运行状态确定为故障定位指示参数;根据所述故障定位指示参数 实现嵌入式系统的故障定位。其中,该系统还包括记录区分配及关系建立单元,和实时记录单元;其中,记录区分配及关系建立单元,用于以进程为单位分配记录区,并建立进程 号与记录区的对应关系;其中,所述记录区包括所述函数的时间信息和所述 函数的状态信息;实时记录单元,用于根据设置在各函数入口的入记录标识、设置在各函数 出口的出记录标识、进程重新切换入的切换入记录标识、进程切换出的切换出 记录标识中的至少一种标识,来进行实时记录。其中,所述入记录标识具体为入桩函数;所述出记录标识具体为出桩函数; 所述切换入记录标识和切换出记录标识具体采用进程切换钩子函数的形式;该 系统还包括查询单元;其中,捕获到所述入桩函数的情况下,所述查询单元,用于根据当前调用所述入 桩函数的进程所在的进程号和建立的对应关系,查询到与所述进程号相对应的 记录区;所述实时记录单元,进一步用于将读取的当前时间戳确定为所述函数 的时间信息并写入记录区;同时,将当前函数进入被调用状态确定为所述函数 的状态信息并写入记录区;或者,捕获到所述出桩函数的情况下,所述查询单元,用于根据当前调用所述出 桩函数的进程所在的进禾呈号和建立的对应关系,查询到与所述进程号相对应的 记录区;所述实时记录单元,进一步用于将读取的当前时间戳确定为所述函数 的时间信息并写入记录区;同时,将当前函数退出被调用状态确定为所述函数 的状态信息并写入记录区;或者,捕获到进程切换钩子函数形式的所述切换入记录标识的情况下,所述查询 单元,用于根据当前切:換入进程所在的进程号和建立的对应关系,查询到与所 述进程号相对应的记录区;所述实时记录单元,进一步用于将读取的当前时间 戳确定为所述函数的时间信息并写入记录区;同时,将表征当前进程进入切换 入状态的进程切换钩子函数,确定为所迷函数的状态信息并写入记录区;或者,捕获到进程切换钩子函数形式的所述切换出记录标识的情况下,所述查询 单元,用于根据当前切换出进程所在的进程号和建立的对应关系,查询到与所厂述进程号相对应的记录区;所述实时记录单元,进一步用于将读取的当前时间 戳确定为所述函数的时间信息并写入记录区;同时,将表征当前进程进入切换 出状态的进程切换钩子函数,确定为所述函数的状态信息并写入记录区。本发明对函数的时间信息、和相对应的函数的状态信息进行实时的连续采 集;通过对采集结果统计的方式,实现嵌入式系统的性能评估。由于本发明是对函数的时间信息、和相对应的函数的状态信息进行实时的 连续采集后所进行的统计,因此,可以统计到各个函数在连续时间点的函数状态;而现有技术是由离散的多个运行瞬间的采样得到的结果,无法统计到在两 次定时器中断之间运行并退出的函数,因此,采用本发明的统计结果实现嵌入 式系统的性能评估,其精确度比现有技术高的多。


图1为本发明方法的实现流程示意图;图2为本发明实例1的进程号对应记录区的示意图;图3为本发明实例2的函数运行时间的一个记录区示意图;图4为本发明实例3的函数运行时间的一个记录区示意图;图5为本发明实例4的函数运行时间的一个记录区示意图;图6为本发明实例4的函数运行时间的另一个记录区示意图。
具体实施方式
本发明的基本思想是对函数的时间信息、和相对应的函数的状态信息进 行实时的连续采集;通过对采集结果统计的方式,实现嵌入式系统的性能评估。 下面结合附图对技术方案的实施作进一步的详细描述。 如图1所示, 一种嵌入式系统性能的评估方法,该方法包括以下步骤 步骤101、对函数的时间信息、和相对应的函数的状态信息进行实时的连 续采集。步骤102、通过对采集结果统计的方式,实现嵌入式系统的性能评估。 针对步骤101~步骤102所构成的技术方案而言,步骤102中,统计的处理过程具体为根据采集结果,统计出嵌入式系统的当前进程中,各个函数的运行时间和各个函数的运行状态。实现嵌入式系统的性能评估的处理过程具体为将各个函数的运行时间和各个函数的运行状态确定为评估参数;根据评估参数实现嵌入式系统实时运行状态的性能评估。这里,还可以进一步地将各个函数的运行时间和各个函数的运行状态确定单位分配记录区,并 建立进程号与记录区的对应关系;在记录区实时记录当前进程调用函数的运行 情况。其中,记录区包括函数的时间信息和函数的状态信息。所述运行情况 正是通过函数的时间信息和函数的状态信息这两方面信息来确定的。针对实时记录而言,实时记录具体包括根据设置在各函数入口的入记录 标识、设置在各函数出口的出记录标识、进程重新切换入的切换入记录标识、 进程切换出的切换出记录标识中的至少 一种标识,来进行实时记录。其中,入记录标识具体为入桩函数;出记录标识具体为出桩函数;切换入 记录标识和切换出记录标识具体采用进程切换钩子函数的形式。这里,采用进 程切换钩子函数形式的切换入记录标识时,此时的进程切换钩子函数实际上具 体为表征当前进程进入切换入状态的进程切换钩子函数;采用进程切换钩子 函数形式的切换出记录标识时,此时的进程切换钩子函数实际上具体为表征 当前进程进入切换出状态的进程切换钩子函数。由于记录函数的时间信息和对应的函数的状态信息,所采用的具体记录标 识,即入桩函数、出桩函数、进程切换钩子函数形式的切换入记录标识、进 程切换钩子函数形式的切换出记录标识有所不同,因此,之前分配记录区、建 立对应关系及查询记录区记录,和最终得到的实时记录情况也有所不同,以下 分四种情况分别阐述。第一种情况当捕获到入桩函数时的情况,此时入桩函数被当前进程调用。 当捕获到入桩函数时,实时记录之前还包括分配记录区、建立对应关系 及查询记录区记录的过程,具体为根据当前调用入桩函数的进程所在的进程 号和建立的对应关系,查询到与所述进程号相对应的记录区。实时记录进一步为将读取的当前时间戳确定为函数的时间信息并写入记 录区;同时,将当前函数进入被调用状态确定为函数的状态信息并写入记录区。 第二种情况当捕获到出桩函数时的情况,此时出桩函数被当前进程调用。 当捕获到出桩函数时,实时记录之前还包括分配记录区、建立对应关系及查询记录区记录的过程,具体为根据当前调用出桩函数的进程所在的进程 号和建立的对应关系,查询到与进程号相对应的记录区。实时记录进一步为将读取的当前时间戳确定为函数的时间信息并写入记 录区;同时,将当前函数退出被调用状态确定为函数的状态信息并写入记录区。第三种情况当捕获到进程切换钩子函数形式的切换入记录标识时的情况。当捕获到进程切换钩子函数形式的切换入记录标识时,实时记录之前还包 括分配记录区、建立对应关系及查询记录区记录的过程,具体为根据当前 切换入进程所在的进程号和建立的对应关系,查询到与进程号相对应的记录区。实时记录进一步为将读取的当前时间戳确定为函数的时间信息并写入记 录区;同时,将表征当前进程进入切换入状态的进程切换钩子函数,确定为函 数的状态信息并写入记录区。这里需要指出的是此时,记录区的本条记录中 包括表征当前进程进入切换入状态的进程切换钩子函数的时间信息、和函数 信息。第四种情况当捕获到进程切换钩子函数形式的切换出记录标识时的情况。 当捕获到进程切换钩子函数形式的切换出记录标识时,实时记录之前还包 括分配记录区、建立对应关系及查询记录区记录的过程,具体为根据当前 切换出进程所在的进程号和建立的对应关系,查询到与进程号相对应的记录区。 实时记录进一步为将读取的当前时间戳确定为函数的时间信息并写入记 录区;同时,将表征当前进程进入切换出状态的进程切换钩子函数,确定为函 数的状态信息并写入记录区。这里需要指出的是此时,记录区的本条记录中 包括表征当前进程进入切换出状态的进程切换钩子函数的时间信息、和函数 信息。这里,针对读取的时间戳而言,时间戳的获取来源有两种方式,第一种方 式当前时间戳采取绝对时间的格式时,通过读取处理器的计数器或硬件实现 的计数器获得当前时间戳;第二种方式当前时间戳采拟目对时间的格式时, 以标识形式存在;其中,将从实时时钟(RTC)或软件系统时钟获取的系统时 间添加为该标识,以获取当前时间戳。这里,为了避免记录的范围过大,导致系统中需开辟的记录区存储空间过 大,占用系统资源的问题,本发明进一步采取两种方式进行完善,第一种方式具体为在进4亍实时记录时,进一步根据对各个进程分别设置的记录开关、或 对所有进程设置的总记录开关的开/关状态,对记录的范围,或者称为记录粒度 进行控制。具体来说,可以对所有进程设置总开关,或者仅对当前进程设置开 关,看哪个进程中的函数需要统计,如果开关处于开状态,则对进程中的函数 进行统计,即为统计进程中的各个函数运行时间、各个函数占用率、各个函 数在运行时间内的运4亍状态、各个函数之间的相对调用关系等;如果开关处于 关状态,则不对进程中的函数进行统计。第二种方式具体为在进行实时记录 时,进一步根据对各个函数设置的函数嵌套层次范围,对记录的范围进行控制。 如果当前函数的函数嵌套层次在函数嵌套层次范围之内,则对当前函数进行统 计,否则不统计。这里,采集到的信息不同,基于该采集的信息统计函数的运行时间也有所 不同,以下分为两种情况分别阐述。第一种情况采集到的信息具体为通过入桩函数所实时记录的当前函数 的时间信息、和通过出桩函数所实时记录的当前函数的时间信息。此时,统计函数的运行时间具体为根据出桩函数所实时记录的当前函数 的时间信息,与入桩函数所实时记录的当前函数的时间信息之间的时间差值, 统计出当前函数的运行时间。第二种情况采集到的信息具体为通过入桩函数所实时记录的当前函数 的时间信息、和通过出桩函数所实时记录的当前函数的时间信息;以及表征当 前进程进入切换入状态的进程切换钩子函数所实时记录的当前函数的时间信 息、和表征当前进程进入切换出状态的进程切换钩子函数所实时记录的当前函 数的时间信息。此时,统计函数的运行时间具体包括以下几方面内容一、根据出桩函数所实时记录的当前函数的时间信息,与入桩函数所实时 记录的当前函数的时间信息之间的时间差值,获得第一时间差值。二、 根据表征当前进程进入切换入状态的进程切换钩子函数所实时记录的 当前函数的时间信息、与表征当前进程进入切换出状态的进程切换钩子函数所 实时记录的当前函数的时间信息之间的时间差值,获得第二时间差值。三、 才艮据所述第一时间差值与所述第二时间差值之间的差值,统计出当前 函数的运行时间。在计算中各个进程中每个函数的运行时间的基础上,该方法进一步包括 统计函数占用率,具体包括以下几方面内容一、 根据多个进程中当前函数的运行时间的总和,统计出当前函数在多个 进程中的总运行时间。二、 根据当前进程的当前函数的运行时间与所述总运行时间的比值,统计 出当前进程中的当前函数在多个进程中所占的函数占用率。也就是说,函数占 用率=各个函数的运行时间/函数的总运行时间。这里,本发明还可以根据采集的信息统计出各个函数之间的相对调用关系、 以及统计出在函数的运行时间内函数的运行状态。以下,对函数的运行状态的 统计方法进行阐述。采集的信息具体为通过入桩函数所实时记录的当前函数的时间信息、和 当前函数的状态信息;以及采集通过出桩函数所实时记录的当前函数的时间信 息、和当前函数的状态信息。统计函数的运行状态具体包括以下几方面内容一、 根据出桩函数所实时记录的当前函数的时间信息,与入桩函数所实时 记录的当前函数的时间信息之间的时间差值,统计出当前函数的运行时间。二、 结合当前函数的运行时间、入桩函数所实时记录的当前函数的状态信 息、和出桩函数所实时记录的当前函数的状态信息,统计出在当前函数的运行 时间内当前函数的运行状态。综上所述,本发明主要包括以下内容 本发明的方法可以包括以下步骤 第一步、编写入桩函数和出桩函数。这里,入桩函数在函数进入时被调用,出桩函数在函数退出时被调用;入 桩函数和出桩函数主要完成当前时间戳的记录和被调用函数地址的记录。被调 用函数地址通过函数名称来界定,实际上所釆用的不同函数名称隐含了函数的 状态信息。比如,函数名称为INFunctionl ()可表示Function 1进入被调用 的状态;函数名称为OUTFunctionl ()可表示Functionl退出被调用的状态。第二步、通过编译器在编译时自动给需要统计的函数增加入桩函数和出桩 函数。第三步、以进程为单位分配记录区,每个记录区统计当前进程调用函数的 运行记录。这里,进一步地,为了在嵌入式操作系统中更加精确地统计函数运行时间, 还需要编写进程切换钩子函数,当发生进程切换时,对于切换出和切换入的进 程分别在相应的记录区中记录当前切换时间戳。第四步、记录数据包括函数地址、当前时间戳等,时间戳可由可利用处理 器的计数器或硬件实现的计数器读取获得;也可添加从RTC或软件系统时钟获 取系统时间作为标识,需避免时间戳的重复。第五步、设置记录开关以过滤需要记录的函数。这里,由于对每个函数记录会导致过多的信息记录,因此可对所有进程设 置总记录开关,并在各进程也分别设置记录开关,以《更对记录粒度进行控制, 便于过滤需要记录的函数。还可以设置函数嵌套层次的范围,控制记录函数的 嵌套层次,以便于过滤需要记录的函数。第六步、中断服务函数运行时,使用当前进程的记录区,将函数进出记录 数据存放在进程记录区中。第七步、采集所有记录区中的数据,统计各函数运行时间并显示。总之,发明为克服采用现有技术无法精确地对嵌入式系统性能进行评估的 问题,在现有嵌入式软件系统中,以进程中的函数为统计单位,并通过统计各 个函数的运行时间、各个函数的运行状态、函数占用率、分析各个函数之间的 相对调用关系,可以更精确地对嵌入式系统性能进行评估。而且,本发明根据对统计结果的分析,能优化代码结构和运行效率,改善系统性能,并进一步提 高故障定位的准确度。综上所述,采用本发明,无需修改现有代码,利用GCC编译选项自动添加 桩函数,在各函数入口和出口处的桩函数统计进入和退出函数的时间点,通过 二者的时间差计算各函数实际运行时间,可以实现精确统计具体函数的运行时 间;分析频繁运行的函数,达到细粒度统计便于代码优化,改善系统性能;同 时,便于监测在某个时间段内的系统异常情况,对故障的定位提供了更加可靠 的方式,无需对已有代码进行修改。对于故障现场记录能提供相应精确的函数 运行时间的记录,从而提高了故障定位的准确度。以下举实例对本发明的内容进行阐述。实例l:进程号和记录区的索引对应关系。如图2所示为本发明进程号对应记录区的示意图。系统上电后,对每个进 程初始化相应的记录区,并建立进程号与记录区的索引的对应关系,当包括入 桩函数和出桩函数在内的桩函数,被当前进程调用时,桩函数能根据当前进程 的进程号索引到相对应的记录区。实例2:采用一个记录区中的记录,统计一个进程中的各个函数的运行时 间。此时仅仅包括入桩函数和出桩函数。如图3所示为一个进程调用函数的时间戳记录示意图。由于Tl时刻入桩 函数记录函数Functionl调用;T2时刻入桩函数记录函数Function2调用;T3 时刻出桩函数记录退出函数Function2的调用;T4时刻出桩函数记录退出函数 F皿ctionl的调用,因此,根据调用记录可以知道函数间调用关系如下void Function 1 ()Function2 ();因此,可以计算出函数Functionl的运行时间为T4-T1;函数Function2的 运行时间为T3-T2 实例3:采用一个记录区中的记录,统计一个进程中的各个函数的运行时 间。此时,除了包括入桩函数和出桩函数,还包括进程切换钩子函数。如图4所示,由于在该进程记录区中,区别于图2还记录了操作系统调度 当前进程切换出运行状态的时间点T3、和重新切换入运行状态的时间点T4, 因此,可以计算出函数Functionl的运行时间为(T6-T1) - ( T4-T3 ); Function2 的运4亍时间为(T5-T2) - (T4-T3)。实例4:采用两个记录区中的记录,统计两个进程中的各个函数的运行时 间,以及一个进程中函数在这两个进程中的函数占用率。如图5或图6所示,在两个进程记录区中分别记录了当前函数的调用时间 戳,由于在进程1中函数Functionl的运行时间为(T7-T1) - (T5-T3);函数 Function2的运行时间为(T6T2) - (T5-T3 );在进程2中,函数Function2的运 行时间为(T9-T4) - (T8-T5 );因此,将Function2在两个进程中的运行时间相 加可以计算出Function2函数的总运行时间。计算出每个函数的运行时间即可知道函数的占用率。同样根据上述方法也 可得出各函数间的相对调用关系。实例5:实现本发明方法时的初始化流程。该流程包括以下步骤 步骤201、以进程为单位分配记录区,并建立进程号与记录区的对应关系。 步骤202、设置记录开关和进程记录的函数嵌套层次范围。 这里,为避免记录区记录过多的函数调用记录或记录区消耗过快,可以分 别设置记录开关、或者函数嵌套层次范围;也可以同时设置记录开关和函数嵌 套层次范围。其中,设置需要记录的函数嵌套层次范围,需要记录的函数嵌套 层次范围,目的是只对函数嵌套层次数在特定范围内的函数进行统计,以控制 记录范围。步骤203、启动硬件计数器作为时间戳读取源;添加进程切换钩子函数, 使发生进程切换时在进入和退出运行态的进程对应的记录区中正确记录相应的 时间戳。实例6:只包括入桩函数和出桩函数时,函数时间戳记录的流程,该流程包括以下步骤步骤301、桩函数被调用;其中,入桩函数累加当前进程函数调用时的函 数嵌套层次数;出桩函数减少当前进程函数调用时的函数嵌套层次数。步骤302、查询当前进程所设置的记录开关的状态。当记录开关为开的状态时,表示当前函数需要记录在进程中的运行时间和运行状态。如果需要记录,并且进程中被调用函数的函数嵌套层次数在设定的函数嵌套层次范围内,则获取当前进程号;被调用的桩函数根据进程号获取对应的记录区,读取当前硬件计数器并获取当前时间戳;在记录区中记录当前时间戳和被调用函数的名称,这个名称即为地址信息,也可以理解为函数状态信 白当记录开关为关的状态时,表示当前函数不需要记录在进程中的运行时间和运行状态。实例7:包括进程切换钩子函数时,进程切换时间戳记录的流程,该流程 包括如果需要进程切换,则获取切入和切出进程号;才艮据切入和切出进程号 分别获取到对应的记录区;读取当前硬件计数器并获取当前时间戳;在记录区 中记录切入和切出时间戳,以及对应的进程切换钩子函数的名称。如果进程不 需要切换,则退出当前进程切换流程。一种嵌入式系统性能的评估系统,该系统包括采集单元、统计单元、和 评估单元。其中,采集单元,用于对函数的时间信息、和相对应的函数的状态 信息进行实时的连续釆集;将釆集结果发送给统计单元。统计单元,用于对采 集结果进行统计;将统计结果发送给评估单元。评估单元,用于才艮据统计结果 实现嵌入式系统的性能评估。这里,统计单元,进一步用于根据采集结果,统计出嵌入式系统的当前进 程中,各个函数的运行时间和各个函数的运行状态。评估单元,进一步用于将参数实现嵌入式系统实时运行状态的性能评估。这里,该系统还包括故障定位单元,用于将收到的各个函数的运行时间和各个函数的运行状态确定为故障定位指示参数;根据故障定位指示参数实现 嵌入式系统的故障定位。这里,该系统还包括记录区分配及关系建立单元,和实时记录单元。其 中,记录区分配及关系建立单元,用于以进程为单位分配记录区,并建立进程 号与记录区的对应关系;其中,记录区包括函数的时间信息和函数的状态信 息。实时记录单元,用于根据设置在各函数入口的入记录标识、设置在各函数 出口的出记录标识、进程重新切换入的切换入记录标识、进程切换出的切换出 记录标识中的至少一种标识,来进^f亍实时记录。这里,入记录标识具体为入桩函数;出记录标识具体为出桩函数;切换入 记录标识和切换出记录标识具体采用进程切换钩子函数的形式;该系统还包括 查询单元。其中,捕获到入桩函数的情况下,查询单元的一种具体实现为查询单元 用于根据当前调用入桩函数的进程所在的进程号和建立的对应关系,查询到与 所述进程号相对应的记录区。实时记录单元的一种具体实现为实时记录单元 进一步用于将读取的当前时间戳确定为函数的时间信息并写入记录区;同时, 将当前函数进入被调用状态确定为函数的状态信息并写入记录区。捕获到出桩函数的情况下,查询单元的一种具体实现为查询单元用于根 据当前调用出桩函数的进程所在的进程号和建立的对应关系,查询到与进程号 相对应的记录区。实时记录单元的一种具体实现为实时记录单元进一步用于 将读取的当前时间戳确定为函数的时间信息并写入记录区;同时,将当前函数 退出被调用状态确定为函数的状态信息并写入记录区。捕获到进程切换钩子函数形式的切换入记录标识的情况下,查询单元的一 种具体实现为查询单元用于根据当前切换入进程所在的进程号和建立的对应 关系,查询到与进程号相对应的记录区。实时记录单元的一种具体实现为实 时记录单元进一步用于将读取的当前时间戳确定为函数的时间信息并写入记录 区;同时,将表征当前进程进入切换入状态的进程切换钩子函数,确定为函数 的状态信息并写入记录区。捕获到进程切换钩子函数形式的切换出记录标识的情况下,查询单元的一种具体实现为查询单元用于才艮据当前切换出进程所在的进程号和建立的对应 关系,查询到与进程号相对应的记录区。实时记录单元的一种具体实现为实 时记录单元进一步用于将读取的当前时间戳确定为函数的时间信息并写入记录 区;同时,将表征当前进程ii^切换出状态的进程切换钩子函数,确定为函数 的状态信息并写入记录区。以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。
权利要求
1、一种嵌入式系统性能的评估方法,其特征在于,该方法包括对函数的时间信息、和相对应的函数的状态信息进行实时的连续采集;通过对采集结果统计的方式,实现嵌入式系统的性能评估。
2、 根据权利要求1所述的方法,其特征在于,根据所述采集结果,统计出 所述嵌入式系统的当前进程中,各个函数的运行时间和各个函数的运行状态并 确定为评估参数;根据所述评估参数实现嵌入式系统实时运行状态的性能评估。
3、 根据权利要求2所述的方法,其特征在于,将各个函数的运行时间和各 个函数的运行状态进一步确定为故障定位指示参数;根据所述故障定位指示参 数实现嵌入式系统的故障定位。
4、 根据权利要求2或3所述的方法,其特征在于,进行所述采集之前还包 括以进程为单位分配记录区,并建立进程号与记录区的对应关系;在所述记 录区实时记录当前进程调用函数的运行情况;其中,所述记录区包括所述函数的时间信息和所述函数的状态信息。
5、 根据权利要求4所述的方法,其特征在于,所述实时记录具体包括根 据设置在各函数入口的入记录标识、设置在各函数出口的出记录标识、进程重 新切换入的切换入记录标识、进程切换出的切换出记录标识中的至少一种标识, 来进行实时记录。
6、 根据权利要求5所述的方法,其特征在于,所述入记录标识具体为入桩 函数;所述出记录标识具体为出桩函数;所述切换入记录标识和切换出记录标 识具体采用进程切换钩子函数的形式;当捕获到所述入桩函数时,所述实时记录之前还包括根据当前调用所述 入桩函数的进程所在的进程号和建立的对应关系,查询到与所述进程号相对应 的记录区;所述实时记录进一步为将读取的当前时间戳确定为所述函数的时 间信息并写入记录区;同时,将当前函数进入被调用状态确定为所述函数的状 态信息并写入记录区;或者,当捕获到所述出桩函数时,所述实时记录之前还包括根据当前调用所述 出桩函数的进程所在的进程号和建立的对应关系,查询到与所述进程号相对应 的记录区;所述实时记录进一步为将读取的当前时间戳确定为所述函数的时 间信息并写入记录区;同时,将当前函数退出被调用状态确定为所述函数的状 态信息并写入记录区;或者,当捕获到进程切换钩子函数形式的所述切换入记录标识时,所述实时记录 之前还包括才艮据当前切换入进程所在的进程号和建立的对应关系,查询到与 所述进程号相对应的记录区;所述实时记录进一步为将读取的当前时间戳确 定为所述函数的时间信息并写入记录区;同时,将表征当前进程进入切换入状 态的进程切换钩子函数,确定为所述函数的状态信息并写入记录区;或者,当捕获到进程切换钩子函数形式的所述切换出记录标识时,所述实时记录 之前还包括才艮据当前切换出进程所在的进程号和建立的对应关系,查询到与 所述进程号相对应的记录区;所述实时记录进一步为将读取的当前时间戳确 定为所述函数的时间信息并写入记录区;同时,将表征当前进程进入切换出状 态的进程切换钩子函数,确定为所述函数的状态信息并写入记录区。
7、 根据权利要求6所述的方法,其特征在于,所述当前时间戳采取绝对时 间的格式时,通过读取处理器的计数器或硬件实现的计数器获得;或者,所述当前时间戳采M目对时间的格式时,以标识形式存在;其中,将从实 时时钟或软件系统时4中获取的系统时间添加为所述标识。
8、 根据权利要求6所述的方法,其特征在于,在进行所述实时记录时,进 一步根据对各个进程分别设置的记录开关、或对所有进程设置的总记录开关的开/关状态,对记录的范围进行控制;和/或根据对各个函数设置的函数嵌套层次范围,对记录的范围进行控制。
9、 根据权利要求6所述的方法,其特征在于,所述采集具体为采集通过 入桩函数所实时记录的当前函数的时间信息、和通过出桩函数所实时记录的当 前函数的时间信息;所述统计函数的运行时间具体为根据出桩函数所实时记录的当前函数的时间信息,与入桩函数所实时记录的当前函数的时间信息之间的时间差值,统计出当前函数的运行时间;或者,所述采集具体为釆集通过入桩函数所实时记录的当前函数的时间 信息、和通过出桩函数所实时记录的当前函数的时间信息;以及采集表征当前 进程进入切换入状态的进程切换钩子函数所实时记录的当前函数的时间信息、 和表征当前进程进入切换出状态的进程切换钩子函数所实时记录的当前函数的 时间信息;所述统计函数的运行时间具体为根据出桩函数所实时记录的当前函数的 时间信息,与入桩函数所实时记录的当前函数的时间信息之间的时间差值,获 得第一时间差值;根据表征当前进程进入切换入状态的进程切换钩子函数所实 时记录的当前函数的时间信息、与表征当前进程进入切换出状态的进程切换钩 子函数所实时记录的当前函数的时间信息之间的时间差值,获得第二时间差值; 根据所述第一时间差值与所述第二时间差值之间的差值,统计出当前函数的运 行时间。
10、 根据权利要求9所述的方法,其特征在于,该方法进一步包括统计 函数占用率,具体为根据多个进程中所述当前函数的运行时间的总和,统计 出当前函数在多个进程中的总运行时间;根据当前进程的所述当前函数的运行 时间与所述总运行时间的比值,统计出当前进程中的当前函数在多个进程中所 占的函数占用率。
11、 根据权利要求6所述的方法,其特征在于,所述采集具体为采集通 过入桩函数所实时记录的当前函数的时间信息、和当前函数的状态信息;以及 采集通过出桩函数所实时记录的当前函数的时间信息、和当前函数的状态信息;所述统计函数的运行状态具体为根据所述出桩函数所实时记录的当前函 数的时间信息,与所述入桩函数所实时记录的当前函数的时间信息之间的时间 差值,统计出当前函数的运行时间;结合所述当前函数的运行时间、所述入桩 函数所实时记录的当前函数的状态信息、和所述出桩函数所实时记录的当前函 数的状态信息,统计出在当前函数的运行时间内当前函数的运行状态。
12、 一种嵌入式系统性能的评估系统,其特征在于,该系统包括采集单 元、统计单元、和评估单元;其中,采集单元,用于对函数的时间信息、和相对应的函数的状态信息进行实时 的连续采集;将采集结果发送给所述统计单元;统计单元,用于对所述采集结果进行统计;将统计结果发送给所述评估单元;评估单元,用于才艮据所述统计结果实现嵌入式系统的性能评估。
13、 根据权利要求12所述的系统,其特征在于,所述统计单元,进一步用 于根据所述采集结果,统计出所述嵌入式系统的当前进程中,各个函数的运行 时间和各个函数的运行状态;所述评估单元,进一步用于将收到的各个函数的运行时间和各个函数的运 行状态确定为评估参数;才艮据所述评估参数实现嵌入式系统实时运行状态的性 能评估。
14、 根据权利要求13所述的系统,其特征在于,该系统还包括故障定位 单元,用于将收到的各个函数的运行时间和各个函数的运行状态确定为故障定 位指示参数;根据所述故障定位指示参数实现嵌入式系统的故障定位。
15、 根据权利要求13或14所述的系统,其特征在于,该系统还包括记 录区分配及关系建立单元,和实时记录单元;其中,记录区分配及关系建立单元,用于以进程为单位分配记录区,并建立进程 号与记录区的对应关系;其中,所述记录区包括所述函数的时间信息和所述 函数的状态信息;实时记录单元,用于根据设置在各函数入口的入记录标识、设置在各函数 出口的出记录标识、进程重新切换入的切换入记录标识、进程切换出的切换出 记录标识中的至少一种标识,来进行实时记录。
16、 根据权利要求15所述的系统,其特征在于,所述入记录标识具体为入 桩函数;所述出记录标识具体为出桩函数;所述切换入记录标识和切换出记录 标识具体采用进程切换钩子函数的形式;该系统还包括查询单元;其中,捕获到所述入桩函数的情况下,所述查询单元,用于根据当前调用所述入 桩函数的进程所在的进程号和建立的对应关系,查询到与所述进程号相对应的记录区;所述实时记录单元,进一步用于将读取的当前时间戳确定为所述函数 的时间信息并写入记录区;同时,将当前函数进入被调用状态确定为所述函数 的状态信息并写入记录区;或者,捕获到所述出桩函数的情况下,所述查询单元,用于根据当前调用所述出 桩函数的进程所在的进程号和建立的对应关系,查询到与所述进程号相对应的 记录区;所述实时记录单元,进一步用于将读取的当前时间戳确定为所述函数 的时间信息并写入记录区;同时,将当前函数退出被调用状态确定为所述函数 的状态信息并写入记录区;或者,捕获到进程切换钩子函数形式的所述切换入记录标识的情况下,所述查询 单元,用于才艮据当前切换入进程所在的进程号和建立的对应关系,查询到与所 述进程号相对应的记录区;所述实时记录单元,进一步用于将读取的当前时间 戳确定为所述函数的时间信息并写入记录区;同时,将表征当前进程进入切换 入状态的进程切换钩子函数,确定为所述函数的状态信息并写入记录区;或者,捕获到进程切换钩子函数形式的所述切换出记录标识的情况下,所述查询 单元,用于根据当前切换出进程所在的进程号和建立的对应关系,查询到与所 述进程号相对应的记录区;所述实时记录单元,进一步用于将读取的当前时间 戳确定为所述函数的时间信息并写入记录区;同时,将表征当前进程进入切换 出状态的进程切换钩子函数,确定为所述函数的状态信息并写入记录区。
全文摘要
本发明公开了一种嵌入式系统性能的评估方法,该方法包括对函数的时间信息、和相对应的函数的状态信息进行实时的连续采集;通过对采集结果统计的方式,实现嵌入式系统的性能评估。本发明还公开了一种嵌入式系统性能的评估系统,该系统中采集单元,用于对函数的时间信息、和相对应的函数的状态信息进行实时的连续采集;将采集结果发送给统计单元;统计单元,用于对所述采集结果进行统计;将统计结果发送给评估单元;评估单元,用于根据统计结果实现嵌入式系统的性能评估。采用本发明的方法及系统,能精确地对嵌入式系统性能进行评估。
文档编号G06F11/34GK101620562SQ200910090828
公开日2010年1月6日 申请日期2009年8月7日 优先权日2009年8月7日
发明者王治春, 理 肖, 阳 赵 申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1