APP下载

RALMON:一种资源敏感的轻量级感知节点软件运行时监测框架

2015-02-27马峻岩

关键词:快照级别实例

马峻岩,刘 琴,孟 强

(1.长安大学 信息工程学院, 陕西 西安 710064;2.西安飞行自动控制研究所, 陕西 西安 710065)



·信息科学·

RALMON:一种资源敏感的轻量级感知节点软件运行时监测框架

马峻岩1,刘 琴2,孟 强1

(1.长安大学 信息工程学院, 陕西 西安 710064;2.西安飞行自动控制研究所, 陕西 西安 710065)

软件监测是评价软件行为是否符合预期的重要手段,也是后期实施在线调整和软件演化的基础。在有限的资源与长期软件运行监测需求之间进行合理的平衡是感知节点软件监测的关键。针对现有软件监测工具缺乏对资源开销管理的问题,提出了一个名为RALMON感知节点软件运行时监测框架,该框架向用户提供了一种资源敏感的软件监测机制,实现了在资源高度受限节点上对监测资源开销的精细控制。在RALMON实现的基础上,研究了RALMON的存储与计算开销,最后通过一个典型应用实例验证了RALMON的有效性。

传感器网络;感知节点软件;资源敏感;运行时监测

为了获取物理世界的信息,传感器网络通常被部署在无人看护的户外等环境较为恶劣的区域。这种与物理世界紧密偶合的特性,使得感知节点软件的功能和行为在很大程度上会受到其所处部署环境的影响。然而,部署前对软件进行的各种测试仅能对实际部署后系统的正确性与各项性能参数做出一个大致的评估,那些部署后出现的问题往往无法在部署前发现。能否快速有效地对这些问题进行检测与诊断,是保障传感器网络持续高效运行的关键[1]。

软件运行时监测技术通过收集软件运行过程中产生内部状态信息,为评价软件是否良好运行提供重要依据。然而,由于感知节点资源高度受限,现有软件监测技术与框架并不适用于传感器网络。传感器网络状态监测可分为2类:网络级状态监测和节点级监测。本文研究的是节点级的状态监测技术。

监测信息与资源开销之间存在着根本的矛盾,对于资源高度受限的传感器网络来说,需要在足够的监测信息和有限的系统资源之间寻求一个合适的平衡点。现有节点软件运行时监测研究,主要关注如何在实施监测的同时,尽可能减少由监测产生的资源开销,但用户无法对这些监测产生的资源开销进行精细地控制[2-6]。本文提出一种名为RALMON (resource-aware lightweight runtime monitoring)感知节点软件运行时监测框架,该框架使用户可以在足够的监测信息和有限的资源开销之间进行有效的权衡与精细的控制。

1 系统设计

RALMON的系统结构如图1所示,RALMON主要由以下4部分组成:

图1 RALMON系统结构图Fig.1 The architecture of RALMON

1)监测描述语言MDL(monitoring description language)。MDL通过监测对象MO(monitoring objects)、ML监测级别(monitoring levels)和监测方案MS(monitoring schemes)3部分要素,全面刻画了用户对系统的监测需求。

2)MDL代码生成和交织工具。其主要实现MDL文件的解析、相关监测级别实例代码生成、监测调度器配置信息生成、监测级别实例解码表生成、以及监测代码到目标源代码的AOP交织。

3)RALMON运行时环境。运行时环境主要由监测级别实例、监测方案调度实例以及监测调度器3部分组成。监测调度器主要工作是根据监测方案和监测资源的使用情况,自适应地调整不同监测对象的监测级别,并对相关快照进行压缩,实现指定资源开销下的最佳监测。

4)监测分析工具。在收集到调度器产生的压缩快照后,用户在本地计算机上使用MDL代码生成的监测级别实例解码表和交织工具产生的分析工具对不同监测级别的快照进行解压,得到系统运行记录。

2 系统实现

本文在Contiki[7]操作系统上对RALMON进行了实现,其主要包括MDL、代码生成和交织工具以及监测调度器3部分。

2.1 MDL监测需求描述语言

MDL包含监测对象声明、监测级别定义和监测方案描述3部分。

2.1.1 监测对象声明 监测对象被定义是一个由事件E和一组程序变量V构成的二元组(E,V),其含义是每当事件E发生时系统会产生一条日志记录,其内容包括事件发生的时间戳和这组程序变量V的快照。监测对象通过关键字指定不同类型的事件,关键字后面给出了相关事件的参数指明变量所涉及的文件名及函数名,以及需要记录的变量名列表。例如,下面代码中第1行代码表示要监测tracking.c文件中sampleProc函数中的mag变量的改变,第2行代码表示要监测report.c文件中update函数每次返回前变量x和变量y的值:

1 func-var tracking.c:sampleProc:mag

2 func-footer report.c:update:xy

2.1.2 监测级别定义 监测级别是用户为了减小监测对象生成记录而定义的压缩函数。用户可以为每个监测对象定义一组监测级别,每一个监测级别对应一个有损压缩函数且有唯一的级别编号,级别编号越大其资源开销也越大。RALMON中规定对于同一组监测级别,监测和资源开销应随着级别编号增加而单调递增,并且这些监测级别应构成一个管道,即级别k的输出应作为级别k-1的输入。利用RALMON提供的操作符可以实现监测级别的定义。RALMON提供的操作符包括:无压缩操作符,条件筛选操作符,位掩码操作符,数值再映射操作符。例如,下面代码为mag对象定义了2个监测级别,不同级别定义之间用空行分隔。级别2使用log操作符输出变量mag的原始快照(第2行);级别1使用filter压缩符将变量所有不大于200的记录丢弃,而将剩下的记录输出保存(第4行到第5行):

1 mlevels for mag {

2 log mag

3

4 filter mag> 200

5 log mag

6}

2.1.3 监测方案描述 监测方案指定了如何为监测对象选取合适的监测级别,从而保证监测资源开销在预算之内。监测方案包括用户期望的资源预算,监测对象的优先级,以及同一监测对象不同快照之间的优先级策略。当给定资源预算无法保证所有监测对象为最高监测级别时,监测调度器会依据这些策略减少相应监测对象快照的监测级别。例如,下面的监测方案的实例中,通过budget关键字定义用于监测的带宽预算不超过60Bytes/s(第2行),指定mag和eTout监测对象的优先级分别为1和2(第3行和第4行):

1 mscheme wsn-tracking {

2 budget=60 BPS

3 mag@priority=1

4 eTout@priority=2

5}

2.2 代码生成和交织工具

代码生成和交织工具将应用程序源代码和包含了监测对象、监测级别以及监测方案的.mdl文件作为输入,完成代码生成和应用程序插装工作,主要工作包括:为每个监测对象分配一个唯一的标识符,用于区分不同对象产生的日志记录;根据.mdl文件中监测对象的定义对程序源代码进行插装,在相应位置创建监测对象快照记录;根据监测级别定义,生成用于压缩快照记录的代码;从监测方案中提取各项参数,生成调度器的运行配置信息;生成监测分析工具需要的监测级别实例解码表。

交织通过CIL (C intermediate language)[8]完成代码的插装。利用CIL可以将C程序转换成一种中间表示形式,通过对该中间表示形式的操作,可以实现代码的分析与转换,例如在某一变量赋值语句后插入特定代码。

2.3 监测调度器

监测调度器是RALMON中用来为监测对象动态选择监测级别的组件,其目的是保证系统监测开销不超过规定的资源(带宽、能量或者存储)预算。调度器维护一个固定长度的缓存,新产生的记录会被添加到缓存尾部。当向缓存中添加一条新记录时,新记录的监测级别被设置为相应监测对象当前的级别。如果缓存剩余存储空间不足,则调度器会将缓存中优先级最低记录的监测级别减少,直到缓存中产生足够的空间用于保存新的记录。当记录的监测级别减至零时,记录从缓存中删除。记录从监测级别k降低到k-1,只需将k-1级别对应的压缩函数作用于该记录即可。如果与新记录相关的对象是最低优先级的监测对象,且该对象的监测级别为1,调度器会依据相关策略来替换缓存中的记录。

3 实例分析

通过将RALMON应用于一个目标跟踪程序的实例,对RALMON设计的有效性进行验证。实验选择TelosB作为传感器节点硬件平台,节点运行Contiki操作系统。

3.1 目标跟踪应用的监测描述

本文实现了一个简化的单目标跟踪应用,实验中目标节点周期性地广播,跟踪节点利用这些广播对目标节点进行检测。跟踪节点将检测到的目标信息发送给动态选举出的一个中心节点,中心节点对发来的跟踪信息进行融合并将融合得到的目标位置上报基站。

表1 目标跟踪应用监测对象Tab.1 Monitoring objects in target tracking application

监测描述中包含了4个监测对象如表1所示,包括跟踪节点的状态变量mstate,目标检测函数中的传感器读数局部变量mag,选举定时器回调函数eTout调用,位置计算中追踪点tpleader快照(包含总消息数,传感器读数平均值,融合目标节点坐标值)。监测方案中指定带宽预算为4 Byte/s。

3.2 存储开销分析

本文使用msp430-gcc交叉编译器对RALMON的RAM和ROM存储开销进行了研究。编译器版本号为3.2,编译时开启-Os优化选项。

RAM比源基准应用程序增加了210Byte。RALMON的RAM开销和3部分相关:RALMON框架,监测缓存以及监测对象。其中,RALMON框架开销占70Byte的RAM,由于采用了双缓存技术当选用50Byte缓存时需要消耗100Byte的RAM,最后每个监测对象大约需要消耗10Byte的RAM。

ROM比源基准应用程序增加了4 298Byte。RALMON的ROM开销和3部分相关:RALMON框架,监测对象的监测级别代码,每个记录点的插装代码。其中,RALMON框架占2 608Byte,监测级别代码和具体级别的定义相关,2字节整型变量每个记录点插装代码约占40Byte的ROM开销。

本应用实例中RALMON的RAM开销约占节点总存储能力的2%(TelosB的RAM总容量为10kb),ROM开销约占节点总存储能力的8%(TelosB的ROM总容量为48kb),应用实例数据表明RALMON适用于存储受限的传感器节点。

3.3 运行时开销分析

实验使用具有指令级精度的COOJA模拟器进行RALMON运行时开销的分析。为了消除其他因素对实验结果的影响,实验仅考虑了一个跟踪节点的情况。实验总共持续300s,目标在第50s出现并保持静止,第250s时目标消失。表2给出不同缓存情况下调度开销平均指令周期数和RALMON的总开销占比。可以看出调度开销随缓存不同而变化,较小的缓存相对开销较大,其主要原因是调度器需要做出更多的调整以获得足够的空间保存新产生的记录。此外,RALMON产生的额外运行开销占总开销比例均小于1%,因此RALMON在运行时方面的开销适用于现有的传感器节点。

表2 不同缓存下RALMON开销Tab.2 Runtime overhead of RALMON over buffer sizes

3.4 精度和带宽使用分析

对于状态监测来说,监测级别越高则监测越精确。图2和图3分别给出缓存为12Byte和24Byte时,4个监测对象监测级别随时间变化的情况。可以看出,在50s附近,监测对象mag的监测级别因高优先级监测对象记录(mstate,eTout等)产生而降低。此外,缓存较大时,高优先级监测对象记录的监测级别更高,这是因为随着缓存的增加调度器在调整记录监测级别时可以有更多的选择。因此较大的缓存会产生更加精确的观测结果,但在相同带宽约束下较大的缓存会产生更长的监测延迟。

图2 缓存为12 Bytes监测级别的调整Fig.2 Adjustment of monitoring levels for 12 Bytes buffer

图3 缓存为24Bytes监测级别的调整Fig.3 Adjustment of monitoring levels for 24 Bytes buffer

程序的原始带宽为5.53Byte/s,带宽预算为4Byte/s情况下,在缓存为48Byte、24Byte和12Byte时, 经RALMON调控后的带宽分别为3.5Byte/s,3.24Byte/s和3.94Byte/s。因此,实验表明RALMON可以通过调整不同优先级监测对象的监测级别,将监测资源开销有效地控制在预算之内。

4 结 语

本文提出了一种RALMON软件框架,该框架在用户为系统监测设定资源使用上限后,会在给定资源预算内提供系统状态最佳监测。本文通过实例研究表明RALMON具有较小的存储和运行时开销,且可以根据用户设定的监测方案自动调整不同监测对象的监测级别,达到对资源预算和监测的管理与控制。

[1] 马峻岩,周兴社,张羽,等.传感器网络调试研究综述[J].计算机学报, 2012, 35(3):405-422.

[2] KRUNIC V, TRUMPLER E, HAN R. NodeMD: Diagnosing node-level faults in remote wireless sensor systems[C]//Proceedings of the 5th International Conference on Mobile Systems, Applications and Services, New York: ACM, 2007:43-56.

[3] COOPRIDER N, ARCHER W, EIDE E, et al. Efficient memory safety for tinyos[C]//Proceedings of the 5th International Conference on Embedded Networked Sensor Systems,New York: ACM, 2007:205-218.

[4] CAO Q, ABDELZAHER T, STANKOVIC J, et al. Declarative tracepoints: A programmable and application independent debugging system for wireless sensor networks[C]//Proceedings of the 6th ACM Conference on Embedded Network Sensor Systems, New York:ACM, 2008:85-98.

[5] SUNDARAM V, EUGSTER P, ZHANG X. Efficient diagnostic tracing for wireless sensor networks[C]//Proceedings of the 8th ACM Conference on Embedded Networked Sensor Systems, New York: ACM, 2010:169-182.

[6] 马峻岩,周兴社,李士宁.基于FSM的感知节点软件故障检测[J]. 北京邮电大学学报, 2013,36(2): 107-112.

[7] DUNKELS A, GRONVALL B, VOIGT T.Contiki-a lightweight and flexible operating system for tiny networked sensors[C]//Proceedings of the 29th Annual IEEE International Conference on Local Computer Networks, Washington: IEEE Computer Society, 2004:455-462.

[8] NECULA G C, NECULA G C, MCPEAK S, et al. CIL: Intermediate language and tools for analysis and transformation of C programs[C]//Proceedings of the 11th International Conference on Compiler Construction, Heidelberg: Springer, 2002, 2304:209-265.

(编 辑曹大刚)

RALMON: A resource-aware lightweight runtime monitoring framework for sensor node software

MA Jun-yan1, LIU Qin2, MENG Qiang1

(1.School of Information Engineering, Chang′an University, Xi′an 710064, China; 2.Xi′an Flight Automatic Control Research Institute, Xi′an 710065, China)

Software monitoring is an important means to evaluate whether software behaves as expected, which is also the foundation for further online adjustment and software run evolution. A reasonable balance between limited resources and requirement of long-term software monitoring is the key for software monitoring of sensor nodes. To address the limitations of resource management support in existing software monitoring tools, a framework named RALMON (Resource-Aware Lightweight runtime MONitoring) is proposed for sensor node software runtime monitoring. The framework provides users with a resource-sensitive software monitoring mechanism to achieve fine control of the monitoring overhead on highly resource-constrained devices. On the basis of RALMON implementation, storage and runtime overheads of RALMON are investigated. The feasibility of RALMON is shown through the case study of a representative application.

sensor networks; sensor node software; resource-aware; runtime monitoring

2014-03-17

国家自然科学基金资助项目(61402050,61303041);中央高校基本科研业务费专项基金资助项目(2013G1241113)

马峻岩,男,陕西西安人,从事无线传感器网络及网络化嵌入式计算方面的研究。

TP311

:ADOI:10.16152/j.cnki.xdxbzr.2015-03-010

猜你喜欢

快照级别实例
面向Linux 非逻辑卷块设备的快照系统①
EMC存储快照功能分析
级别分明
迈向UHD HDR的“水晶” 十万元级别的SIM2 CRYSTAL4 UHD
新年导购手册之两万元以下级别好物推荐
你是什么级别的
一种基于Linux 标准分区的快照方法
让时间停止 保留网页游戏进度
完形填空Ⅱ
完形填空Ⅰ