Application level ballooning for efficient server consolidation

Tudor-Ioan Salomie, Gustavo Alonso, Timothy Roscoe, Kevin Elphinstone
2013 Proceedings of the 8th ACM European Conference on Computer Systems - EuroSys '13  
Systems software like databases and language runtimes typically manage memory themselves to exploit application knowledge unavailable to the OS. Traditionally deployed on dedicated machines, they are designed to be statically configured with memory sufficient for peak load. In virtualization scenarios (cloud computing, server consolidation), however, static peak provisioning of RAM to applications dramatically reduces the efficiency and cost-saving benefits of virtualization. Unfortunately,
more » ... ting memory "ballooning" techniques used to dynamically reallocate physical memory between VMs badly impact the performance of applications which manage their own memory. We address this problem by extending ballooning to applications (here, a database engine and Java runtime) so that memory can be efficiently and effectively moved between virtualized instances as the demands of each change over time. The results are significantly lower memory requirements to provide the same performance guarantees to a collocated set of VM running such applications, with minimal overhead or intrusive changes to application code. Restart: We can stop the application and restart it with a larger memory pool backed by the VMM. For example, a DB would stop accepting queries, wait for existing queries to complete, shut down, and restart with a larger memory pool. It requires no changes to the DB, OS, or VMM, but entails significant downtime and hence reduced availability. In the
doi:10.1145/2465351.2465384 dblp:conf/eurosys/SalomieARE13 fatcat:iueaj6vgnfh23mh23zrui4yu6q