[논문 리뷰] FlashGraph: processing billion-node graphs on an array of commodity SSDs
FlashGraph는 메모리에 정점 상태를 저장하고 SSD에 간선 목록을 저장함으로써 일반 소비자용 SSD에서 빌리언 노드 그래프를 효율적으로 처리할 수 있도록 한다. 사용자 영역의 SSD 파일 시스템을 사용하여 고 IOPS와 병렬 I/O를 달성하며, 메모리 내 성능의 약 80%에 도달하고 PowerGraph보다 I/O 오버헤드를 최소화함으로써 뛰어난 성능을 발휘한다.
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를 겹쳐 수행함으로써 FlashGraph는 효과적으로 I/O 지연 시간을 숨긴다.
- 요청된 간선 목록만 접근함으로써 불필요한 I/O 대역폭 소비를 줄인다.
- 일관된 I/O 요청 병합은 I/O 처리량을 높이고 CPU 오버헤드를 최소화한다.
- 반외부 메모리 설계 덕분에 단일 서버에서 수십억 개의 정점과 수백조 개의 간선을 가진 그래프를 처리할 수 있다.
더 나은 연구,지금 바로 시작하세요
논문 읽기부터 검토까지, 연구 시간을 획기적으로 줄여보세요.
카드 등록 없음 · 무료 플랜 제공
이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.