Last updated February 10, 2003.
During the 2002 Ottawa Linux Symposium tracing BOF, a list of desirable features for LTT was collected by Richard Moore. Since then, a lot of infrastructure work on LTT has been taking place. This status report aims to track current development efforts and the current status of the various features. This first version of this status page is most certainly incomplete, please send any additions and corrections to Michel Dagenais (michel.dagenais@polymtl.ca)
Tom Zanussi of IBM has implemented per CPU lockless buffering, with low overhead very fine grained timestamping, and has updated accordingly the kernel patch and the trace visualizer except for viewing multiple per CPU traces simultaneously.
RelayFS: Tom Zanussi is currently working on implementing a separate data relay filesystem (relayfs) which will be a separate, simple and efficient component, reusable by other projects (printk, evlog, lustre...). This will remove a sizeable chunk from the current LTT, making each piece (relayfs and relayfs-based LTT) simpler, more modular and possibly more palatable for inclusion in the standard Linux kernel.
A group in the department of Computer Engineering at Ecole Polytechnique Montreal, where Karim Yaghmour graduated, is working on a reorganization of the LTT infrastructure to define event types and insert tracing statements in the kernel without having to modify or recompile the trace visualizer.
GenEvent: XiangXiu Yang developed a simple program which parses event descriptions and generates the inline functions to record events in the kernel.
LibEvent: XiangXiu Yang is working on an event reading library and API which parses event descriptions and accordingly reads traces and decodes events.
LTTVis: Michel Dagenais is remodeling the trace visualizer to use the LibEvent API and to allow compiled and scripted plugins, which can dynamically add new custom trace analysis functions.
LTT already interfaces with Dynamic Probes. This feature will need to be updated for the new LTT version.
The Kernel Crash Dump utilities is another very interesting complementary project. Interfacing it with RelayFS will help implement useful flight-recorder like tracing for post-mortem analysis.
User level tracing is available in the current LTT version but requires one system call per event. With the new RelayFS based infrastructure, it would be interesting to use a shared memory buffer directly accessible from user space. Having one RelayFS channel per user would allow an extremely efficient, yet secure, user level tracing mechanism.
Sending important events (process creation, event types/facilities definitions) to a separate channel could be used to browse traces interactively more efficiently. Only this concise trace of important events would need to be processed in its entirety, other larger gigabyte size traces could be used in random access without requiring a first preprocessing pass. A separate channel would also be required in case of incomplete traces such as when tracing to a circular buffer in "flight recorder" mode; the important events would all be kept while only the last buffers of ordinary events would be kept.
Once the visualizer is able to read and display several traces, it will be interesting to produce side by side synchronized views (events from two interacting machines A and B one above the other) or even merged views (combined events from several CPUs in a single merged graph). Time differences between interacting systems will need to be estimated and somewhat compensated for.
LTT currently writes a proc file at trace start time. This file only contains minimal information about processes and interrupts names. More information would be desirable for several applications (process maps, opened descriptors, content of buffer cache). Furthermore, this information may be more conveniently gathered from within the kernel and simply written to the trace as events at start time.