Transformation 1: collapse local events

ShiViz emphasizes ordering information and communication between processes. Series of local events that do not involve interactions with other processes are often less relevant to understanding the communication patterns in the system. ShiViz groups and merges these local events into a single node to simplify the visualization and emphasize global ordering information, as illustrated in Figure 3(a). This transformation is enabled by default: All series of events that can be collapsed are collapsed when the execution graph is first shown to the developer. They can expand or collapse each set of nodes independently by clicking on the node and selecting expand or collapse.

Transformation 2: hide host timeline

A developer may want to focus on a subset of the hosts in the system. Using the hide host transformations, a developer can remove a host (including the corresponding host timeline and log lines) from view or bring these back into view. To hide a host, a developer double-clicks on the host box at the top of the time-space diagram. Hidden hosts are collected in the right panel (in Figure 2). To unhide the host, developers double click on the host box in this panel. A dashed edge connects two events at not-hidden hosts that are connected transitively through one or more hidden hosts. Figure 3(b) illustrates this.

Transformation 3: filter by host

The filter by host transformation refines the graph to show just the set of events and hosts that are relevant to communication with a particular host. A white square inside the host box denotes a filtered host. It is possible to filter by more than one host and to unfilter hosts in any order. Figure 3(c) illustrates the filter by host transformation. Figure 4 shows an example of this transformation on the log and view from Figure 2.

Throughout these transformations, the log in the left panel continues to reflect the visible events on the right. For example, when a host is hidden from the graph, the log lines for that host are hidden as well. Therefore, these three graph transformations are log transformations as well.

4.1.4 Ordering Hosts

ShiViz allows users to order the hosts in one of four ways: (1) Order hosts in descending order of the number of events each host generated in total. (2) Order hosts in ascending order of the number of events each host generated in total. (3) Order hosts in descending order of the line number where the host appeared in the log. (4) Order hosts in ascending order of the line number where the host appeared in the log.

4.2 Supporting Execution Graph Queries

Few developers read or browse a complex system's log manually. Instead, developers often focus on specific parts of the log and write regular expressions to parse information they need out of the log [109]. Presenting a visual partial ordering that describes an execution cannot help with this. To be useful for complex logs, ShiViz must be able to support developer queries about the partial ordering. A key challenge for ShiViz is in supporting graph-based queries. Using graph-based queries, developers can express the topologies of interesting event orderings, rather than the text contents of the events themselves.

ShiViz implements two kinds of searches: structured search and keyword search. When a developer clicks in the search area at thestudy, a case study, and a user survey. In the controlled study, participants were asked to complete four tasks related to understanding and debugging a distributed system using either ShiViz or a text-based log analysis tool. The results showed that participants using ShiViz completed the tasks faster and with fewer errors than those using the text-based tool. In the case study, ShiViz was used to analyze logs from a complex distributed system, resulting in significant time savings and improved understanding of the system's behavior. The user survey collected feedback from 13 participants who had used ShiViz in their work. The feedback was overwhelmingly positive, with users reporting that ShiViz was easy to use, helped them understand their systems better, and saved them time in debugging.

Overall, our evaluation shows that ShiViz is an effective tool for understanding and debugging distributed systems. Its search and visualization capabilities allow developers to quickly identify patterns and anomalies in system behavior, while its support for multi-execution comparison and clustering makes it easy to compare and analyze multiple executions. ShiViz's implementation as a pure client-side web application also makes it highly portable and easy to deploy in corporate environments. We believe that ShiViz has significant potential to improve the efficiency and effectiveness of distributed systems development and debugging.Experiment, via a study with 70 students using ShiViz in a distributed systems class, and via two case studies, in which one developer per study used ShiViz while working on a complex system. We also evaluated XVectors performance overhead. We studied four research questions, which are based around the design features of ShiViz highlighted in Section 4:

RQ1: Does ShiViz help understand the relative ordering of events?
RQ2: Does ShiViz help query for inter-host interaction patterns?
RQ3: Does ShiViz help identify structural similarities and differences between pairs of executions?