The RTLINUX-ANALYSIS-TOOLKIT is a package formed by several libraries, modules and tools which may be used in order to analyse real-time applications running on the RT-Linux operating system. This package has joined two pieces of software or "components" named LPTRACE ("Lightweight POSIX Tracing") and METRICS ("System metrics"), which have been developed in the OCERA project. Nevertheless, the installation procedure allows the package to be directly integrated into a regular RT-Linux distribution, without any other OCERA component.

Among other features, this toolkit allows you to automatically trace your real-time application (without any manual instrumentation) in order to compute interesting metrics such as task computation times, resource usage, blocking factors, etc. The final result of the metrics processing is an easy-to-read html report that contains an analysis of the application's temporal behaviour. By combining this report with a graphical display of the application's execution (also provided by the toolkit), you can really learn how your application is performing! In particular, the toolkit is composed of the following components:

  • An implementation of the POSIX Tracing services, integrated into the RT-Linux scheduler (rtl_sched.o module), that can be used by RT-Linux threads. This implementation has adapted the POSIX Tracing standard to the needs of small, embedded, POSIX real-time operating systems, and then has incorporated this slightly modified standard to RT-Linux. With these services, you can create and manage POSIX trace streams, store trace events into these trace streams, save the contents of a trace stream in a log file and retrieve trace events from trace streams concurrently with the execution of your real-time application.

  • An implementation of a small subset of the POSIX Tracing services that may be used by Linux applications ("libposix_trace.a"). You can use these services for two different purposes: (1) in order to retrieve trace events from a log file previously created by a RT-Linux application, and (2) in order to store user events in a trace stream concurrently with a running RT-Linux application.

  • An instrumented RT-Linux kernel. The original RT-Linux kernel has been modified in order to generate system trace events, such as context switches or calls to systems services, which may be stored in trace streams. These events are used by other components of this package in order to display graphically these system activities, get temporal metrics and more.

  • "wlog", a Linux application which listens to a device on which RT-Linux is flushing a trace stream and creates a log file (in Linux) with the flushed events. In this way, using this application you can generate a trace stream from RT-Linux and store it in a Linux file.

  • "logto", a Linux application which may be used to open a log file and interpret the system events which contains, creating a variety of files with such events (in xml, plain text or kiwi format).

  • "kiwi", a Tcl/Tk tool for graphically display execution traces. In combination with "logto", "kiwi" can display the execution trace of a RT-Linux application.

  • A metrics extraction engine. With this engine you can extract temporal metrics from POSIX trace streams. This includes metrics such as system call overheads, job response times or critical section execution times. You have two equivalent implementations of this engine: a RT-Linux module ("rtl_metrics.o") and a Linux library("libmetrics.a"). Both implementations implements the same API. You should use the RT-Linux module if you want to get metrics concurrently with the execution of your real time application and the Linux library if you want to extract metrics from a trace stream stored in a log file.

  • "toxml", a Linux application implemented on top of the metrics extraction engine API which shows the metrics extracted in XML format.

  • "todocbook", a Linux application which generates a "docbook" report taking the output of the "toxml" application. This report shows the distributions of the metrics extracted.