Advances in memory management in a virtualized environment*
One Line Summary
Memory Management in a virtualized environment is a hard problem with many creative solutions being developed
Managing a fixed amount of RAM optimally is a long-solved problem in the Linux kernel. Managing RAM optimally in a virtual enviroment, however, is still a challenging problem because: (1) each guest kernel is busy 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 (a) enable it to decide if one guest needs RAM more than another guest and (b) which memory guests can most easily do without. 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 so far been rebuffed. The now upstream Kernel Samepage Merging (KSM) feature has potential but also has some weaknesses.
We will briefly describe some of these solutions and compare them with the recently proposed cleancache and frontswap patches, built on Xen Transcendent Memory (“tmem”) and also in-kernel compressed page cacheing.
Virtualization, memory management, transcendent memory, ballooning, KSM
Dan Magenheimer is a consulting developer for Oracle Corporation working from his home in Fort Collins, Colorado, USA, on “Oracle VM”, Oracle’s Xen-based virtualization product. Dan’s current focus is in virtualized memory management and virtualized time.
Prior to Oracle, Dan worked for HP for over 25 years, most recently as a principal research scientist at HP Labs. Dan began at HP as a member of the processor architecture team that developed PA-RISC; he wrote the first PA-RISC simulator, remote debugger, object-code emulator (for the 16-bit HP3000), integer multiplication algorithm, and linker. During the later 1980’s and the 1990’s, he managed various R&D teams in HP’s software, server, and storage divisions. In 2001, Dan joined an HP Labs team investigating security and virtualization on the Itanium platform; this team developed vBlades, the first Itanium virtual machine monitor. Later, Dan ported Xen to Itanium and was the first maintainer for the Xen/ia64 project.