馬峻巖,劉 琴,孟 強
(1.長安大學 信息工程學院, 陜西 西安 710064;2.西安飛行自動控制研究所, 陜西 西安 710065)
?
·信息科學·
RALMON:一種資源敏感的輕量級感知節(jié)點軟件運行時監(jiān)測框架
馬峻巖1,劉 琴2,孟 強1
(1.長安大學 信息工程學院, 陜西 西安 710064;2.西安飛行自動控制研究所, 陜西 西安 710065)
軟件監(jiān)測是評價軟件行為是否符合預期的重要手段,也是后期實施在線調(diào)整和軟件演化的基礎。在有限的資源與長期軟件運行監(jiān)測需求之間進行合理的平衡是感知節(jié)點軟件監(jiān)測的關鍵。針對現(xiàn)有軟件監(jiān)測工具缺乏對資源開銷管理的問題,提出了一個名為RALMON感知節(jié)點軟件運行時監(jiān)測框架,該框架向用戶提供了一種資源敏感的軟件監(jiān)測機制,實現(xiàn)了在資源高度受限節(jié)點上對監(jiān)測資源開銷的精細控制。在RALMON實現(xiàn)的基礎上,研究了RALMON的存儲與計算開銷,最后通過一個典型應用實例驗證了RALMON的有效性。
傳感器網(wǎng)絡;感知節(jié)點軟件;資源敏感;運行時監(jiān)測
為了獲取物理世界的信息,傳感器網(wǎng)絡通常被部署在無人看護的戶外等環(huán)境較為惡劣的區(qū)域。這種與物理世界緊密偶合的特性,使得感知節(jié)點軟件的功能和行為在很大程度上會受到其所處部署環(huán)境的影響。然而,部署前對軟件進行的各種測試僅能對實際部署后系統(tǒng)的正確性與各項性能參數(shù)做出一個大致的評估,那些部署后出現(xiàn)的問題往往無法在部署前發(fā)現(xiàn)。能否快速有效地對這些問題進行檢測與診斷,是保障傳感器網(wǎng)絡持續(xù)高效運行的關鍵[1]。
軟件運行時監(jiān)測技術通過收集軟件運行過程中產(chǎn)生內(nèi)部狀態(tài)信息,為評價軟件是否良好運行提供重要依據(jù)。然而,由于感知節(jié)點資源高度受限,現(xiàn)有軟件監(jiān)測技術與框架并不適用于傳感器網(wǎng)絡。傳感器網(wǎng)絡狀態(tài)監(jiān)測可分為2類:網(wǎng)絡級狀態(tài)監(jiān)測和節(jié)點級監(jiān)測。本文研究的是節(jié)點級的狀態(tài)監(jiān)測技術。
監(jiān)測信息與資源開銷之間存在著根本的矛盾,對于資源高度受限的傳感器網(wǎng)絡來說,需要在足夠的監(jiān)測信息和有限的系統(tǒng)資源之間尋求一個合適的平衡點。現(xiàn)有節(jié)點軟件運行時監(jiān)測研究,主要關注如何在實施監(jiān)測的同時,盡可能減少由監(jiān)測產(chǎn)生的資源開銷,但用戶無法對這些監(jiān)測產(chǎn)生的資源開銷進行精細地控制[2-6]。本文提出一種名為RALMON (resource-aware lightweight runtime monitoring)感知節(jié)點軟件運行時監(jiān)測框架,該框架使用戶可以在足夠的監(jiān)測信息和有限的資源開銷之間進行有效的權衡與精細的控制。
RALMON的系統(tǒng)結構如圖1所示,RALMON主要由以下4部分組成:
圖1 RALMON系統(tǒng)結構圖Fig.1 The architecture of RALMON
1)監(jiān)測描述語言MDL(monitoring description language)。MDL通過監(jiān)測對象MO(monitoring objects)、ML監(jiān)測級別(monitoring levels)和監(jiān)測方案MS(monitoring schemes)3部分要素,全面刻畫了用戶對系統(tǒng)的監(jiān)測需求。
2)MDL代碼生成和交織工具。其主要實現(xiàn)MDL文件的解析、相關監(jiān)測級別實例代碼生成、監(jiān)測調(diào)度器配置信息生成、監(jiān)測級別實例解碼表生成、以及監(jiān)測代碼到目標源代碼的AOP交織。
3)RALMON運行時環(huán)境。運行時環(huán)境主要由監(jiān)測級別實例、監(jiān)測方案調(diào)度實例以及監(jiān)測調(diào)度器3部分組成。監(jiān)測調(diào)度器主要工作是根據(jù)監(jiān)測方案和監(jiān)測資源的使用情況,自適應地調(diào)整不同監(jiān)測對象的監(jiān)測級別,并對相關快照進行壓縮,實現(xiàn)指定資源開銷下的最佳監(jiān)測。
4)監(jiān)測分析工具。在收集到調(diào)度器產(chǎn)生的壓縮快照后,用戶在本地計算機上使用MDL代碼生成的監(jiān)測級別實例解碼表和交織工具產(chǎn)生的分析工具對不同監(jiān)測級別的快照進行解壓,得到系統(tǒng)運行記錄。
本文在Contiki[7]操作系統(tǒng)上對RALMON進行了實現(xiàn),其主要包括MDL、代碼生成和交織工具以及監(jiān)測調(diào)度器3部分。
2.1 MDL監(jiān)測需求描述語言
MDL包含監(jiān)測對象聲明、監(jiān)測級別定義和監(jiān)測方案描述3部分。
2.1.1 監(jiān)測對象聲明 監(jiān)測對象被定義是一個由事件E和一組程序變量V構成的二元組(E,V),其含義是每當事件E發(fā)生時系統(tǒng)會產(chǎn)生一條日志記錄,其內(nèi)容包括事件發(fā)生的時間戳和這組程序變量V的快照。監(jiān)測對象通過關鍵字指定不同類型的事件,關鍵字后面給出了相關事件的參數(shù)指明變量所涉及的文件名及函數(shù)名,以及需要記錄的變量名列表。例如,下面代碼中第1行代碼表示要監(jiān)測tracking.c文件中sampleProc函數(shù)中的mag變量的改變,第2行代碼表示要監(jiān)測report.c文件中update函數(shù)每次返回前變量x和變量y的值:
1 func-var tracking.c:sampleProc:mag
2 func-footer report.c:update:xy
2.1.2 監(jiān)測級別定義 監(jiān)測級別是用戶為了減小監(jiān)測對象生成記錄而定義的壓縮函數(shù)。用戶可以為每個監(jiān)測對象定義一組監(jiān)測級別,每一個監(jiān)測級別對應一個有損壓縮函數(shù)且有唯一的級別編號,級別編號越大其資源開銷也越大。RALMON中規(guī)定對于同一組監(jiān)測級別,監(jiān)測和資源開銷應隨著級別編號增加而單調(diào)遞增,并且這些監(jiān)測級別應構成一個管道,即級別k的輸出應作為級別k-1的輸入。利用RALMON提供的操作符可以實現(xiàn)監(jiān)測級別的定義。RALMON提供的操作符包括:無壓縮操作符,條件篩選操作符,位掩碼操作符,數(shù)值再映射操作符。例如,下面代碼為mag對象定義了2個監(jiān)測級別,不同級別定義之間用空行分隔。級別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 監(jiān)測方案描述 監(jiān)測方案指定了如何為監(jiān)測對象選取合適的監(jiān)測級別,從而保證監(jiān)測資源開銷在預算之內(nèi)。監(jiān)測方案包括用戶期望的資源預算,監(jiān)測對象的優(yōu)先級,以及同一監(jiān)測對象不同快照之間的優(yōu)先級策略。當給定資源預算無法保證所有監(jiān)測對象為最高監(jiān)測級別時,監(jiān)測調(diào)度器會依據(jù)這些策略減少相應監(jiān)測對象快照的監(jiān)測級別。例如,下面的監(jiān)測方案的實例中,通過budget關鍵字定義用于監(jiān)測的帶寬預算不超過60Bytes/s(第2行),指定mag和eTout監(jiān)測對象的優(yōu)先級分別為1和2(第3行和第4行):
1 mscheme wsn-tracking {
2 budget=60 BPS
3 mag@priority=1
4 eTout@priority=2
5}
2.2 代碼生成和交織工具
代碼生成和交織工具將應用程序源代碼和包含了監(jiān)測對象、監(jiān)測級別以及監(jiān)測方案的.mdl文件作為輸入,完成代碼生成和應用程序插裝工作,主要工作包括:為每個監(jiān)測對象分配一個唯一的標識符,用于區(qū)分不同對象產(chǎn)生的日志記錄;根據(jù).mdl文件中監(jiān)測對象的定義對程序源代碼進行插裝,在相應位置創(chuàng)建監(jiān)測對象快照記錄;根據(jù)監(jiān)測級別定義,生成用于壓縮快照記錄的代碼;從監(jiān)測方案中提取各項參數(shù),生成調(diào)度器的運行配置信息;生成監(jiān)測分析工具需要的監(jiān)測級別實例解碼表。
交織通過CIL (C intermediate language)[8]完成代碼的插裝。利用CIL可以將C程序轉換成一種中間表示形式,通過對該中間表示形式的操作,可以實現(xiàn)代碼的分析與轉換,例如在某一變量賦值語句后插入特定代碼。
2.3 監(jiān)測調(diào)度器
監(jiān)測調(diào)度器是RALMON中用來為監(jiān)測對象動態(tài)選擇監(jiān)測級別的組件,其目的是保證系統(tǒng)監(jiān)測開銷不超過規(guī)定的資源(帶寬、能量或者存儲)預算。調(diào)度器維護一個固定長度的緩存,新產(chǎn)生的記錄會被添加到緩存尾部。當向緩存中添加一條新記錄時,新記錄的監(jiān)測級別被設置為相應監(jiān)測對象當前的級別。如果緩存剩余存儲空間不足,則調(diào)度器會將緩存中優(yōu)先級最低記錄的監(jiān)測級別減少,直到緩存中產(chǎn)生足夠的空間用于保存新的記錄。當記錄的監(jiān)測級別減至零時,記錄從緩存中刪除。記錄從監(jiān)測級別k降低到k-1,只需將k-1級別對應的壓縮函數(shù)作用于該記錄即可。如果與新記錄相關的對象是最低優(yōu)先級的監(jiān)測對象,且該對象的監(jiān)測級別為1,調(diào)度器會依據(jù)相關策略來替換緩存中的記錄。
通過將RALMON應用于一個目標跟蹤程序的實例,對RALMON設計的有效性進行驗證。實驗選擇TelosB作為傳感器節(jié)點硬件平臺,節(jié)點運行Contiki操作系統(tǒng)。
3.1 目標跟蹤應用的監(jiān)測描述
本文實現(xiàn)了一個簡化的單目標跟蹤應用,實驗中目標節(jié)點周期性地廣播,跟蹤節(jié)點利用這些廣播對目標節(jié)點進行檢測。跟蹤節(jié)點將檢測到的目標信息發(fā)送給動態(tài)選舉出的一個中心節(jié)點,中心節(jié)點對發(fā)來的跟蹤信息進行融合并將融合得到的目標位置上報基站。
表1 目標跟蹤應用監(jiān)測對象Tab.1 Monitoring objects in target tracking application
監(jiān)測描述中包含了4個監(jiān)測對象如表1所示,包括跟蹤節(jié)點的狀態(tài)變量mstate,目標檢測函數(shù)中的傳感器讀數(shù)局部變量mag,選舉定時器回調(diào)函數(shù)eTout調(diào)用,位置計算中追蹤點tpleader快照(包含總消息數(shù),傳感器讀數(shù)平均值,融合目標節(jié)點坐標值)。監(jiān)測方案中指定帶寬預算為4 Byte/s。
3.2 存儲開銷分析
本文使用msp430-gcc交叉編譯器對RALMON的RAM和ROM存儲開銷進行了研究。編譯器版本號為3.2,編譯時開啟-Os優(yōu)化選項。
RAM比源基準應用程序增加了210Byte。RALMON的RAM開銷和3部分相關:RALMON框架,監(jiān)測緩存以及監(jiān)測對象。其中,RALMON框架開銷占70Byte的RAM,由于采用了雙緩存技術當選用50Byte緩存時需要消耗100Byte的RAM,最后每個監(jiān)測對象大約需要消耗10Byte的RAM。
ROM比源基準應用程序增加了4 298Byte。RALMON的ROM開銷和3部分相關:RALMON框架,監(jiān)測對象的監(jiān)測級別代碼,每個記錄點的插裝代碼。其中,RALMON框架占2 608Byte,監(jiān)測級別代碼和具體級別的定義相關,2字節(jié)整型變量每個記錄點插裝代碼約占40Byte的ROM開銷。
本應用實例中RALMON的RAM開銷約占節(jié)點總存儲能力的2%(TelosB的RAM總容量為10kb),ROM開銷約占節(jié)點總存儲能力的8%(TelosB的ROM總容量為48kb),應用實例數(shù)據(jù)表明RALMON適用于存儲受限的傳感器節(jié)點。
3.3 運行時開銷分析
實驗使用具有指令級精度的COOJA模擬器進行RALMON運行時開銷的分析。為了消除其他因素對實驗結果的影響,實驗僅考慮了一個跟蹤節(jié)點的情況。實驗總共持續(xù)300s,目標在第50s出現(xiàn)并保持靜止,第250s時目標消失。表2給出不同緩存情況下調(diào)度開銷平均指令周期數(shù)和RALMON的總開銷占比??梢钥闯稣{(diào)度開銷隨緩存不同而變化,較小的緩存相對開銷較大,其主要原因是調(diào)度器需要做出更多的調(diào)整以獲得足夠的空間保存新產(chǎn)生的記錄。此外,RALMON產(chǎn)生的額外運行開銷占總開銷比例均小于1%,因此RALMON在運行時方面的開銷適用于現(xiàn)有的傳感器節(jié)點。
表2 不同緩存下RALMON開銷Tab.2 Runtime overhead of RALMON over buffer sizes
3.4 精度和帶寬使用分析
對于狀態(tài)監(jiān)測來說,監(jiān)測級別越高則監(jiān)測越精確。圖2和圖3分別給出緩存為12Byte和24Byte時,4個監(jiān)測對象監(jiān)測級別隨時間變化的情況??梢钥闯?在50s附近,監(jiān)測對象mag的監(jiān)測級別因高優(yōu)先級監(jiān)測對象記錄(mstate,eTout等)產(chǎn)生而降低。此外,緩存較大時,高優(yōu)先級監(jiān)測對象記錄的監(jiān)測級別更高,這是因為隨著緩存的增加調(diào)度器在調(diào)整記錄監(jiān)測級別時可以有更多的選擇。因此較大的緩存會產(chǎn)生更加精確的觀測結果,但在相同帶寬約束下較大的緩存會產(chǎn)生更長的監(jiān)測延遲。
圖2 緩存為12 Bytes監(jiān)測級別的調(diào)整Fig.2 Adjustment of monitoring levels for 12 Bytes buffer
圖3 緩存為24Bytes監(jiān)測級別的調(diào)整Fig.3 Adjustment of monitoring levels for 24 Bytes buffer
程序的原始帶寬為5.53Byte/s,帶寬預算為4Byte/s情況下,在緩存為48Byte、24Byte和12Byte時, 經(jīng)RALMON調(diào)控后的帶寬分別為3.5Byte/s,3.24Byte/s和3.94Byte/s。因此,實驗表明RALMON可以通過調(diào)整不同優(yōu)先級監(jiān)測對象的監(jiān)測級別,將監(jiān)測資源開銷有效地控制在預算之內(nèi)。
本文提出了一種RALMON軟件框架,該框架在用戶為系統(tǒng)監(jiān)測設定資源使用上限后,會在給定資源預算內(nèi)提供系統(tǒng)狀態(tài)最佳監(jiān)測。本文通過實例研究表明RALMON具有較小的存儲和運行時開銷,且可以根據(jù)用戶設定的監(jiān)測方案自動調(diào)整不同監(jiān)測對象的監(jiān)測級別,達到對資源預算和監(jiān)測的管理與控制。
[1] 馬峻巖,周興社,張羽,等.傳感器網(wǎng)絡調(diào)試研究綜述[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的感知節(jié)點軟件故障檢測[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);中央高?;究蒲袠I(yè)務費專項基金資助項目(2013G1241113)
馬峻巖,男,陜西西安人,從事無線傳感器網(wǎng)絡及網(wǎng)絡化嵌入式計算方面的研究。
TP311
:ADOI:10.16152/j.cnki.xdxbzr.2015-03-010