342

FlashGraph: Processing Billion-Node Graphs on an Array of Commodity SSDs

USENIX Conference on File and Storage Technologies (FAST), 2014
Abstract

Graph analysis performs many random reads and writes, thus these workloads are typically performed in memory. Traditionally, analyzing large graphs requires a cluster of machines so the aggregate memory exceeds the size of the graph. We demonstrate that a multicore server can process graphs of billions of vertices and hundreds of billions of edges, utilizing commodity SSDs without much performance loss. We do so by implementing a graph-processing engine within a userspace SSD file system designed for high IOPS and extreme parallelism. This allows us to localize computation to cached data in a non-uniform memory architecture and hide latency by overlapping computation with I/O. Our semi-external memory graph engine, called FlashGraph, stores vertex state in memory and adjacency lists on SSDs. FlashGraph exposes a general and flexible programming interface that can express a variety of graph algorithms and their optimizations. FlashGraph in semi-external memory performs many algorithms up to 20 times faster than PowerGraph, a general-purpose, in-memory graph engine. Even breadth-first search, which generates many small random I/Os, runs significantly faster in FlashGraph.

View on arXiv
Comments on this paper