  Stream analytics have 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 appear 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.
