In this paper we present the state of our work on runtime monitoring for real-time systems: a way to observe system behavior online without unpredictably disturbing real-time properties. We discuss generic requirements to achieve these properties wherefrom we deduce our monitoring framework architecture. We describe this architecture in detail and discuss several challenges for our implementation called Ferret. We also explain why common operating system primitives, such as message passing or system calls, should not be used for monitoring in the general case and propose a very low-intrusive alternative. We also propose a way of measuring the intrusiveness caused by monitoring. We applied our technique in different scenarios ranging from simple temporal debugging, resource requirement estimation, gaining behavioral information of peripheral hardware devices to build timing models for providing real-time capable service on top of them, up to whole-system views, such as the interaction between concurrently running system threads. Our research platform also contains a para-virtualized version of Linux that we use to run legacy applications. We discuss how to apply our framework to these components with real-time requirements being only one of several important aspects. We also show how to compare the behavior of our para-virtualized Linux kernel with the behavior of the native variant. In this work, we demonstrate how to gain a continuous whole-system view by using only Ferret sensors in all layers of our system, starting from the underlying microkernel, basic microkernel programs, real-time applications, and the para-virtualized Linux kernel, as well as Linux user-space applications.
[1]
Torvald Riegel,et al.
A Generalized Approach to Runtime Monitoring for Real-Time Systems
,
2005
.
[2]
Christoph Pohl,et al.
Enforceable Component-Based Realtime Contracts – Supporting Realtime Properties from Software Development to Execution
,
2006
.
[3]
R. Krishnakumar.
Kernel korner: kprobes-a kernel debugger
,
2005
.
[4]
Connecting Real-Time and Non-Real-Time Components
,
2004
.
[5]
Michel Dagenais,et al.
Measuring and Characterizing System Behavior Using Kernel-Level Event Logging
,
2000,
USENIX Annual Technical Conference, General Track.
[6]
Henrik Thane,et al.
Monitoring, Testing and Debugging of Distributed Real-Time Systems
,
2000
.
[7]
Richard J. Moore.
A Universal Dynamic Trace for Linux and Other Operating Systems
,
2001,
USENIX Annual Technical Conference, FREENIX Track.
[8]
Steffen Göbel,et al.
The COMQUAD component container architecture
,
2004,
Proceedings. Fourth Working IEEE/IFIP Conference on Software Architecture (WICSA 2004).
[9]
Richard Mortier,et al.
Using Magpie for Request Extraction and Workload Modelling
,
2004,
OSDI.
[10]
Dushyanth Narayanan.
End-to-end tracing considered essential
,
2005
.