These are all mechanisms. Both ballooning and VM oblivious page sharing are mechanisms, and then you need policies at the higher level in terms of how these mechanisms are being used. The memory allocation policies, this comes back to Nitiesh's original question. What is the SLAs that have been agreed upon between the VMs and the hypervisor. One approaches a pure share-based approach. What that means is if Eric paid for certain amount of physical memory, he paid for it, he can sit on it. So even if he's not using it, we're not going to touch it. That's one way of doing it, or Eric could negotiate and say, well, when I'm not using it you're allowed to take it away from me so long as you give it back to me, and I might charge them less for that. So that's a possibility. The second approach is a variation of what I just said about negotiating the rate based on my usage is a working set based approach, meaning that if I know what is the working set of a VM, based on that, I can take away some memory and charge that particular VM less for the usage of memory. So those are policies that can be baked into the hypervisor. Another technique is a dynamic idle adjusted shares approach, and the idea here is that Eric has a bunch of memories that have been allocated to him, let's say a 100 page frames and he is using only 20 page frames, and 80 page frames is just lying around, then in that case I can say, well, he's got more memory than he needs because over time I've noticed that he's not using it. So I'm going to take away idle memory from VMs that are not using them very actively. So we will tax idle pages more than active pages. If John is using all of his memories and I'm not going to tax him as much because he's using all of it. So that's the idea behind idle adjusted shares approach as opposed to a pure shares approach. So this is where I said that if there are 10 VMs and the hypervisor has to make its choice which VM to go to get some memory from, can use this usage pattern of the VMs to make a determination, which VM to go to in order to get some memory back, and at that point you may be using this idea of taxing idle pages more than active pages. Now, when it comes to taxation, I had asked the question, what is the taxation rate? So one thing I could do is, I'll say it's a 100 percent taxation rate. In other words, if Eric is sitting on a 100 pages using only 20, I'll grab all 80 away from him at a 100 percent tax. Zero percent is a pure share-based approach. We're saying it's a completely plutocratic, we're not taking anything away from what you paid for. The other extreme is of course, very socialistic, making it a 100 percent taxation rate, and typically use something that is somewhere in the middle, maybe about 75 percent taxation rate. The reason why you may not want to do a 100 percent, it might change. So it may be that, right now Eric is not using all of his allocated memory but suddenly there could be a burst of activity, in which case he needs more memory and at that point, if he has to negotiate, there will be a long hysteresis in terms of performance that will be be observed on his Virtual Machine. So you always leave a certain amount of spare capacity for growth in every Virtual Machine. So that is the idea behind this policy, and that allows for allowing certain working set increases that might happen.