From mboxrd@z Thu Jan 1 00:00:00 1970 From: Anthony Liguori Subject: Re: Ballooning Queries Date: Sat, 09 Aug 2008 13:31:05 -0500 Message-ID: <489DE269.9000207@codemonkey.ws> References: Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Cc: kvm@vger.kernel.org To: Sukanto Ghosh Return-path: Received: from yw-out-2324.google.com ([74.125.46.31]:44014 "EHLO yw-out-2324.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751201AbYHISbm (ORCPT ); Sat, 9 Aug 2008 14:31:42 -0400 Received: by yw-out-2324.google.com with SMTP id 9so601137ywe.1 for ; Sat, 09 Aug 2008 11:31:42 -0700 (PDT) In-Reply-To: Sender: kvm-owner@vger.kernel.org List-ID: Sukanto Ghosh wrote: > I understand the idea behind ballooning as " it effectively increases > or decreases the amount of physical memory given to the guest, with > the help of the guest's native memory management algorithms". The > benefit is obvious in cases where the hypervisor does a hard > partitioning of the memory between the guests. The guest vm (virtual > memory manager) will indirectly say that these are my least used > pages, or the safest candidates for eviction. > > But in case of kvm, the guest memory is itself allocated and managed > by the host linux vm. So, suppose if the guest evicts a lru page > (which might even not actually reside in host physical memory at the > time) and even the host chooses a lru page for eviction, the host > decision is better in a sense that this page is definitely residing in > the physical memory. So, are we gaining from using a balloon driver in > the guest. > What ballooning is useful for in KVM, is reducing the amount of memory a guest uses by a large amount. It's not terribly useful for shaving a few dozen MBs from a guest, but it is useful for dropping a 1GB guest down to 512GB. Since the guest tells the host what portions of it's memory it won't be using, we can evict it completely from memory (it's not even swapped, it's just deleted). > The only difference I see is that the balloon driver will always be > giving us a page used by the guest. On the other hand, the linux vm > will select a page from the entire physical memory, so it might > penalise a host application page. But I don't see any benefit because > of this. In fact for smaller no. of pages, most likely the guest will > choose the pages which have already been swapped out by the host linux > vm (the more recently used pages are the one which actually stay in > the physical memory). > > Am I missing something ? I hope I have made the reason for my confusion clear. > > > Also, I have read about some 'balloon userspace component' in kvm, > what does it do ? Does it talk to the virtio balloon driver in the > linux and keeps giving us some statistics for monitoring purposes ? Is > there any other use ? > In general, paravirtual drivers in KVM are implemented in two parts. A "front-end" that runs in the guest and a "back-end" that runs in the host. For KVM, all of the current front-ends run in the guest kernel and all of the back-ends run in the host userspace (QEMU). > Where can I get the source for this balloon userspace component ? ( I > read that Avi is going to merge it, but can I have a look at it now > (any patch) ? > Check out the mailing list for the patches. You need MMU notifiers for it to be effective though. Regards, Anthony Liguori