Skip to main content
QUICK REVIEW

[论文解读] FlashGraph: processing billion-node graphs on an array of commodity SSDs

Da Zheng, Disa Mhembere|arXiv (Cornell University)|Feb 16, 2015
Graph Theory and Algorithms参考文献 31被引用 185
一句话总结

FlashGraph 通过将顶点状态存储在内存中、边列表存储在 SSD 上,在通用 SSD 上实现了对十亿节点图的高效处理,利用用户空间 SSD 文件系统实现高 IOPS 和并行 I/O。其性能最高可达内存处理性能的 80%,并通过请求合并和延迟隐藏技术最小化 I/O 开销,优于 PowerGraph。

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 graph size. We demonstrate that a multicore server can process graphs with billions of vertices and hundreds of billions of edges, utilizing commodity SSDs with minimal performance loss. We do so by implementing a graph-processing engine on top of a user-space SSD file system designed for high IOPS and extreme parallelism. Our semi-external memory graph engine called FlashGraph stores vertex state in memory and edge lists on SSDs. It hides latency by overlapping computation with I/O. To save I/O bandwidth, FlashGraph only accesses edge lists requested by applications from SSDs; to increase I/O throughput and reduce CPU overhead for I/O, it conservatively merges I/O requests. These designs maximize performance for applications with different I/O characteristics. FlashGraph exposes a general and flexible vertex-centric programming interface that can express a wide variety of graph algorithms and their optimizations. We demonstrate that FlashGraph in semi-external memory performs many algorithms with performance up to 80% of its in-memory implementation and significantly outperforms PowerGraph, a popular distributed in-memory graph engine.

研究动机与目标

  • 解决内存图处理在十亿节点图上的可扩展性瓶颈。
  • 在单台多核服务器上实现大规模图分析,而非依赖集群。
  • 通过有效利用通用 SSD,降低对昂贵主内存的依赖。
  • 在保持高吞吐量的同时,最小化 I/O 开销和 CPU 成本,以支持多种图工作负载。
  • 设计一种灵活的、以顶点为中心的编程接口,用于表达各种图算法。

提出的方法

  • 实现一种针对高 IOPS 和极致并行性优化的用户空间 SSD 文件系统,以支持低延迟 I/O 操作。
  • 将顶点状态存储在主内存中,边列表存储在 SSD 上,实现半外部内存处理。
  • 通过计算与 I/O 的重叠来隐藏延迟,提升整体吞吐量。
  • 仅访问所需边列表,减少 I/O 带宽使用。
  • 保守地合并 I/O 请求,以提高吞吐量并减少 CPU 开销。
  • 提供通用的以顶点为中心的编程接口,用于表达多样化的图算法及优化。

实验结果

研究问题

  • RQ1仅使用通用 SSD 的单服务器系统能否在不依赖内存存储的情况下高效处理十亿节点图?
  • RQ2通过计算与 I/O 的重叠,图处理中 I/O 延迟的隐藏效果如何?
  • RQ3仅访问所需边列表,I/O 带宽的减少程度如何?
  • RQ4在图工作负载中,保守的 I/O 请求合并对吞吐量和 CPU 开销的影响如何?
  • RQ5FlashGraph 的性能与内存系统及现有分布式引擎(如 PowerGraph)相比如何?

主要发现

  • FlashGraph 在多种图算法上实现了其内存版本最高 80% 的性能表现。
  • FlashGraph 在相同工作负载下显著优于领先的分布式内存图引擎 PowerGraph。
  • 通过计算与 I/O 操作的重叠,系统有效隐藏了 I/O 延迟。
  • 通过仅访问所需边列表,FlashGraph 减少了不必要的 I/O 带宽消耗。
  • 保守合并 I/O 请求在提升 I/O 吞吐量的同时,最小化了 CPU 开销。
  • 半外部内存设计使得在单台服务器上处理包含数十亿个顶点和数百亿条边的图成为可能。

更好的研究,从现在开始

从阅读论文到最终审阅,大幅缩短您的研究时间。

无需绑定信用卡

本解读由 AI 生成,并经人工编辑审核。