초대형 그래프 처리를 위한 바이샤드 병렬 엔진 BPP

초대형 그래프 처리를 위한 바이샤드 병렬 엔진 BPP

초록

BPP는 GraphChi의 저장 구조를 확장하고 BiShard Parallel(BP) 모델을 도입해 단일 PC에서 수십억 규모 그래프를 효율적으로 처리한다. 비순차 I/O를 크게 감소시키고 CPU 코어 전체를 활용함으로써 기존 GraphChi 대비 처리 속도가 크게 향상된다.

상세 분석

본 논문은 대규모 그래프 처리에 있어 기존 분산 시스템이 갖는 복잡한 파티셔닝·분산·장애 복구 오버헤드와, 단일 머신 기반 GraphChi가 겪는 두 가지 주요 병목(비순차 I/O 과다, 병렬성 부족)을 동시에 해결하고자 한다. 이를 위해 저자들은 GraphChi가 사용한 “슬라이스” 기반 저장 방식을 그대로 유지하면서, 각 슬라이스를 두 개의 “바이샤드”(BiShard)로 분할한다. 하나의 바이샤드는 정점의 인-엣리스트를, 다른 하나는 아웃-엣리스트를 담아, 동일 슬라이스 내에서 양방향 접근이 가능하도록 설계되었다. 이러한 구조는 한 번의 순차 읽기로 해당 슬라이스에 속한 모든 정점의 입·출력 정보를 동시에 확보할 수 있게 하여, 기존 GraphChi가 매번 두 번의 비순차 디스크 접근을 수행하던 문제를 절반 이하로 감소시킨다.

또한, 논문은 새로운 연산 모델인 BiShard Parallel(BP)을 제시한다. BP는 “샤드 단위”가 아니라 “바이샤드 단위”로 작업을 스케줄링함으로써, 각 코어가 독립적인 바이샤드에 매핑되어 충돌 없이 동시에 업데이트를 수행한다. 기존 GraphChi는 하나의 슬라이스를 여러 스레드가 공유하면서 잠금·동기화 비용이 발생했지만, BPP는 각 바이샤드가 서로 겹치지 않는 메모리 영역을 차지하므로 락 프리(lock‑free) 병렬 처리가 가능하다. 이와 더불어, 저자들은 작업 큐와 작업 스케줄러를 최적화해 CPU 캐시 친화성을 높이고, 디스크 I/O와 연산을 파이프라인화함으로써 전체 처리 파이프라인의 효율을 극대화했다.

실험에서는 실세계 소셜 네트워크 그래프와 웹 그래프 등 1억10억 정점 규모의 데이터셋을 사용했으며, PageRank, Connected Components, Triangle Counting 등 대표적인 그래프 알고리즘을 실행했다. 결과는 BPP가 GraphChi 대비 평균 35배, 최악의 경우 7배까지 처리 속도가 빨라졌음을 보여준다. 특히 I/O 비용이 전체 실행 시간의 60% 이상을 차지하던 상황에서 BPP는 I/O 비중을 30% 이하로 낮추어 CPU 활용률을 크게 끌어올렸다.

이러한 설계는 “단일 머신에서 대규모 그래프를 효율적으로 처리한다”는 목표를 달성함과 동시에, 복잡한 클러스터 관리 없이도 높은 확장성을 제공한다는 점에서 실용적 의의가 크다. 다만, 메모리 요구량이 기존보다 다소 증가하고, 바이샤드 수에 따라 디스크 공간이 두 배로 늘어나는 점은 비용 측면에서 고려해야 할 요소이다. 향후 연구에서는 메모리 압축 기법과 동적 바이샤드 재배치를 통해 이러한 한계를 보완할 여지가 있다.