GraphTides

GraphTides is a novel generic evaluation framework for stream-based graph processing systems.


It covers the full evaluation cycle from workload generation to result analysis and provides the analyst with a set of framework components to design their own experiments for a streambased graph system.

GraphTides framework supports developers of stream-based graph systems, allowing for in-depth performance measurements, and comparisons of stream-based graph systems.



GraphTides In a Nutshell

For detailed overview of GraphTides framework please refer to our GRADES-NDA'18 paper


Overview and Architecture

GraphTides comprises metrics, workloads, components of the evaluation architecture, and methodological recommendations.

GraphTides framework consists of:

  • Graph stream generator component, for the creation of graph streams,
  • Test harness component, which is composed of:
    • Graph stream replayer,
    • The system under test,
    • Runtime metrics logger,
  • Log collector component, for the collection of results.

GraphTides

During a test run, the graph stream replayer outputs a generated stream, feeding the system under test while runtime metrics loggers gather continuous data from the system, its processing results, and other sources. After a finished run, the log collector aggregates the recorded data and yields a single result log.

In order to connect the test harness to the system under test, the user either plugs a platform-specific connector into the graph stream replayer component, or provides logic within the platform to receive and terminate the inbound stream accordingly.

Although all components, including the system under test, could be placed on the same machine, GraphTides is aimed at a distributed setup that conforms with most use cases.


What type of systems does GraphTides support?

GraphTides is a platform-agnostic framework aimed at stream-based graph processing platforms which receive a continuous, unbounded stream of graph events from an external source via the network, while maintaining a stateful and mutable underlying graph. The systems use the underlying graph to execute online graph computations, therefore, graph computations and graph mutations run concurrently.

What kind of stream events does GraphTides support?

GraphTides assume streams where each event contains a single, localized operation which describes a change within the graph topology (i.e., by adding or removing a vertex or edge) or an update to its state (i.e., by updating the properties of a vertex or edge).

What type of graphs does GraphTides support?

GraphTides supports directed stateful graphs, where both vertices and edges possess a mutable state. GraphTides does not consider multigraphs or self loops. Undirected graphs can be modeled by ignoring edge directions and stateless graphs can be represented by ignoring state properties.

What kind of workloads does GraphTides support?

GraphTides assumes at least one active graph stream and any number of graph computations to be executed during streaming. Computations can include diverse graph queries, such as calculating graph statistics and graph properties, executing traversal algorithms, running connectivity and community detection algorithms, and many more.

Which metrics does GraphTides support?

GraphTides focuses on time-series values for most metrics, collected at runtime by a set of logger instances. GraphTides supports measuring general systems metrics such as CPU load, memory usage, network I/O, and disk I/O, as well as additional internal metrics such as internal throughput rates and communication latencies between workers. In addition, GraphTides supports streaming metrics such as ingress rate, and computation metrics such as latency and accuracy.

Implementation and Download

An up-to-date implementation and source code of GraphTides is available under the MIT license on GitHub.

The graph stream generator component is implemented in TypeScript using Node.js. The graph stream replayer component is implemented in Java 9. For our current test evaluations, Python and Node.js scripts are being used as runtime metrics loggers.

Credit

Please feel free to contact the authors, raise issues, or create a pull-request via GitHub.

ACM Ref Citation:

Benjamin Erb, Dominik Meißner, Frank Kargl, Benjamin A. Steer, Felix Cuadrado, Domagoj Margan, and Peter Pietzuch. 2018. Graphtides: a framework for evaluating stream-based graph processing platforms. In Proceedings of the 1st ACM SIGMOD Joint International Workshop on Graph Data Management Experiences & Systems (GRADES) and Network Data Analytics (NDA) (GRADES-NDA '18), Akhil Arora, Arnab Bhattacharya, George Fletcher, Josep Lluis Larriba Pey, Shourya Roy, and Robert West (Eds.). ACM, New York, NY, USA, Article 3, 10 pages. DOI: https://doi.org/10.1145/3210259.3210262