검색 상세

P2P DMA 기술을 이용한 GPU와 키-값 SSD의 직접 I/O 프레임워크 연구

GPUKV: A Direct I/O Framework between GPU and Key-Value SSD using PCIe Peer-to-Peer DMA Support on GPU

초록/요약

빅 데이터 처리 작업의 성능을 향상 시키기 위해 최근 GPU를 사용하여 연산을 가속화하려는 연구가 많이 진행되고 있다. 한편, 빅 데이터를 저장하고 관리하기 위해 사용되던 키-값 저장소의 구현에도 새로운 시도가 등장하였다. 기존의 키-값 저장소에서 존재하던 호스트 시스템 스택의 오버헤드를 줄이기 위한 시도로, SSD 내부 자원만으로 키-값 저장소를 구현하는 키-값 SSD 연구가 이루어지고 있다. 최근 등장한 키-값 SSD와 GPU를 사용하여 빅 데이터 처리 작업의 성능을 향상시키는 것에는 문제점이 존재한다. 키-값 SSD와 GPU 간의 데이터 전송 과정에서 발생되는 오버헤드가 데이터 전송 시간을 증가시켜 성능 향상이 제한된다는 것이다. 키-값 SSD와 GPU 간의 데이터 전송 과정에서는 직접 데이터 전송이 불가능해 다수의 데이터 복사본이 발생하고, 불필요한 유저 모드와 커널 모드의 문맥전환 또한 발생하여 데이터 전송 시간을 증가시킨다. 본 논문에서는 데이터 전송 오버헤드를 최소화하기 위해 GPU에서 연산 수행 중에 키-값 SSD에 직접 접근할 수 있고, 키-값 SSD와 GPU간의 데이터 직접 전송이 가능한 프레임워크인 GPUKV를 제안한다. 먼저, GPUKV는 GPU에서 키-값 SSD에 직접 접근할 수 있는 인터페이스를 제공한다. 그리고, 인터페이스를 통한 GPU의 요청을 키-값 SSD로 전달하면서 키-값 SSD의 성능을 최대한 활용하는 GPU와 CPU의 통신 프로토콜을 구현한다. 이를 통해 GPU 쓰레드가 키-값 SSD와의 I/O 수행을 가능하게 하여 I/O를 수행하는 쓰레드와 연산을 수행하는 쓰레드의 동시 수행을 통해 연산과 데이터 전송을 자동으로 중첩시킨다. 또한 GPUKV는 PCIe P2P 통신 기술을 이용하여 키-값 SSD와 GPU 간의 데이터 직접 전송을 구현하여 데이터 전송 오버헤드를 최소화한다. GPUKV의 성능을 측정하기 위해 다양한 마이크로 벤치마크를 수행하였으며, GPUKV는 스트리밍 워크로드와 데이터 접근 패턴이 불규칙적인 워크로드에서 기존 GPU 프로그래밍 방식 대비 26%의 성능 향상을 보였다.

more

초록/요약

To improve the performance of Big Data Processing, many studies have recently been conducted to accelerate computations using GPU. Meanwhile, new attempts have also emerged to implement Key-Value Store used to store and manage Big Data. To reduce the overhead of the host system stack existing in Key-Value Store, studies of Key-Value SSD that implements Key-Value Store only with internal resources of SSD have been conducted. Attempts to improve the performance of Big Data Processing using recently emerged key-value SSD and GPU fails due to the overhead that occurs in the data transfer between Key-Value SSD and GPU. Since the direct data transfer between Key-Value SSD and GPU is not possible, the data transfer between Key-Value SSD and GPU results in multiple data copies and unnecessary context switches between user mode and kernel mode. And, these increase the data transfer time. To minimize data transfer overhead, this paper propose GPUKV which is a framework that allows direct access to Key-Value SSD in GPU kernel, and supports direct data transfer between Key-Value SSD and GPU. GPUKV provides an interface that allows direct access to Key-Value SSD from GPU. And, it implements GPU and CPU communication protocol that maximizes the performance of Key-Value SSD while transferring requests from GPU over the interface to Key-Value SSD. Thus GPUKV allows GPU threads to perform I/O with Key-Value SSD, which automatically overlaps computation and data transfer through concurrent execution of I/O threads and computation threads. Also, GPUKV implements direct data transfer between Key-Value SSD and GPU to minimize data transfer overhead. Various micro benchmarks were performed to measure the performance of the GPUKV, which showed a 26% improvement over traditional GPU programming model for workloads with streaming and irregular data access patterns.

more