Abstract
Runtime verification is a monitoring technique to gain assurance about well-being of a program at run time. Most existing approaches use sequential monitors; i.e., when the state of the program with respect to an event of interest changes, the monitor interrupts the program execution, evaluates a set of logical properties, and finally resumes the program execution. In this paper, we propose a GPU-based method for design and implementation of monitors that enjoy two levels of parallelism: the monitor (1) works along with the program in parallel, and (2) evaluates a set of properties in a parallel fashion as well. Our parallel monitoring algorithms effectively exploit the many-core platform available in the GPU. In addition to parallel processing, our approach benefits from a true separation of monitoring and functional concerns, as it isolates the monitor in the GPU. Thus, our monitoring approach incurs minimal intrusion, as executing monitoring tasks take place in a different computing hardware from execution of the program under inspection. Our method is fully implemented for parametric and non-parametric 3-valued linear temporal logic. Our experimental results show significant reduction in monitoring overhead, monitoring interference, and power consumption due to leveraging the GPU technology. In particular, we observe that our parallel verification algorithms are indeed scalable.
Similar content being viewed by others
Notes
In practice, we implement the algorithm iteratively by splitting the program trace into the chunks and feeding them one-by-one to the algorithm. In this case, the output of the current iteration \(\lambda (q_{ result })\) together with tuple \(\mathcal {I}\) becomes the input for the next algorithm iteration. However, for the sake of simplicity, in the formal description we abstract the notion of the chunk and treat the whole program trace as one input.
To access the tool, please visit http://uwaterloo.ca/embedded-software-group/projects/rithm.
A video clip of the actual experiment is available at http://www.youtube.com/watch?v=Db2MifLmap0%26feature=youtu.be .
References
Barre B, Klein M, Soucy-Boivin M, Ollivier PA, Hallé S (2012) MapReduce for parallel trace validation of LTL properties. In: Proceedings of the 3rd international conference on runtime verification (RV), pp 184–198
Basin DA, Caronni G, Ereth S, Harvan M, Klaedtke F, Mantel H (2014) Scalable offline monitoring. In: Proceedings of the 14th international conference on runtime verification (RV), pp 31–47
Bauer A, Leucker M, Schallhart C (2011) Runtime verification for LTL and TLTL. ACM Trans Softw Eng Methodol (TOSEM) 20(4):14:1–14:64
Bodden E (2005) J-lo-a tool for runtime-checking temporal assertions. Master’s thesis, RWTH Aachen university
Bodden E (2010) Efficient hybrid typestate analysis by determining continuation-equivalent states. In: International conference on software engineering (ICSE), pp 5–14
Bodden E, Lam P, Laurie L (2010) Clara: a framework for partially evaluating finite-state runtime monitors ahead of time. In: Rosu G, Sokolsky O (eds) Runtime verification (RV), pp 183–197
Bonakdarpour B, Smolka S (eds) (2014) Proceedings of the 14th international conference on runtime verification (RV)
Bonakdarpour B, Navabpour S, Fischmeister S (2011) Sampling-based runtime verification. In: Butler M, Schulte W (eds) Formal methods (FM), pp 88–102
Bonakdarpour B, Navabpour S, Fischmeister S (2013) Time-triggered runtime verification. Form Methods Syst Des (FMSD) 43(1):29–60
Chen F, Roşu G (2005) Java-MOP: a monitoring oriented programming environment for java. In: Tools and Algorithms for the construction and analysis of systems (TACAS), pp 546–550
Colin S, Mariani L (2005) Run-time verification. Springer, New York (LNCS 3472, chap 18)
Dwyer MB, Avrunin GS, Corbett JC (1999) Patterns in property specifications for finite-state verification. In: International conference on software engineering (ICSE), pp 411–420
Elmas T, Okur S, Tasiran S (2011) Rethinking runtime verification on hundreds of cores: challenges and opportunities. Tech. Rep. UCB/EECS-2011-74. EECS Department, University of California, Berkeley
Geist J, Rozier KY, Schumann J (2014) Runtime observer pairs and bayesian network reasoners on-board fpgas: flight-certifiable system health management for embedded systems. In: Proceedings of the 14th international conference on runtime verification (RV), pp 215–230
Giannakopoulou D, Havelund K (2001) Automata-based verification of temporal properties on running programs. In: Automated software engineering (ASE), pp 412–416
Ha J, Arnold M, Blackburn SM, McKinley KS (2009) A concurrent dynamic analysis framework for multicore hardware. In: Object-oriented programming, systems, languages, and applications (OOPSLA), pp 155–174
Holub J, Stekr S (2009) On parallel implementations of deterministic finite automata. In: Implementation and application of automata (CIAA), pp 54–64
Huang X, Seyster J, Callanan S, Dixit K, Grosu R, Smolka SA, Stoller SD, Zadok E (2012) Software monitoring with controllable overhead. Softw Tools Technol Transf (STTT) 14(3):327–347
Jin D (2012) Making runtime monitoring of parametric properties practical. PhD thesis, University of Illinois
Kupferman O, Vardi MY (1999) Model checking of safety properties. In: Computer aided verification (CAV), pp 172–183
Legay A, Bensalem S (eds) (2013) Proceedings of the fourth international conference on runtime verification (RV)
Luo Q, Zhang Y, Lee C, Jin D, Meredith PN, erb nu T, Ro u G (2014) Rv-monitor: efficient parametric runtime verification with simultaneous properties. In: Bonakdarpour B, Smolka S (eds) Runtime verification, Lecture notes in computer science, vol 8734, Springer International Publishing, pp 285–300, doi:10.1007/978-3-319-11164-3_24
Meredith P, Jin D, Chen F, Roşu G (2010) Efficient monitoring of parametric context-free patterns. J Autom Softw Eng 17(2):149–180
Navabpour S, Joshi Y, Wu CWW, Berkovich S, Medhat R, Bonakdarpour B, Fischmeister S (2013) RiTHM: a tool for enabling time-triggered runtime verification for c programs. In: ACM international conference on foundations of software engineering (FSE), pp 603–606
Pellizzoni R, Meredith P, Caccamo M, Rosu G (2008) Hardware runtime monitoring for dependable COTS-based real-time embedded systems. In: Real-time systems symposium, pp 481–491
Pnueli A, Zaks A (2006) PSL model checking and run-time verification via testers. In: Symposium on formal methods (FM), pp 573–586
RTCA DO-178B (1992) Software considerations in airborne systems and equipment certification. Radio Technical Commission for Aeronautics (RTCA)
Seyster J, Dixit K, Huang X, Grosu R, Havelund K, Smolka SA, Stoller SD, Zadok E (2010) Aspect-oriented instrumentation with GCC. In: Rosu G, Sokolsky O (eds) Runtime verification (RV), pp 405–420
Zhu H, Dwyer MB, Goddard S (2009) Predictable runtime monitoring. In: Euromicro conference on real-time systems (ECRTS), pp 173–183
Zilles CB, Sohi GS (2001) A programmable co-processor for profiling. In: High performance computer architecture (HPCA), pp 241–253
Acknowledgments
This research was supported in part by NSERC DG 418396-2012, NSERC Strategic Grant 430575-2012, NSERC DG 357121-2008, ORF-RE03-045, ORF-RE04-036, ORF-RE04-039, CFI 20314, CMC, and the industrial partners associated with these projects.
Conflict of interest
The authors declare that they have no conflict of interest.
Author information
Authors and Affiliations
Corresponding author
Rights and permissions
About this article
Cite this article
Berkovich, S., Bonakdarpour, B. & Fischmeister, S. Runtime verification with minimal intrusion through parallelism. Form Methods Syst Des 46, 317–348 (2015). https://doi.org/10.1007/s10703-015-0226-3
Published:
Issue Date:
DOI: https://doi.org/10.1007/s10703-015-0226-3