Survey of Memory Management Techniques for HPC and Cloud Computing <s> D. MEMORY AGGREGATION AND DISAGGREGATION <s> Managing a fixed amount of memory (RAM) optimally is a long-solved problem in the Linux kernel. Managing RAM optimally in a virtual environment, however, is still a challenging problem because: (1) each guest kernel focuses solely on optimizing its entire fixed RAM allocation oblivious to the needs of other guests, and (2) very little information is exposed to the virtual machine manager (VMM) to enable it to decide if one guest needs RAM more than another guest. Mechanisms such as ballooning and hot-plug memory (Schopp, OLS’2006) allow RAM to be taken from a selfish guest and given to a needy guest, but these have significant known issues and, in any case, don’t solve the hard problem: Which guests are selfish and which are needy? IBM’s Collaborative Memory Management (Schwidefsky, OLS’2006) attempts to collect information from each guest and provide it to the VMM, but was deemed far too complex and attempts to upstream it have been mostly stymied. Transcendent Memory (tmem for short) is a new approach to optimize RAM utilization in a virtual environment. Underutilized RAM from each guest, plus RAM unassigned to any guest (fallow memory), is collected into a central pool. Indirect access to that RAM is then provided by the VMM through a carefully crafted, page-copy-based interface. Linux kernel changes are required but are relatively small and not only provide valuable information to the VMM, but also furnish additional "magic" memory to the kernel, provide performance benefits in the form of reduced I/O, and mitigate some of the issues that arise from ballooning/hotplug. <s> BIB001 </s> Survey of Memory Management Techniques for HPC and Cloud Computing <s> D. MEMORY AGGREGATION AND DISAGGREGATION <s> With the growing importance of in-memory data processing, cloud service providers have launched large memory virtual machine services to accommodate memory intensive workloads. Such large memory services using low volume scaled-up machines are far less cost-efficient than scaled-out services consisting of high volume commodity servers. By exploiting memory usage imbalance across cloud nodes, disaggregated memory can scale up the memory capacity for a virtual machine in a cost-effective way. Disaggregated memory allows available memory in remote nodes to be used for the virtual machine requiring more memory than its locally available memory. It supports high performance with the faster direct memory while satisfying the memory capacity demand with the slower remote memory. This paper proposes a new hypervisor-integrated disaggregated memory system for cloud computing. The hypervisor-integrated design has several new contributions in its disaggregated memory design and implementation. First, with the tight hypervisor integration, it investigates a new page management mechanism and policy tuned for disaggregated memory in virtualized systems. Second, it restructures the memory management procedures and relieves the scalability concern for supporting large virtual machines. Third, exploiting page access records available to the hypervisor, it supports application-aware elastic block sizes for fetching remote memory pages with different granularities. Depending on the degrees of spatial locality for different regions of memory in a virtual machine, the optimal block size for each memory region is dynamically selected. The experimental results with the implementation integrated to the KVM hypervisor, show that the disaggregated memory can provide on average 6 percent performance degradation compared to the ideal local-memory only machine, even though the direct memory capacity is only 50 percent of the total memory footprint. <s> BIB002
Modern system architectures aim to improve resource isolation approach, allowing servers to share their resources through the memory hierarchy. An extension for the hypervisor to share the memory capacity of the nodes across the computing infrastructure called Globally Visible Tmem (GV-Tmem) was proposed in  . A software architecture allows to aggregate memory across nodes using Xen's Transcendent Memory (Tmem) BIB001 . The general scheme oh the memory aggregation is shown in Figure 19 . This mechanism improves the utilisation of the node's memory but also increases pressure on it, especially if the VMs have varying demands for memory. Due to an increase of in-memory data processing, to perform memory-intensive workloads cloud solutions have to have nodes with large memory. The efficiency of this kind of nodes may be much lower with respect to common hosts in terms of cost and power. However, memory disaggregation allows more memory than locally supported becomes available since more servers are being used for distributed memory. Reference BIB002 proposes an integrated hypervisorbased design for disaggregated memory. Instead of relying on the regular swap system designed for slow disks, the disaggregated memory support is directly added to the memory management in the Kernel-based Virtual Machine hypervisor. The general scheme oh the memory disaggregation is presented in Figure 19 . The memory disaggregation can provide a costeffective way to scale memory capacity while increasing the flexibility of resource allocation and energy efficiency for cloud providers. However, depending on the distribution of fast direct and slow indirect memory, application performance can vary significantly. This unpredictability caused by performance mismatch could potentially prevent the usage of disaggregated memory on cloud systems.