Communication Flow

The Communication Flow graph provides a quick overview of the communication and synchronization between actors in a trace, through semaphores, and mutexes. This graph can be generated over a whole trace, or for a specific interval only.

For example, you might use the CPU Load Graph viewer to identify a peak where there is a lot of activity, then select the interval using a mouse drag selection, right click and select Show Communication Flow in the context menu to show the communication flow graph of that specific interval.

Actors are shown as rectangles, and other kernel objects are shown as ellipses or hexagons. Ellipses are used for directional communication and synchronization objects, while hexagons are used for Mutexes and similar bi-directional objects.

There are two modes in this view:

The classification of kernel objects into directional objects (ellipses) and bi-directional objects (hexagons) are based partially on the static type of the object, partially on the kernel service calls found referencing the object. Semaphores can be used for both purposes, as a directional signal (a form of communication), and as a synchronization lock. A kernel object is treated as a synchronization object (hexagon) if there are actors that both increment and decrement the object state. This means that a semaphore can appear as a hexagon (if one actor both signals and waits for it) while a mutex in rare cases might appear as an ellipse, if only one type of operation is recorded on the particular object.

Filtering specific tasks and objects:

Sometimes it's useful to filter out specific threads or objects, such as if you have a thread dedicated to receiving debug/log messages from other threads and writing those messages to some persistent storage. By default, all actors and objects that don't perform a type of communication are hidden. You can adjust these settings using the filter menus. You can also right-click a node to hide it.

When you right-click on a node, the available options allow you to show only connected nodes in one, two, or unlimited steps. This shows only actors and objects that affect, or are affected by, the selected actor or object via directed communication.

NOTE: Undirected communications, such as through mutexes, are not followed, even though the objects will be displayed.

The Show All Connected and the Show All Connected Only options show the same nodes (actors/objects) but might show different sets of edge lines. The former does not hide communication between those nodes, even if it's unrelated to the selected node.

For example, if you have the communication chains taskA > semaphoreB > taskB > semaphoreC and taskA > semaphoreC and you show nodes connected to taskB, Show All Connected Only (2 steps) would should only the first chain, while Show All Connected (2 steps) would also show the second chain.

Related Topics about the Tracealyzer User Interface:

Related Topics ABOUT TRACEALYZER:

rELATED tOPICS ABOUT MONITORING: