GPUKV : Towards a GPU-Driven Computing on Key-Value SSD Min-Gyo Jung† , Chang-Gyu Lee†, Donggyu Park†, Sungyong Park†, Youngjae Kim† Jungki Noh‡, Woosuk Chung‡, Kyoung Park‡ †Sogang University, Seoul, Republic of Korea, ‡SK hynix
Why is Key-Value Store + GPU important? GPU Key-Value Store Massive Parallelism Good to store unstructured data Boost data-intensive applications Widely used for storing big data More powerful performance and usability for data-intensive applications e.g. Map-Reduce, Graph Processing, Data Analysis …
Data Transfer Flow from Key-Value Store to GPU Host GPU Application GPU kernel Main Memory RocksDB GPU Memory User User Engine Space Space Kernel Kernel Space Space File System NVMe Driver Control Path SSD SSD Controller Data Path Storage
① Data Transfer Flow from Key-Value Store to GPU Host GPU Application GPU kernel Main Memory RocksDB GPU Memory User User Engine Space Space Kernel Kernel Space Space File System NVMe Driver Control Path SSD SSD Controller Data Path Storage
② ① � � ③ Data Transfer Flow from Key-Value Store to GPU Host GPU Application GPU kernel Main Memory RocksDB GPU Memory User User Engine Space Space Kernel Kernel Space Space File System NVMe Driver Control Path SSD SSD Controller Data Path Storage
Data Transfer Flow from Key-Value Store to GPU ④ Host GPU Application GPU kernel Main Memory ① ③ RocksDB GPU Memory � User User Engine Space Space � � Kernel Kernel Space Space File System ② NVMe Driver � Control Path SSD SSD Controller Data Path Storage
Data Transfer Flow from Key-Value Store to GPU ④ Host GPU Application GPU kernel Main Memory ① ③ RocksDB GPU Memory � User User Engine Space Space � � Kernel Kernel Space Space File System Extra data movement ② Sophisticated control path NVMe Driver � Control Path SSD SSD Controller Data Path Storage
Data Transfer Flow from Key-Value Store to GPU ④ Host GPU Application GPU kernel Main Memory ① ③ RocksDB GPU Memory � User User Engine What if doing this using Space Space � � Kernel Kernel PCIe P2P transmission? Space Space File System ② NVMe Driver � Control Path SSD SSD Controller Data Path Storage
Data Transfer Flow when transferring using P2P Host GPU Application GPU kernel Main Memory RocksDB GPU Memory User User Engine Space Space Kernel Kernel Space Space File System NVMe Driver Control Path SSD Additional Path SSD Controller Data Path Storage
� ① ② � Data Transfer Flow when transferring using P2P Host GPU Application GPU kernel Main Memory RocksDB GPU Memory User User Engine Space Space Kernel Kernel Space Space File System NVMe Driver Control Path SSD Additional Path SSD Controller Data Path Storage
� ③ ② � ① Data Transfer Flow when transferring using P2P Host GPU Application GPU kernel Main Memory RocksDB GPU Memory User User Engine Space Space Kernel Kernel Space Space File System NVMe Driver Control Path SSD Additional Path SSD Controller Data Path Storage
� ① � ④ ② � ③ Data Transfer Flow when transferring using P2P Host GPU Application GPU kernel Main Memory RocksDB GPU Memory User User Engine Space Space Kernel Kernel Space Space File System NVMe Driver Control Path SSD Additional Path SSD Controller Data Path Storage
Data Transfer Flow when transferring using P2P ⑥ Host GPU Application GPU kernel Main Memory ① ⑤ RocksDB GPU Memory User User Engine Space Space ④ ③ � Kernel Kernel Space Space File System � ② � NVMe Driver Control Path SSD Additional Path SSD Controller Data Path Storage
Data Transfer Flow when transferring using P2P ⑥ Host GPU Application GPU kernel Main Memory ① ⑤ RocksDB GPU Memory User User Engine Space Space ④ ③ � Kernel Kernel Reduces data movement Space Space File System � More complicated control path ② � Data alignment for P2P NVMe Driver Control Path SSD Additional Path SSD Controller Data Path Storage
What does GPUKV suppose to do? § GPU-driven computing model • GPU issues IO bypassing host architectures § Reduce data movement using PCIe P2P • Data storage ↔ Accelerator (GPU) • Save wasting memory bus bandwidth § Simple control path • Implementing Key-Value store at SSD, reduce complex control paths
Data Transfer Latency Breakdown ����������� ��� ��� �������������� ���������������������� ���������� ��� ��� ��� � ������� �������������� ������������
Data Transfer Latency Breakdown ����������� ��� ��� �������������� ���������������������� ���������� ��� ��� ��� � ������� �������������� ������������ In ideal case, GPUKV only needs data transfer latency
Data Transfer Latency Breakdown ����������� ��� ��� �������������� ���������������������� ���������� ��� ��� ��� � ������� �������������� ������������ GPU-driven Computing is necessary!
GPUKV ’s Data Transfer Flow Host GPU Application GPU kernel User No Redundant data copy Space GPUKV Driver Kernel GPU Memory Key-Value Space Simple and short Control Path Driver Key-Value SSD Data request from GPU itself SSD Controller GPU Control Path CPU Control Path Data Path Storage
Preliminary Results: Synthetic Workloads § Streaming workload ( 𝑋 !"#$%&'() ) • Predictable data access pattern • The next dataset needed by GPU kernel can be prefetched § Dynamic workload ( 𝑋 *+(%&', ) • Unpredictable data access pattern • The next dataset GPU kernel needs cannot be prefetched • Only can be loaded when current GPU kernel finishes.
Preliminary Results: Synthetic Workloads ����� ��� ��� ������������� ��� ������� ��� ������������������ ������������������ ��� ��� ��� ��� ��� ��� ��� ��� � � � �� ��� � �� ��� ������������������������������� ������������������������������� 𝑋 𝑋 !"#$%&$'( )"#*+'(
Preliminary Results: Synthetic Workloads ����� ��� ��� ������������� ��� ������� ��� ������������������ ������������������ ��� ��� ��� ��� ��� ��� ��� ��� � � � �� ��� � �� ��� ������������������������������� ������������������������������� 𝑋 𝑋 !"#$%&$'( )"#*+'( Conventional way: Need powerful host resources
Preliminary Results: Synthetic Workloads ����� ��� ��� ������������� ��� ������� ��� ������������������ ������������������ ��� ��� ��� ��� ��� ��� ��� ��� � � � �� ��� � �� ��� ������������������������������� ������������������������������� 𝑋 𝑋 !"#$%&$'( )"#*+'( Our approach – GPUKV : Always shows best performance with only 1 I/O thread Barely requires host resource
GPUKV : Towards a GPU-Driven Computing on Key-Value SSD Min-Gyo Jung† , Chang-Gyu Lee†, Donggyu Park†, Sungyong Park†, Youngjae Kim† Jungki Noh‡, Woosuk Chung‡, Kyoung Park‡ †Sogang University, Seoul, Republic of Korea, ‡SK hynix jmg7173@u.sogang.ac.kr
Recommend
More recommend