Author: eilemann@gmail.com
State: Implemented in svn
Overview
Statistics are send as events to the application thread. On the application
thread, Config::handleEvent sorts the events per frame and per
originator (channel, window, config). Events for up to latency +
1 frames are kept by the application node config.
Statistics can be visualized by calling Channel::drawStatistics.
The Equalizer examples use the key 's' to toggle statistics drawing on and
off.
Details
- The statistics are for a static 2D compound using two nodes.
- The X axis is the time. One pixel on the screen corresponds to one millisecond. The right-most pixel is the most current time.
- On the Y axis are the rendering entities: channels, windows and the config.
- The remote machine is a Mac Mini, the local a MacBook Pro. The draw times are unbalanced due to the speed difference of the machines, and the transmit time is relatively long since 100 MBit Ethernet is used.
- Frames overlap due to asynchronous execution, in the example above for one frame.
- Older frames are gradually attenuated for easier identification of tasks to frames.
- Frame borders are identified by vertical lines, green is the start of a frame, gray the finish.
- The swap buffer task includes the time to wait for the vertical retrace (vsync is on).
- The waiting for images task is a subset of the assemble task.
- Swap barriers (not used in the example) are sold red tasks directly before the white swap buffer task.
API
virtual void Channel::drawStatistics();
File Format
Additional statistics file format:
global
{
EQ_WINDOW_IATTR_HINT_STATISTICS off | fastest [on] | nicest
}
window
{
attributes
{
hint_statistics off | fastest [on] | nicest
}
}
Open Issues
None
3D model courtesy of Stanford University Computer Graphics Laboratory.
