{
  "slug": "flashgraph",
  "term": "FlashGraph",
  "aliases": [],
  "definition": "FlashGraph is a semi-external-memory graph engine that keeps vertex state in RAM and reads edge lists from SSDs through SAFS.",
  "note": "The FAST 2015 design overlaps host computation with I/O. It requests needed edge lists and merges requests for the same or adjacent pages; user tasks consume the SAFS page cache without separate application read buffers. [flashgraph-paper]\n\nThe programming guide separates run, run_on_vertex and run_on_message. An adjacency-list request is followed by a callback when its data is ready; an inactive vertex can still receive messages. Iteration completion requires both an empty active set and no pending requests. [flashgraph-guide]\n\nThe public implementation is part of FlashX, alongside the distinct FlashMatrix engine; the repository provides source under Apache-2.0. [flashgraph-code]",
  "status": "research",
  "advantages": [],
  "limitations": [
    {
      "text": "RAM must still accommodate vertex state, the graph index, runtime status and message queues, alongside the page cache.",
      "citationIds": [
        "flashgraph-paper"
      ]
    },
    {
      "text": "Callback execution order is not guaranteed; algorithm authors must preserve vertex-state correctness.",
      "citationIds": [
        "flashgraph-guide"
      ]
    }
  ],
  "related": [
    "ssd",
    "io-request-size"
  ],
  "supersedes": [],
  "supersededBy": [],
  "firstSeen": null,
  "lastSeen": null,
  "updated": "2026-11-14",
  "citations": [
    {
      "id": "flashgraph-paper",
      "title": "Zheng et al. FlashGraph: Processing Billion-Node Graphs on an Array of Commodity SSDs. FAST 2015, pp. 45-58; sections 3.1-3.6, 5.",
      "url": "https://files.usenix.org/s3fs-public/cdn/fast15-paper-zheng.pdf",
      "accessed": "2026-11-14"
    },
    {
      "id": "flashgraph-guide",
      "title": "FlashX: The FlashGraph User Guide. Vertex program, interaction with other vertices and adjacency-list access.",
      "url": "https://flashxio.github.io/FlashX-doc/FlashGraph-user-guide.html",
      "accessed": "2026-11-14"
    },
    {
      "id": "flashgraph-code",
      "title": "FlashX project: source, component boundaries and Apache-2.0 license.",
      "url": "https://github.com/flashxio/FlashX",
      "accessed": "2026-11-14"
    },
    {
      "id": "hesela-ssd",
      "title": "Hesela: SSD architecture and application I/O trade-offs.",
      "url": "https://hesela.com/tech/ssd/",
      "accessed": "2026-11-14"
    }
  ],
  "provenance": [
    "Primary-source review, not a reproduced FlashGraph benchmark. Historical performance comparisons are not modern-device guarantees."
  ]
}
