  We present Memtrade, the first memory disaggregation system for public
clouds. Public clouds introduce a set of unique challenges for resource
disaggregation across different tenants, including security, isolation and
pricing. Memtrade allows producer virtual machines (VMs) to lease both their
unallocated memory and allocated-but-idle application memory to remote consumer
VMs for a limited period of time. Memtrade does not require any modifications
to host-level system software or support from the cloud provider. It harvests
producer memory using an application-aware control loop to form a distributed
transient remote memory pool with minimal performance impact; it employs a
broker to match producers with consumers while satisfying performance
constraints; and it exposes the matched memory to consumers as a secure KV
cache. Our evaluation using real-world cluster traces shows that Memtrade
provides significant performance benefit for consumers (improving average read
latency up to 2.8x) while preserving confidentiality and integrity, with little
impact on producer applications (degrading performance by less than 2.1%).
