Adaptive Migration Decision for Multi-Tenant Memory Systems
Hyungjun Cho, Igjae Kim, Kwanghoon Choi, Hongjin Kim, Wonjae Lee, Junhyeok Im, Jinin So, Jaehyuk Huh
TL;DR
This work tackles the overheads of page migration in tiered memory systems by introducing a migration friendliness framework that toggles migration on a per-process basis. It uses a low-cost per-page ping-pong metric to decide when to stop migration and employs lightweight page-table scans to restart migration when memory access patterns change. The design explicitly accounts for multi-tenancy by maintaining per-process state and applying decisions individually rather than globally. Evaluations on a commercial CXL-based tiered memory system show substantial improvements for migration-friendly workloads and strong mitigation of degradation for migration-unfriendly ones, with up to 72% gains over NOMAD in multi-tenant scenarios; the authors also provide Linux kernel implementation details and plan to release the source code publicly.
Abstract
Tiered memory systems consisting of fast small memory and slow large memory have emerged to provide high capacity memory in a cost-effective way. The effectiveness of tiered memory systems relies on how many memory accesses can be absorbed by the fast first-tier memory by page migration. The recent studies proposed several different ways of detecting hot pages and migrating them efficiently. However, our investigation shows that page migration is not always beneficial as it has the associated cost of detecting and migrating hot pages. When an application is unfriendly to migration, it is often better not to migrate pages at all. Based on the observation on migration friendliness, this paper proposes a migration control framework for multi-tenant tiered memory systems. First, it proposes a detection mechanism for migration friendliness, using per-page ping-pong status. Ping-pong pages which are promoted and demoted repeatedly in a short period of time tells migration effectiveness. Based on their change behaviors, migration is stopped or continued. After the page migration is stopped, the second mechanism detects changes of memory access patterns in a low cost way to determine whether migration needs to be resumed. Finally, as each application has a different behavior, our framework provides per-process migration control to selectively stop and start migration depending on application characteristics. We implement the framework in the Linux kernel. The evaluation with a commercial CXL-based tiered memory system shows that it effectively controls migration in single and multi-tenant environments.
