From: Dan Magenheimer <dan.magenheimer@oracle.com>
To: Ian Campbell <Ian.Campbell@citrix.com>
Cc: "Keir (Xen.org)" <keir@xen.org>,
George Dunlap <George.Dunlap@eu.citrix.com>,
Andres Lagar-Cavilla <andreslc@gridcentric.ca>,
"Tim (Xen.org)" <tim@xen.org>,
xen-devel@lists.xen.org,
Konrad Rzeszutek Wilk <konrad@kernel.org>,
Jan Beulich <JBeulich@suse.com>,
Ian Jackson <Ian.Jackson@eu.citrix.com>
Subject: Re: Proposed XENMEM_claim_pages hypercall: Analysis of problem and alternate solutions
Date: Mon, 7 Jan 2013 10:41:58 -0800 (PST) [thread overview]
Message-ID: <fedf0cad-8f7e-4ca3-a9fd-5b27bdce82b7@default> (raw)
In-Reply-To: <1357569816.7989.105.camel@zakaz.uk.xensource.com>
> From: Ian Campbell [mailto:Ian.Campbell@citrix.com]
>
> On Thu, 2013-01-03 at 18:49 +0000, Dan Magenheimer wrote:
> >
> > Well, perhaps my statement is a bit heavy-handed, but I don't see
> > how it ends the discussion... you simply need to prove my statement
> > incorrect! ;-) To me, that would mean pointing out any existing
> > implementation or even university research that successfully
> > predicts or externally infers future memory demand for guests.
> > (That's a good approximation of my definition of an omniscient
> > toolstack.)
>
> I don't think a solution involving massaging of tot_pages need involve
> either frequent changes to tot_pages nor omniscience from the tool
> stack.
>
> Start by separating the lifetime_maxmem from current_maxmem. The
> lifetime_maxmem is internal to the toolstack (it is effectively your
> tot_pages from today) and current_maxmem becomes whatever the toolstack
> has actually pushed down into tot_pages at any given time.
>
> In the normal steady state lifetime_maxmem == current_maxmem.
>
> When you want to claim some memory in order to start a new domain of
> size M you *temporarily* reduce current_maxmem for some set of domains
> on the chosen host and arrange that the total of all the current_maxmems
> on the host is such that "HOST_MEM - SUM(current_maxmems) > M".
>
> Once the toolstack has built (or failed to build) the domain it can set
> all the current_maxmems back to their lifetime_maxmem values.
>
> If you want to build multiple domains in parallel then M just becomes
> the sum over all the domains currently being built.
Hi Ian --
Happy New Year!
Perhaps you are missing an important point that is leading
you to oversimplify and draw conclusions based on that
oversimplification...
We are _primarily_ discussing the case where physical RAM is
overcommitted, or to use your terminology IIUC:
SUM(lifetime_maxmem) > HOST_MEM
Thus:
> In the normal steady state lifetime_maxmem == current_maxmem.
is a flawed assumption, except perhaps as an initial condition
or in systems where RAM is almost never a bottleneck.
Without that assumption, in your model, the toolstack must
make intelligent policy decisions about how to vary
current_maxmem relative to lifetime_maxmem, across all the
domains on the system. Since the memory demands of any domain
often vary frequently, dramatically and unpredictably (i.e.
"spike") and since the performance consequences of inadequate
memory can be dire (i.e. "swap storm"), that is why I say the
toolstack (in your model) must both make frequent changes
to tot_pages and "be omniscient".
FWIW, I fully acknowledge that your model works fine when
there are no memory overcommitment technologies active.
I also acknowledge that your model is the best that can
be expected with legacy proprietary domains. The Oracle
model however assumes both that RAM is frequently a bottleneck,
and that open-source guest kernels can intelligently participate
in optimizing their own memory usage; such guest kernels are
now shipping.
So, Ian, would you please acknowledge that the Oracle model
is valid and, in such cases where your maxmem assumption
is incorrect, that hypervisor-controlled capacity allocation
(i.e. XENMEM_claim_pages) is an acceptable solution?
Thanks,
Dan
next prev parent reply other threads:[~2013-01-07 18:41 UTC|newest]
Thread overview: 53+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <mailman.18000.1354568068.1399.xen-devel@lists.xen.org>
2012-12-04 3:24 ` Proposed XENMEM_claim_pages hypercall: Analysis of problem and alternate solutions Andres Lagar-Cavilla
2012-12-18 22:17 ` Konrad Rzeszutek Wilk
2012-12-19 12:53 ` George Dunlap
2012-12-19 13:48 ` George Dunlap
2013-01-03 20:38 ` Dan Magenheimer
2013-01-02 21:59 ` Konrad Rzeszutek Wilk
2013-01-14 18:28 ` George Dunlap
2013-01-22 21:57 ` Konrad Rzeszutek Wilk
2013-01-23 18:36 ` Dave Scott
2013-02-12 15:38 ` Konrad Rzeszutek Wilk
2012-12-20 16:04 ` Tim Deegan
2013-01-02 15:31 ` Andres Lagar-Cavilla
2013-01-02 21:43 ` Dan Magenheimer
2013-01-03 16:25 ` Andres Lagar-Cavilla
2013-01-03 18:49 ` Dan Magenheimer
2013-01-07 14:43 ` Ian Campbell
2013-01-07 18:41 ` Dan Magenheimer [this message]
2013-01-08 9:03 ` Ian Campbell
2013-01-08 19:41 ` Dan Magenheimer
2013-01-09 10:41 ` Ian Campbell
2013-01-09 14:44 ` Dan Magenheimer
2013-01-09 14:58 ` Ian Campbell
2013-01-14 15:45 ` George Dunlap
2013-01-14 18:18 ` Dan Magenheimer
2013-01-14 19:42 ` George Dunlap
2013-01-14 23:14 ` Dan Magenheimer
2013-01-23 12:18 ` Ian Campbell
2013-01-23 17:34 ` Dan Magenheimer
2013-02-12 16:18 ` Konrad Rzeszutek Wilk
2013-01-10 10:31 ` Ian Campbell
2013-01-10 18:42 ` Dan Magenheimer
2013-01-02 21:38 ` Dan Magenheimer
2013-01-03 16:24 ` Andres Lagar-Cavilla
2013-01-03 18:33 ` Dan Magenheimer
2013-01-10 17:13 ` Tim Deegan
2013-01-10 21:43 ` Dan Magenheimer
2013-01-17 15:12 ` Tim Deegan
2013-01-17 15:26 ` Andres Lagar-Cavilla
2013-01-22 19:22 ` Dan Magenheimer
2013-01-23 12:18 ` Ian Campbell
2013-01-23 16:05 ` Dan Magenheimer
2013-01-02 15:29 ` Andres Lagar-Cavilla
2013-01-11 16:03 ` Konrad Rzeszutek Wilk
2013-01-11 16:13 ` Andres Lagar-Cavilla
2013-01-11 19:08 ` Konrad Rzeszutek Wilk
2013-01-14 16:00 ` George Dunlap
2013-01-14 16:11 ` Andres Lagar-Cavilla
2013-01-17 15:16 ` Tim Deegan
2013-01-18 21:45 ` Konrad Rzeszutek Wilk
2013-01-21 10:29 ` Tim Deegan
2013-02-12 15:54 ` Konrad Rzeszutek Wilk
2013-02-14 13:32 ` Konrad Rzeszutek Wilk
2012-12-03 20:54 Dan Magenheimer
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=fedf0cad-8f7e-4ca3-a9fd-5b27bdce82b7@default \
--to=dan.magenheimer@oracle.com \
--cc=George.Dunlap@eu.citrix.com \
--cc=Ian.Campbell@citrix.com \
--cc=Ian.Jackson@eu.citrix.com \
--cc=JBeulich@suse.com \
--cc=andreslc@gridcentric.ca \
--cc=keir@xen.org \
--cc=konrad@kernel.org \
--cc=tim@xen.org \
--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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).