Diffs and page requests are the Treadmarks operations that are the focus of communication analysis, which is also implemented as a pipeline of tools. The first tool takes as input a trace containing all page-related events (i.e., page faults, diff requests, invalidations) and maintains a per-page record of the latest operations to affect a page on each processor. When the tool encounters a request event in the trace, it outputs a summary of the request (i.e., processor, source code location, time to satisfy) and its cause, which is defined as the invalidation location and the preceding write-fault information (i.e., processor and source code location).
Another tool takes as input the page request summaries and their causes, and creates, for each page, a causality graph, where the nodes are locations in the code and the edges are causal relations. There is an edge from one node to another if the source location (basic block) associated with the first node caused an access fault in the source location associated with the second node. Both nodes and edges have attributes; the nodes describe the set of processors that read or wrote the page, and the access patterns exhibited, while the edges contain the cumulative request costs and the location of the synchronization operation that produced the invalidation.
The last tool in the pipeline creates a database of causality graphs, which summarize the access patterns in the program and the causes of remote page references. The causality graph for the program merges page causality graphs that are similar in terms of access patterns and causes. This last tool also creates the visualization interface for examining the access patterns to data structures and sets of pages.