From: George Dunlap <george.dunlap@eu.citrix.com>
To: James Harper <james.harper@bendigoit.com.au>
Cc: Paul Durrant <Paul.Durrant@citrix.com>,
Dave Scott <Dave.Scott@eu.citrix.com>,
"xen-devel@lists.xen.org" <xen-devel@lists.xen.org>
Subject: Re: PoD, 4.2, and current/maximum reservation
Date: Mon, 11 Feb 2013 11:40:03 +0000 [thread overview]
Message-ID: <5118D893.7020102@eu.citrix.com> (raw)
In-Reply-To: <6035A0D088A63A46850C3988ED045A4B356666F4@BITCOM1.int.sbss.com.au>
On 11/02/13 11:39, James Harper wrote:
>> On Mon, Feb 11, 2013 at 12:03 AM, James Harper
>> <james.harper@bendigoit.com.au> wrote:
>>
>> A user has pointed out a problem with GPLPV under Xen 4.2 when
>> using PoD. I'm using the difference between
>> XENMEM_maximum_reservation and XENMEM_current_reservation to tell
>> me how much I should balloon down to account for PoD, but when the user
>> has ballooned down to 1G (from 4Gb or 8GB), GPLPV logs the following:
>>
>> 13005008825593: XenPCI XENMEM_maximum_reservation =
>> 262400
>> 13005008825593: XenPCI XENMEM_current_reservation = 262136
>> 13005008825609: XenPCI Trying to give 1056 KB (1 MB) to Xen
>>
>> What is the correct way to tell how much PoD memory there is under
>> 4.2? Am I doing it wrong?
>>
>> I balloon down as early as possible (before xenbus starts) to avoid
>> windows going over its limit so I'm hoping I can determine the size of PoD
>> memory just via hypercalls.
>>
>>
>>
>> You shouldn't have to know anything specifically about PoD -- you should just
>> look at the balloon target for the guest written in xenstore. The idea was as
>> much as possible for the toolstack and Xen to work together to make it
>> transparent to the balloon driver, in part because we expected to be running
>> legacy drivers. The Citrix PV drivers don't do anything special wrt PoD
>> memory. (Paul, please correct me if I'm wrong.)
> So I should just balloon down to the current_reservation figure right?
...I don't think so -- it looks like you're getting that from a
hypercall, not from xenstore. You want the normal balloon target value
from xenstore. (But I might be confused -- I'm not super familiar with
the technical details of the ballooning codepath, just the overall
principles.)
>> WRT timing and xenbus, a couple of things:
>>
>> * Windows does a scrub of all memory at start-of-day. Especially on multiple-
>> vcpu systems, we were unable to start the balloon process early enough to
>> win the race against the scrubber, so we had to have ways of "reclaiming"
>> zeroed pages for the PoD pool. What this means is that it's not a matter of
>> Windows *touching* memory, but of windows *dirtying* memory that will
>> lead to a problem.
>>
>> * So there is a minimum amount of memory Windows needs to be able to
>> make it to the stage where the balloon driver can run. When XenServer first
>> implemented DMC, the team did extensive testing to determine minimum
>> values above which Windows never crashed or hung, and (as I understand it)
>> baked those into the xapi toolstack as a "seatbelt" to prevent users from
>> setting the value too low.
>>
>> Not sure if that helps in your particular case -- I think 1G was within the limit,
>> but I could be wrong. Dave, any comments?
>>
> I think I could go from 4GB down to 128MB reliably without crashing, although the resulting OS wasn't particularly usable :)
I think what we found was that Windows required a certain amount of
memory to *boot*. If you gave it less than that, then either one of two
things would happen:
* The processes dirtying RAM beat the balloon driver, and the guest
crashed with a PoD-cache-empty error
* The balloon driver beat the processes dirtying ram, and the guest
hung; presumably some service somewhere waiting for some memory to "free
up".
In theory after boot you could reduce the memory below that threshold.
But then what would you do if you needed to reboot the guest? You'd
have to go grab the memory from somewhere else, which is the situation
we were trying to avoid with having PoD in the first place. So the guy
architecting DMC just made it a hard floor (again, as I understand it).
-George
next prev parent reply other threads:[~2013-02-11 11:40 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-02-11 0:03 PoD, 4.2, and current/maximum reservation James Harper
2013-02-11 11:13 ` George Dunlap
2013-02-11 11:39 ` James Harper
2013-02-11 11:40 ` George Dunlap [this message]
2013-02-12 9:53 ` Jan Beulich
2013-02-12 9:55 ` James Harper
2013-02-12 10:39 ` Paul Durrant
2013-02-12 10:44 ` James Harper
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=5118D893.7020102@eu.citrix.com \
--to=george.dunlap@eu.citrix.com \
--cc=Dave.Scott@eu.citrix.com \
--cc=Paul.Durrant@citrix.com \
--cc=james.harper@bendigoit.com.au \
--cc=xen-devel@lists.xen.org \
/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.