Our paper “Ginkgo, Automated, Application-Driven Memory Overcommitment for Cloud Computing” has been accepted to the ASPLOS RESoLVE workshop. Here is the abstract:
Continuous advances in multicore and I/O technologies have caused memory to become a very valuable sharable resource that limits the number of virtual machines (VMs) that can be hosted in a single physical server. While today’s hypervisors implement a wide range of mechanisms to overcommit memory, they lack memory allocation policies and frameworks capable of guaranteeing levels of quality of service to their applications.
In this short paper we introduce Ginkgo, a memory overcommit framework that takes an application-aware approach to the problem. Ginkgo dynamically estimates VM memory requirements for applications without user involvement or application changes. Ginkgo regularly monitors application progress and incoming load for each VM, using this data to predict application performance under different VM memory sizes. It automates the distribution of memory across VMs during runtime to satisfy performance and capacity constraints while optimizing towards one of several possible goals, such as maximizing overall system performance, minimizing application quality-of-service violations, minimizing memory consumption, or maximizing profit for the cloud provider.
Using this framework to run the benchmarks DayTrader 2.0 and SPECweb2009, our initial experimental results indicate that overcommit ratios of at least 2x can be achieved while maintaining application performance, independently of additional memory savings that can be enabled by techniques such as page coalescing.
I will post the final version of the paper on the publications page when it will be ready.
I admit I am not a CS technical professional, however gather why cloud infrastructures naturally will progressively benefit from overcommitment technologies to optimally manage shared resource pools (e.g., memory, cpu). It is interesting how you describe Ginkgo as allocating the “distribution of memory across VMs during runtime to satisfy performance and capacity constraints while optimizing towards one of several possible goals…”. Notably I focus on the phrase “one of several possible goals”. I am not sure precisely how this calculation is performed, but I thought your wife’s work on Pareto Frontiers offers some thoughts perhaps on this. Forgive my naivete, but I think of Ginkgo as your wife thinks of a scientist looking for an optimal allocation of a computational exercise across multiple alternatives. If Ginkgo could leverage emerging stochastic data for a group of applications or VM’s in a cloud environment, would it not be able to arrive at a set of better allocation assumptions to support an optimal multi-objective result for the allocation of overcommitted resources?
If this could not be done real-time, perhaps a periodic planning analysis using such a method could provide tuning parameters for the current Ginkgo algorithm.
Comment by Blair Binney — July 4, 2011 @ 5:55 AM |
Hello Blair,
Thanks for the insightful comment. Yes, combining both of these works to look for Pareto-efficient strategies for allocation of computing resources is certainly possible — but we haven’t done it (yet) š
Cheers,
Muli
Comment by mulix — July 4, 2011 @ 11:13 AM |
Hi Blair, Muli,
I doubt that finding the Pareto frontier would be interesting here in real-world scenarios (that is, except for presenting nice graphs). The benefit of finding the Pareto frontier for bags of tasks is that bags of tasks run for hours and even days, and the person has time to think in the middle. The Pareto frontier allows the machine to generate the solutions first, while leaving optimization and decision making for later.
In the memory management context, we want something that will operate automatically. Of course, we can optimize for a function which is composed of several function as specified above. We simply define a new function, and solve to minimize it using the same constraint satisfaction/linear programming software used for Ginkgo. But the function must be defined (by the owner of the host) in advance anyhow, so a Pareto frontier would not help here. We cannot offer several solution options – we must have one solution in real time.
Orna.
Comment by Orna Agmon Ben-Yehuda — July 4, 2011 @ 11:40 AM |
I think that was the idea – while an “automatic operation” would have to arrive at a single outcome (rather than a frontier), the question is whether at some regular interval this overcommitment algorithm could be tuned based on multiple objectives.
We are using pareto frontiers currently to evaluate complex decisions across corporate investment portfolios (Business Transformation) where (coincidently) risk pooling permits an overcommitment of available resources. This is similar to the problem of optimizing concurrent usage of resources in a cloud methinks, where the cloud case could provide some insights to portfolio management interms of identify common resources perceived to be uniquely mapped to multiple projects.
Comment by Blair Binney — July 4, 2011 @ 11:33 PM |