一句话:提出首个面向混合内存的流分析引擎,用HBM中的顺序排序和KPA替代随机哈希分组,实现高吞吐。
流分析对内存容量和性能有巨大需求。新兴混合内存结合DDR4 DRAM与3D堆叠HBM,但HBM容量有限且更适合顺序访问与高并行,而流分析的高容量需求和随机访问分组操作似乎与之不匹配。本文设计并实现StreamBox-HBM,在HBM中用顺序访问排序算法完成数据分组,仅将包含键和完整记录指针的KPA存入HBM;它动态创建和管理数据与流水线并行,按需分配KPA,并针对HBM高带宽低容量与DRAM低带宽高容量进行动态优化。在Intel Knights Landing 64核混合内存服务器上,StreamBox-HBM达到每秒1.1亿条记录和238 GB/s内存带宽,吞吐比使用顺序访问但无KPA的流引擎快7倍,比随机访问流引擎高一个数量级。
Stream analytics has an insatiable demand for memory and performance. Emerging hybrid memories combine commodity DDR4 DRAM with 3D-stacked High Bandwidth Memory (HBM) DRAM to meet such demands. However, achieving this promise is challenging because (1) HBM is capacity-limited and (2) HBM boosts performance best for sequential access and high parallelism workloads. At first glance, stream analytics appears a particularly poor match for HBM because they have high capacity demands and data grouping operations, their most demanding computations, use random access. This paper presents the design and implementation of StreamBox-HBM, a stream analytics engine that exploits hybrid memories to achieve scalable high performance. StreamBox-HBM performs data grouping with sequential access sorting algorithms in HBM, in contrast to random access hashing algorithms commonly used in DRAM. StreamBox-HBM solely uses HBM to store Key Pointer Array (KPA) data structures that contain only partial records (keys and pointers to full records) for grouping operations. It dynamically creates and manages prodigious data and pipeline parallelism, choosing when to allocate KPAs in HBM. It dynamically optimizes for both the high bandwidth and limited capacity of HBM, and the limited bandwidth and high capacity of standard DRAM. StreamBox-HBM achieves 110 million records per second and 238 GB/s memory bandwidth while effectively utilizing all 64 cores of Intel's Knights Landing, a commercial server with hybrid memory. It outperforms stream engines with sequential access algorithms without KPAs by 7x and stream engines with random access algorithms by an order of magnitude in throughput. To the best of our knowledge, StreamBox-HBM is the first stream engine optimized for hybrid memories.