From: Andrew Morton <akpm@linux-foundation.org>
To: "K. Y. Srinivasan" <kys@microsoft.com>
Cc: gregkh@linuxfoundation.org, linux-kernel@vger.kernel.org,
devel@linuxdriverproject.org, olaf@aepfle.de, apw@canonical.com,
andi@firstfloor.org
Subject: Re: [PATCH 2/2] Drivers: hv: Add Hyper-V balloon driver
Date: Tue, 9 Oct 2012 12:44:49 -0700 [thread overview]
Message-ID: <20121009124449.f54bf8cb.akpm@linux-foundation.org> (raw)
In-Reply-To: <1349654386-18378-2-git-send-email-kys@microsoft.com>
On Sun, 7 Oct 2012 16:59:46 -0700
"K. Y. Srinivasan" <kys@microsoft.com> wrote:
> Add the basic balloon driver.
hm, how many balloon drivers does one kernel need?
Although I see that the great majority of this code is hypervisor-specific.
> Windows hosts dynamically manage the guest
> memory allocation via a combination memory hot add and ballooning. Memory
> hot add is used to grow the guest memory upto the maximum memory that can be
> allocatted to the guest. Ballooning is used to both shrink as well as expand
> up to the max memory. Supporting hot add needs additional support from the
> host. We will support hot add when this support is available. For now,
> by setting the VM startup memory to the VM max memory, we can use
> ballooning alone to dynamically manage memory allocation amongst
> competing guests on a given host.
>
>
> ...
>
> +static int alloc_balloon_pages(struct hv_dynmem_device *dm, int num_pages,
> + struct dm_balloon_response *bl_resp, int alloc_unit,
> + bool *alloc_error)
> +{
> + int i = 0;
> + struct page *pg;
> +
> + if (num_pages < alloc_unit)
> + return 0;
> +
> + for (i = 0; (i * alloc_unit) < num_pages; i++) {
> + if (bl_resp->hdr.size + sizeof(union dm_mem_page_range) >
> + PAGE_SIZE)
> + return i * alloc_unit;
> +
> + pg = alloc_pages(GFP_HIGHUSER | __GFP_NORETRY | GFP_ATOMIC |
> + __GFP_NOMEMALLOC | __GFP_NOWARN,
> + get_order(alloc_unit << PAGE_SHIFT));
This choice of GFP flags is basically impossible to understand, so I
suggest that a comment be added explaining it all.
I'm a bit surprised at the inclusion of GFP_ATOMIC as it will a) dip
into page reserves, whcih might be undesirable and b) won't even
reclaim clean pages, which seems desirable. I suggest this also be
covered in the forthcoming code comment.
drivers/misc/vmw_balloon.c seems to me to have used better choices here.
> + if (!pg) {
> + *alloc_error = true;
> + return i * alloc_unit;
> + }
> +
> + totalram_pages -= alloc_unit;
Well, I'd consider totalram_pages to be an mm-private thing which drivers
shouldn't muck with. Why is this done?
drivers/xen/balloon.c and drivers/virtio/virtio_balloon.c also alter
totalram_pages, also without explaining why.
drivers/misc/vmw_balloon.c does not.
> + dm->num_pages_ballooned += alloc_unit;
> +
> + bl_resp->range_count++;
> + bl_resp->range_array[i].finfo.start_page =
> + page_to_pfn(pg);
> + bl_resp->range_array[i].finfo.page_cnt = alloc_unit;
> + bl_resp->hdr.size += sizeof(union dm_mem_page_range);
> +
> + }
> +
> + return num_pages;
> +}
>
> ...
>
next prev parent reply other threads:[~2012-10-09 19:44 UTC|newest]
Thread overview: 50+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-10-07 23:59 [PATCH 0/2] Drivers: hv K. Y. Srinivasan
2012-10-07 23:59 ` [PATCH 1/2] mm: Export vm_committed_as K. Y. Srinivasan
2012-10-07 23:59 ` [PATCH 2/2] Drivers: hv: Add Hyper-V balloon driver K. Y. Srinivasan
2012-10-08 0:45 ` Greg KH
2012-10-08 3:37 ` KY Srinivasan
2012-10-08 5:45 ` Rusty Russell
2012-10-08 14:53 ` KY Srinivasan
2012-10-09 19:44 ` Andrew Morton [this message]
2012-10-10 0:09 ` KY Srinivasan
2012-10-10 1:14 ` Andrew Morton
2012-10-10 2:26 ` KY Srinivasan
2012-10-10 23:34 ` Jeremy Fitzhardinge
2012-10-10 23:56 ` Andrew Morton
2012-10-11 8:05 ` Rusty Russell
2012-10-10 9:47 ` Avi Kivity
2012-10-08 0:43 ` [PATCH 1/2] mm: Export vm_committed_as Greg KH
2012-10-08 3:35 ` KY Srinivasan
2012-10-08 13:35 ` Greg KH
2012-10-08 13:45 ` KY Srinivasan
2012-10-09 19:47 ` Andrew Morton
2012-10-10 0:11 ` KY Srinivasan
2012-10-10 1:16 ` Andrew Morton
2012-10-10 3:18 ` KY Srinivasan
2012-11-03 14:09 ` KY Srinivasan
2012-11-05 21:44 ` Andrew Morton
2012-11-05 21:44 ` Andrew Morton
2012-11-05 22:12 ` KY Srinivasan
2012-11-05 22:12 ` KY Srinivasan
2012-11-05 22:33 ` David Rientjes
2012-11-05 22:33 ` David Rientjes
2012-11-06 14:46 ` Michal Hocko
2012-11-06 14:46 ` Michal Hocko
2012-11-08 22:01 ` KY Srinivasan
2012-11-08 22:01 ` KY Srinivasan
2012-11-08 22:05 ` Andrew Morton
2012-11-08 22:05 ` Andrew Morton
2012-11-08 22:08 ` KY Srinivasan
2012-11-08 22:08 ` KY Srinivasan
2012-11-08 22:14 ` David Rientjes
2012-11-08 22:14 ` David Rientjes
2012-11-08 22:18 ` Andrew Morton
2012-11-08 22:18 ` Andrew Morton
2012-11-06 9:05 ` Michal Hocko
2012-11-06 9:05 ` Michal Hocko
2012-11-06 12:53 ` KY Srinivasan
2012-11-06 12:53 ` KY Srinivasan
2012-11-08 13:28 ` KY Srinivasan
2012-11-08 13:28 ` KY Srinivasan
2012-11-08 21:55 ` David Rientjes
2012-11-08 21:55 ` David Rientjes
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20121009124449.f54bf8cb.akpm@linux-foundation.org \
--to=akpm@linux-foundation.org \
--cc=andi@firstfloor.org \
--cc=apw@canonical.com \
--cc=devel@linuxdriverproject.org \
--cc=gregkh@linuxfoundation.org \
--cc=kys@microsoft.com \
--cc=linux-kernel@vger.kernel.org \
--cc=olaf@aepfle.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.