Time-Triggered Program Self-Monitoring

Runtime monitoring aims at analyzing the well-being of a system at run time in order to detect errors and steer the system towards a healthy behavior. Such monitoring is a complementary technique to other approaches for ensuring correctness, such as formal verification and testing. In time-triggered runtime monitoring, a monitor runs as a separate process in parallel with an application program under scrutiny and samples the program's state periodically to evaluate a set of properties. Applying this technique in a computing system results in obtaining bounded and predictable overhead. Gaining such characteristics for overhead is highly desirable for designing and engineering time-critical applications, such as safety-critical embedded systems. However, a time-triggered monitor requires certain synchronization features at operating system level and may suffer from various concurrency and synchronization dependencies and overheads as well as possible unreliability of synchronization primitives in a real-time setting. In this paper, we propose a new method, where the program under inspection is instrumented, so that it self-samples its state in a periodic fashion without requiring assistance from an external monitor or internal timer. We call this technique time-triggered self-monitoring. First, we formulate an optimization problem for minimizing the number of points in a program, where self-sampling instrumentation instructions must be inserted. We show that this problem is NP-complete. Consequently, we propose a SAT-based solution and a heuristic to cope with the exponential complexity. Our experimental results show that a time-triggered self-monitored program performs significantly better than the same program monitored by an external time-triggered monitor.

[1]  Yliès Falcone,et al.  Runtime Verification of Safety-Progress Properties , 2009, RV.

[2]  Martin Leucker,et al.  Runtime Verification for LTL and TLTL , 2011, TSEM.

[3]  Volker Stolz,et al.  Temporal Assertions using AspectJ , 2006, Electron. Notes Theor. Comput. Sci..

[4]  Sebastian Fischmeister,et al.  Sampling-based program execution monitoring , 2010, LCTES '10.

[5]  Sebastian Fischmeister,et al.  Lowering overhead in sampling-based execution monitoring and tracing , 2011, LCTES '11.

[6]  Grigore Rosu,et al.  Monitoring programs using rewriting , 2001, Proceedings 16th Annual International Conference on Automated Software Engineering (ASE 2001).

[7]  Richard M. Karp,et al.  Reducibility Among Combinatorial Problems , 1972, 50 Years of Integer Programming.

[8]  Orna Kupferman,et al.  Model Checking of Safety Properties , 1999, Formal Methods Syst. Des..

[9]  Insup Lee,et al.  DMaC: Distributed Monitoring and Checking , 2009, RV.

[10]  Amir Pnueli,et al.  PSL Model Checking and Run-Time Verification Via Testers , 2006, FM.

[11]  Ezio Bartocci,et al.  Runtime Verification with State Estimation , 2011, RV.

[12]  Klaus Havelund,et al.  Verify Your Runs , 2005, VSTTE.

[13]  Grigore Rosu,et al.  Monitoring Java Programs with Java PathExplorer , 2001, RV@CAV.

[14]  Sebastian Fischmeister,et al.  Efficient Techniques for Near-Optimal Instrumentation in Time-Triggered Runtime Verification , 2011, RV.

[15]  Sebastian Fischmeister,et al.  Sampling-Based Runtime Verification , 2011, FM.

[16]  Grigore Rosu,et al.  Synthesizing Monitors for Safety Properties: This Time with Calls and Returns , 2008, RV.

[17]  Lee Pike,et al.  Runtime Verification for Ultra-Critical Systems , 2011, RV.

[18]  Grigore Rosu,et al.  Efficient monitoring of safety properties , 2004, International Journal on Software Tools for Technology Transfer.

[19]  Dimitra Giannakopoulou,et al.  Automata-based verification of temporal properties on running programs , 2001, Proceedings 16th Annual International Conference on Automated Software Engineering (ASE 2001).

[20]  Mahesh Viswanathan,et al.  Java-MaC: A Run-Time Assurance Approach for Java Programs , 2004, Formal Methods Syst. Des..

[21]  Gerard J. M. Smit,et al.  A mathematical approach towards hardware design , 2010, Dynamically Reconfigurable Architectures.

[22]  Radu Grosu,et al.  Software monitoring with controllable overhead , 2010, International Journal on Software Tools for Technology Transfer.

[23]  Martin Leucker,et al.  Comparing LTL Semantics for Runtime Verification , 2010, J. Log. Comput..

[24]  Edward Y. Chang,et al.  Characterization of Temporal Property Classes , 1992, ICALP.

[25]  Jan Gustafsson,et al.  The Mälardalen WCET Benchmarks: Past, Present And Future , 2010, WCET.

[26]  Insup Lee,et al.  Monitoring, Checking, and Steering of Real-Time Systems , 2002, Electron. Notes Theor. Comput. Sci..

[27]  Leonardo Mariani,et al.  Run-Time Verification , 2004, Model-Based Testing of Reactive Systems.

[28]  Grigore Rosu,et al.  Synthesizing Monitors for Safety Properties , 2002, TACAS.

[29]  Alwyn E. Goodloe,et al.  Copilot: A Hard Real-Time Runtime Monitor , 2010, RV.

[30]  Marcelo d'Amorim,et al.  Efficient Monitoring of omega-Languages , 2005, CAV.