Trace abstraction and correlation techniques for real-time avionic systems

This research thread aims to develop new techniques to help software engineers understand at a higher level the behaviour of large real-time avionic systems, while reducing the amount of time and effort spent on browsing large system traces. Because of the large size of traces, new ways are needed to allow software engineers to somehow find and absorb the useful information underlying the massive traces. This necessitates simplifying views of traces in various ways, reducing their size and complexity while keeping most of their essence.

In previous work, we have developed several trace abstraction techniques that vary significantly in their design and effect based on many factors including the goal of the trace abstraction technique (debugging, feature enhancement, etc.), the type of traces (user space trace, kernel space traces), and the nature of the target systems (distributed, multi-core, etc.). In this research, we will investigate if and how existing techniques can be extended to real-time avionic systems. In particular, we will examine how real-time profiling information such as latency, deadlines, CPU usage can be used to guide the abstraction process. The idea is to use this information to rank the trace elements based on their importance. For example, a task that requires considerably more CPU usage than other tasks might suggest that it is performing an important computation. The trace elements related to this task should therefore be given more priority when selecting the elements that should be kept in the abstracted views. The use of different properties should lead to different abstractions. The main challenge is to determine how these properties combined not only together but also with other abstraction schemes can lead the best results. We also need to investigate thresholds beyond which trace elements can be deemed important. This, again, will depend on the type of traces used, the level of details of the trace content, and the granularity of the abstracted views. Software engineers should be able to use these thresholds to go from a raw trace to very high-level views as needed. We will evaluate the effectiveness of the abstracted views in helping software engineers analyze large traces through close collaboration with CAE and Opal-RT engineers.

The trace abstraction process will also be critical for the development of techniques that permit the correlation of the content of two or more traces. Trace correlation is an important task particularly in the context of avionic systems where it is common to have the same application run on multiple nodes to ensure high-availability of services. Trace correlation can be used to compare traces generated from redundant components to ensure that the system performs the way it is supposed to. Trace correlation is also important to compare a trace generated from a system in operation with historical logs. Comparing traces based on their raw events is however ineffective due to the unpredictable order of invocation of events in real-time multi-core systems. Instead, we intend to investigate how traces can be compared based on their main content, which is reflected in the abstracted views extracted from the trace abstraction techniques. The end result will be a set of algorithms for correlating traces based on behavioural features rather than event-to-event mapping.

 

 

Documents and presentations

No track news