《嵌入式linux操作系统任务性能测试研究.pdf》由会员分享,可在线阅读,更多相关《嵌入式linux操作系统任务性能测试研究.pdf(4页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、I 辉等:嵌入式l i n u x 操锋系统任务性能测试研究嵌入式l i n u x 操作系统任务性能测试研究R e s e a r c ho fT a s kP e r f o r m a n c eT e s t i n gU n d e rt h eE m b e d d e dL i n u xO p e r a t i o nS y s t e m王辉王毅刚冯亚楠(军械工程学院维修工程研究所,河北石家庄0 5 0 0 0 3)摘要:在嵌入式系统软件测试中,由于嵌入式系统具有内存资源不丰富、J O 通道少、实对性等特征,使得嵌入式软件测试难度较大;尤其是针对系统中任务性能等时间响应的测
2、试。仅仅通过软件插桩,更难以体现运行环境的真实性。本文研究了利用软件插桩的原理方法,并通过硬件采集数据的方式,针对嵌入式U n u 操作系统中任务性能的测试是行之有效的。关键词:插桩;嵌入式系统;性能;总线;进程调度l 前言所谓实时性,即必须满足时间约束的特性。实时软件的处理速度并不一定非常快,重要的是需要准时和及肘,实时软件的时间约束主要表现为软件或其中的进程的时间约束。进程也叫做任务,在多进程的操作系统中,进程调度是一个全局性、关键性的问题,它对系统的总体设计、系统的实现、功能设置以及各个方面的性能都有着决定性的影响。任务性能测试的对象是操作系统中任务上下文切换时间、任务切换时间、任务抢占
3、时间、中断延迟时间、中断响应时间等。2 嵌入式软件测试方法嵌入式软件测试与普通软件测试不同的是嵌入式软件的测试方法。嵌入式系统的开发模式是基于h o s t t a r g e t 的方式,也就是主机宿主机的方式。这决定了它的测试方式。嵌入式软件测试中,常常要在基于目标机的测试和基于宿主机的测试之间做出折衷。基于目标机的测试要消耗较多的经费和时间,而基于宿主机的测试代价较小,但毕竟是在全模拟的环境中进行的。低级别的软件集成在宿主机平台上完成有很大优势,级别越高,基层越依赖于目标环境。确认测试最终也必须在目标环境中进行,因为系统的确认必须在真实系统之下完成,不能在宿主机环境下模拟。操作系统下的任
4、务性能测试必须是建立在真实的目标系统运行环境下的测试,而且很大程度上,系统还要和外部环境频繁的交互。在目标系统上进行的交叉测试,行之有效的方式是找到一种合适的插桩技术和数据采集的手段。2 1 插桩技术插桩,是借助向被测程序中插入操作来实现测试目的的方法,通常对测试工具的分类包括纯软件测试工具和纯硬件测试工具,纯软件测试工具对源程序进行插桩对程序的运行造成一定的影响,通过插桩造成了代码膨胀,源程序和桩模块都要占用处理器,以及系统其它资源。并且,系统还要解决插桩数据的收集和输出,结果导致系统不能够在真实环境下运行,影响到系统的性能。在实时系统中直接会导致系统错误。纯硬件的测试工具一般用在系统的硬件
5、开发阶段,例如逻辑分析仪和仿真器。逻辑分析仪是基于总线信号采样的方式,并且只能工作在关闭缓存的状态下,否则代码可能只送到缓存,而并没有被命中。纯硬件工具的采样方式造成数据丢失,而且几乎无法进行覆盖率等分析。汲取纯软件插桩技术的代码膨胀问题,和纯硬件测试工具的数据采集方式。我们可以采用硬件插桩技术进行测试数据的分析。硬件插桩技术,就是利用纯软件的插桩技术给源代码做影响系统最小的数据标记,2 2 数据采集硬件辅助的数据采集,是通过在系统的物理地址空间预先定义好一个空闲的地址。源代码的硬件插桩就是在程序运行到标记点的时候,向指定的这个物理地址发送这一标记数据。数据采集部件只当做是目标系统的外部只写设
6、备。当数据发送到总线上的时候,有写信号电平去触发采集设备。目标系统只完成数据的发送,而不用判断发送的状态。数据采集部件会自动实时进行采集。如图1 所示:圈l 总线数据采集示意图3 任务性能测试为了获取精确的任务性能分析,必须获取进程的切换信息。获得进程切换信息,使用操作系统下的任务钩子函数插桩。任务钩子函数,是当任务切换、任务创建或者任务删除的时候从操作系统中需要调用的一些功能函唧回哥万方数据计量与溺试技术溯1 0 年第3 7 卷第1 期数。这些钩子函数能够及时向系统总线发送代表特定任务事件的数据标记到特定物理地址。这些任务事件都发生在任务调度的时机。3 1 进程调度时机要获取任务性能的事件信
7、息,还必须能够找到任务切换、创建和删除发生时的进程调度时机。L i n u x 的进程调度是由名为s c h e d u l e()的调度程序完成的,执行该函数的过程就是进程调度的过程。在系统中,进程调度函数s c h e d u l e()的执行频率很高,从总体上看可以分为两种情况,一是在某些系统调用函数中直接调用s c h e d u l e(),另一种是系统在运行过程中通过检查调度标志而执行该函数。L i n u x 主要在下列时机下执行进程调度:(1)进程状态变化时一个进程通常处于就绪、运行或等待状态之一。当一个进程从运行状态进人等待状态或准备退出时,另外一个进程就应当占有C P U,
8、此时就会发生进程切换。(2)当前进程的时间片用完时当前进程的时间片用完时,调度程序就要检查是否需要调度,当调度发生时,就会产生进程切换。(3)设备驱动程序执行时当设备驱动程序调用长而重复的任务时,直接调用调度程序。在每次反复循环中,驱动程序都要检查调度标志,如果必要,则调用调度程序主动放弃C P U。(4)进程从中断、异常及系统调用返回到用户态时不管是从中断、异常还是系统调用返回,最终都检测调度标志,如果必要,则调用调度程序进行进程切换。3 2 实时性能测量指标衡量嵌入式操作系统任务实时性的主要性能指标参数有任务上下文切换时间、任务抢占时间、中断响应时间、任务响应时间、任务创建删除时间等。嵌入
9、式实时操作系统任务的时间性能指标包括各种系统上下文切换时间、任务切换时间、任务抢占时问、中断延迟时间、中断响应时间等。本文只研究在应用中比较关心的任务切换时间、中断响应时间等几种。(1)任务切换时间在多任务系统中,上下文切换时间包括保存当前运行任务上下文的时间、选择下一个任务的调度时间以及将要运行任务的上下文的恢复时间。通过计算进程创建和退出的时间差,可以得到任务切换的时间,如果发送了任务退出数据标签,但是同一任务再次被调度,这将给测试系统一个混乱状态;同理,如果同一任务中,一个创建任务的标签发生在一个进入或者任务退出标签之后,再次处于混乱状态。另一个错误放置标签是,同一任务中存在两个连续的退
10、出,并且对于这一任务没有一个入口。作为一个例子,设想这个环节:一个较低优先级的任务A(t a s k A)处于一个临界区域,同时一个较高优先级任务(t a s k B)等待进入临界区。第二个任务等待标志临界区空闲的一个变量。在操作系统任务调度中,t a s k A 离开临界区时设置变量为“真”,正如:T a s k A 离开在当前运行队列将任务A 放置在任务B 之后,因为它的较低优先级。查看队列中下一个将被调度的任务任务B 是下一个进入任务B做任务分析时,需要用任务钩子函数:T a s k A 离开t a s k e x i t h o o k(t a s k A i n f o)在当前运行队
11、列将任务A 放置在任务B 之后,因为它的较低优先级。查看队列中下一个将被调度的任务任务B 是下一个t a s k e n t e r h o o k(t a s k B i n f 0 1进入任务B(2)中断响应时间中断响应测试时间从中断产生到中断处理任务开始执行第一条指令所持续的时间间隔。从时间构成上有:提交中断申请、执行中断服务例程、以及任务调度时间。硬件中断区别于系统的软中断,一般是由外部事件的电平信号触发硬件中断机制产生的,中断仲裁部件处理完毕后提交给系统处理。考虑到系统跟外部接口交互频繁,以及激励信号的时间序列比较严格,可以通过一些半仿真黑盒测试系统,例如t e s t q u e
12、s t 编写测试脚本,通过测试工具对系统当前状态做出判断,在系统运行到用户可预料、可设定的状态向系统重复申请中断,实现多次测量。软件测试中,脚本技术的引入是实现软件测试自动化技术的有效手段。4 性能优化性能分析能记录分析程序中每个函数的最大运行时间,最小运行时间,总的运行时间,以及运行次数,或者任意两点间的运行时间的统计。性能优化就是找到系统处理中的瓶颈以及消除瓶颈的过程,性能优化其实是对操作系统各子系统达到一种平衡的定义,这些子系统包括了:C P U、内存、I O、网络等。多数的应用程序的性能提高归结为提升C P U 的利用率、以及I 0 操作的效率。L O 操作一般都是高负荷的内存使用以及
13、存储系统,I O 操作实质是等待处理器处理完数据,进行的数据传递操作。C P U 利用率中,一般都是高负荷的C P U 占用。C P U 占用的实质是I O 传递的数据在C P U 中进行运算的一系列过程。对于C P U 操作,常用的提升性能的方法是优化计算和流程控制代码,如相乘在一些情况下可以通过移位操万方数据i 辉等:嵌入式矗n 暇操作系统任务性能测试研究作替换,因为位操作比乘法操作速度快,通常在某种语言中都会讲到程序的优化,就属于优化C P U 操作速度。对于I o 操作,如果I o 操作过于频繁而成为系统瓶颈,可以清除一些不必要的I O 操作,也可以更换速度更快的I O设备来提高速度。
14、程序任务性能的提升,主要得益于让C P U 和I O 设备能并行操作,让C P U 和I o 设备并行操作的方法是I o复用,基本的思想是需要进行I o 操作时,只是发送一个I o 操作请求给I o 设备而不必等待I o 完成,C P U 操作可以继续进行,I o 操作完成后通过某种方法如事件通知程序,然后程序做相应的处理。通过任务钩子函数获取到进程的C P U 占用时间、L 0 操作,以及中断响应时间的状态时机,给任务性能的提升提供了定量的度量依据。直观的给出C P U 占用、和L 0 操作的时间占用比例,能够最大限度的掌握I 0 资源。5 结论在嵌入式系统中,程序的性能通过获取任务事件有关
15、的数据,说明执行时间是如何消耗的,是什么时候消耗的,以及每个例程所用的时间。根据这些数据,确定程序执行时间,从而可以决定如何优化软件,获得更好的时间性能。对于大多数应用来说,大部分执行时间用在相对少量的代码上,费时的代码估计占所有软件总量的5。2 0。性能分析不仅能指出哪些例程花费时间,而且与调试工具联合使用可以引导开发人员查看需要优化的特定函数,性能分析工具还可以引导开发人员发现在系统调用中存在的锗误以及程序结构上的缺陷。6 结束语本文从插桩技术选取、数据采集方式、操作系统事件时机选择,以及任务性能分析方法等几个方面论述嵌入式系统任务性能测试的主要面临问题。既避免了纯软件工具,又引用了硬件的
16、数据采集手段,使得任务性能的测试高效可靠。参考文献 1 于以序,何艳敏等实时嵌入式软件测试研究 J 中国测试技术2 0 0 4 9(3 0):5 2 康一梅等嵌入式软件测试 M 北京:机械工业出版社2 0 0 8 6:1 9 1 2 0 6 3 李跃飞,郭君红等飞行控制软件测试中的插桩技术 J 北京航空航天大学学报2 0 0 9 5(3 5)4 徐德民操作系统原理1,i r n 篇 M 北京:国防工业出版社,2 0 0 5 5 韩立宏嵌入式实时操作系统性能测试方法 J 指挥控制与仿真,2 0 0 8(4):9 8 1 0 1 6 罗蕾嵌入式实时操作系统及应用开发 M 北京:北京航空航天大学出版
17、社,2 0 t Y 3 7 吕琳时嵌入式软件测试研究与应用 J 电子科技2 0 0 6 8(2 0 3)8 杜延,刘琮越嵌入式实时系统软件测试实践 J 嵌入式系统应用2 0 0 6(9)作者简介:王辉,男,硕士。工作单位:军械工程学院维修工程研究所。通讯地址:嗍石家庄市和平西路9 r 7 号六系。王毅刚。军械工程学院维修工程研究所(石家庄0 5 0 0 0 3)。冯亚楠,石家庄信息工程职业学院(石家庄0 5 0 0 0 3)。收稿时间:2 0 1 0 一一0 8(上接第2 2 页)(2)降压过程三种读数方法示值误差走势图见图2。髟多夕R 每鼍b1R4P 一图2从图1 和图2 可以看到,反校验法
18、的示值误差与理论示值误差十分接近,而直接读数法的示值误差与理论示值误差相差较大,而且符合相反。可以发现,该表的值相对于标准值偏大,而如果用直接读数法,则该表的值要比标准值偏小,这时如果对该被检表进行调整维修,则会对被检表的示值进行调大处理,结果示值误差越来越大,从而影响了表的性能。4 结速语从误差分析和实例可以看到,检定时如果直接填入数据而不加处理,这不仅与检定规程J J G 5 2 1 9 9 9 相违背,因为严格上讲被检表的示值不能作为标准压力,而且示值、误差与理论示值、误差数据相差较大。反校验法只需对数据进行简单的处理,它的示值、误差与理论示值、误差十分接近。参考文献 1 叶德培计量基础
19、知识 M 中国人民解放军总装电子信息部技术基础局1 9 9 9 2 海军航空工程学院军事计量教研室力学计量技术海军航空工程学院。2 0 0 6 3 j J C 5 2 1 9 9 9 弹簧式一般压力表、压力真空表和真空表计量检定规程国家质量技术监督局。1 9 9 9 4 陈振林军事计量技术海军航空工程学院。2 0 0 7 作者简介:尧礼辉,男,工程师。工作单位:9 2 6 0 1 部队。通讯地址:5 2 4 0 0 9广东省湛江市海滨东一路7 号。何共建,张胜字,9 2 6 0 1 部队(湛江5 2 4 0 0 9)。收稿时问:2 0 1 0 0 4 2 7l8642O24681O00OO0O
20、0O0OOOOO0OO一一一一一万方数据嵌入式linux操作系统任务性能测试研究嵌入式linux操作系统任务性能测试研究作者:王辉,王毅刚,冯亚楠作者单位:军械工程学院维修工程研究所,河北,石家庄,050003刊名:计量与测试技术英文刊名:METROLOGY&MEASUREMENT TECHNIQUE年,卷(期):2010(11)参考文献(8条)参考文献(8条)1.杜延;刘琮越 嵌入式实时系统软件测试实践 2006(09)2.吕琳 时嵌入式软件测试研究与应用 2006(203)3.罗蕾 嵌入式实时操作系统及应用开发 20054.韩立宏 嵌入式实时操作系统性能测试方法期刊论文-指挥控制与仿真 2008(04)5.徐德民 操作系统原理Linux篇 20056.李跃飞;郭君红 飞行控制软件测试中的插桩技术期刊论文-北京航空航天大学学报 2009(35)7.康一梅 嵌入式软件测试 20088.于以序;何艳敏 实时嵌入式软件测试研究期刊论文-中国测试技术 2004(30)本文链接:http:/