TuningFork is built upon the Eclipse Rich Client Platform and itself exports a completely modularized plug-in architecture. New trace formats, analysis modules, and visualizations can all be added as plug-ins.
The J9/Metronome virtual machine has been instrumented with a low-overhead, high-precision trace facility that is capable of emitting cycle-accurate trace events to a socket or a file. Users can also define their own trace events and add records to the trace stream. TuningFork trace events are also being added to the IBM Real-time Linux kernel.
TuningFork provides both on-line and off-line visualization of real-time events, with capabilities to play, rewind, zoom, and pause the execution. Based on user interface principles of consistency, perceptual stability, and direct manipulation, TuningFork provides an intuitive and powerful tool for visual and quantitative exploration of real-time data.
The basic TuningFork abstractions are Feeds, Streams, Filters, and Events. Feeds are sources of data, typically the trace of an execution of a program on the J9/Metronome virtual machine. However, there can be multiple feeds: the virtual machine and the operating system, or multiple virtual machine executions, or even synthetic feeds such as a simulated model of the virtual machine's behavior running inside of TuningFork.
Events record an occurrence at a particular time in the execution of the system. Events may be primitive, meaning that they were generated directly by the trace source, or synthetic, meaning they were generated as a function of one or more events by a Filter.
Filters take one or more event streams and can remove, add, or generate new events that are functions of their inputs. Filters may be simple, such as those that remove all but a single class of event, or complex, such as those that compute derivatives or convolutions.
Streams contain evolving streams of events which are passed on to filters or to visual displays.
TuningFork can also be used in an off-line, text-based mode to perform regression testing. A command interpreter, the conductor, interprets score files that can create textual or binary output in formats suitable for use by other tools.