Reducing Monitoring Overhead by Integrating Event- and Time-Triggered Techniques
Runtime verification is a formal technique used to check whether a program under inspection satisfies its specification by using a runtime monitor. Existing monitoring approaches use one of two ways for evaluating a set of logical properties: (1) event-triggered, where the program invokes the monitor when the state of the program changes, and (2) time-triggered, where the monitor periodically preempts the program and reads its state. Realizing the former is straightforward, but the runtime behaviour of event-triggered monitors are difficult to predict. Time-triggered monitoring (designed for real-time embedded systems), on the other hand, provides predictable monitoring behavior and overhead bounds at run time. Our previous work shows that time-triggered monitoring can potentially reduce the runtime overhead provided that the monitor samples the program state at a low frequency.
In this paper, we propose a hybrid method that leverages the benefits of both event- and time-triggered methods to reduce the overall monitoring overhead. We formulate an optimization problem, whose solution is a set of instrumentation instructions that switches between event-triggered and time-triggered modes of monitoring at run time; the solution may indicate the use of exactly one mode or a combination of the two modes. We fully implemented this method to produce instrumentation schemes for C programs that run on an ARM Cortex-M3 processor, and experimental results validate the effectiveness of this approach.
KeywordsBasic Block Monitoring Mode Linear Temporal Logic Execution Path Symbolic Execution
Unable to display preview. Download preview PDF.
- 1.SNU Real-Time Benchmarks, http://www.cprover.org/goto-cc/examples/snu.html
- 8.Giannakopoulou, D., Havelund, K.: Automata-Based Verification of Temporal Properties on Running Programs. In: Automated Software Engineering (ASE), pp. 412–416 (2001)Google Scholar
- 9.GrammaTech Inc. CodeSurfer®, http://www.grammatech.com/products/codesurfer/.
- 10.Havelund, K., Rosu, G.: Monitoring Programs Using Rewriting. In: Automated Software Engineering (ASE), pp. 135–143 (2001)Google Scholar
- 12.Havelund, K., Rosu, G.: Monitoring Java Programs with Java PathExplorer. Electronic Notes in Theoretical Computer Science 55(2) (2001)Google Scholar
- 13.Huang, X., Seyster, J., Callanan, S., Dixit, K., Grosu, R., Smolka, S.A., Stoller, S.D., Zadok, E.: Software monitoring with controllable overhead. Software Tools for Technology Transfer, STTT (2011) (to appear)Google Scholar
- 15.Kim, M., Lee, I., Sammapun, U., Shin, J., Sokolsky, O.: Monitoring, Checking, and Steering of Real-Time Systems. Electronic Notes in Theoretical Computer Science 70(4) (2002)Google Scholar
- 18.Lattner, C., Adve, V.: LLVM: A compilation framework for lifelong program analysis and transformation. In: International Symposium on Code Generation and Optimization: Feedback Directed and Runtime Optimization, p. 75 (2004)Google Scholar
- 20.Manna, Z., Pnueli, A.: A Hierarchy of Temporal Properties. In: Principles of Distributed Computing (PODC), pp. 377–410 (1990)Google Scholar
- 23.SRI. Yices: An SMT Solver (1.0.34), http://yices.csl.sri.com/index.shtml
- 25.Stolz, V., Bodden, E.: Temporal Assertions using Aspectj. Electronic Notes in Theoretical Computer Science 144(4) (2006)Google Scholar