  Public cloud providers seek to meet stringent performance requirements and
low hardware cost. A key driver of performance and cost is main memory. Memory
pooling promises to improve DRAM utilization and thereby reduce costs. However,
pooling is challenging under cloud performance requirements. This paper
proposes Pond, the first memory pooling system that both meets cloud
performance goals and significantly reduces DRAM cost. Pond builds on the
Compute Express Link (CXL) standard for load/store access to pool memory and
two key insights. First, our analysis of cloud production traces shows that
pooling across 8-16 sockets is enough to achieve most of the benefits. This
enables a small-pool design with low access latency. Second, it is possible to
create machine learning models that can accurately predict how much local and
pool memory to allocate to a virtual machine (VM) to resemble same-NUMA-node
memory performance. Our evaluation with 158 workloads shows that Pond reduces
DRAM costs by 7% with performance within 1-5% of same-NUMA-node VM allocations.
