[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-devel] Fwd: [PATCH] RFC: initial libxl support for xenpaging

Oops, forgot to reply-to-all...

---------- Forwarded message ----------
From: George Dunlap <George.Dunlap@xxxxxxxxxxxxx>
Date: Tue, Feb 28, 2012 at 1:17 PM
Subject: Re: [Xen-devel] [PATCH] RFC: initial libxl support for xenpaging
To: Ian Campbell <Ian.Campbell@xxxxxxxxxx>

On Fri, Feb 24, 2012 at 10:11 AM, Ian Campbell <Ian.Campbell@xxxxxxxxxx> wrote:
>> However, I'd say the main public "knobs" should be just consist of two
>> things:
>> * xl mem-set memory-target.  This is the minimum amount of physical RAM
>> a guest can get; we make sure that the sum of these for all VMs does not
>> exceed the host capacity.
> Isn't this what we've previously called mem-paging-set? We defined
> mem-set earlier as controlling the amount of RAM the guest _thinks_ it
> has, which is different.

No, I thought mem-set was supposed to be the Simple Knob, that the
user turned to say, "I don't care how you do it, just make the guest
take X amount of RAM".  The whole thing with the pagingdelay and all
that was how long and whether that Simple Knob would set the balloon
target first, before resorting to sharing.  Since the user can't
really control how much sharing happens, it makes sense to me for this
Simple Knob also be the "minimum memory this VM should get if all
extra pages from sharing suddenly disappear".

>> * xl sharing-policy [policy].  This tells the sharing system how to use
>> the "windfall" pages gathered from page sharing.
>> Then internally, the sharing system should combine the "minimum
>> footprint" with the number of extra pages and the policy to set the
>> amount of memory actually used (via balloon driver or paging).
> This is an argument in favour of mem-footprint-set rather than
> mem-paging set?
> Here is an updated version of my proposed interface which includes
> sharing, I think as you described (modulo the use of mem-paging-set
> where you said mem-set above).
> I also included "mem-paging-set manual" as an explicit thing with an
> error on "mem-paging-set N" if you don't switch to manual mode. This
> might be too draconian -- I'm not wedded to it.
> maxmem=X                        # maximum RAM the domain can ever see
> memory=M                        # current amount of RAM seen by the
>                                # domain

What do you mean "seen by the domain"?

If you mean "pages which aren't ballooned", then it looks an awful lot
to me like you're (perhaps unintentionally) smuggling back into the
interface "balloon target" and "paging target" (since "memory seen by
the domain" would then always be equal to "balloon target", and
"memory actually available" would always equal "paging target").  I
thought the whole point was to hide all this complexity from the user,
unless she wants to see it?

Or am I misunderstanding something?

> paging=[off|on]                 # allow the amount of memory a guest
>                                # thinks it has to differ from the
>                                # amount actually available to it (its
>                                # "footprint")
> pagingauto=[off|on] (dflt=on)   # enable automatic enforcement of
>                                # "footprint" for guests which do not
>                                # voluntarily obey changes to memory=M
> pagingdelay=60                  # amount of time to give a guest to
>                                # voluntarily comply before enforcing a
>                                # footprint
> pagesharing=[off|on]            # cause this guest to share pages with
>                                # other similarly enabled guests where
>                                # possible. Requires paging=on.
> pageextrapolocy=...             # controls what happens to extra pages
>                                # gain via sharing (could be combined
>                                # with pagesharing option:
>                                #       [off|policy|...])
>        Open question -- does pagesharing=on require paging=on? I've
>        tried to specify things below such that it does not, but it
>        might simplify things to require this.
> xl mem-set domain M
>        Sets the amount of RAM which the guest believes it has available
>        to M. The guest should arrange to use only that much RAM and
>        return the rest to the hypervisor (e.g. by using a balloon
>        driver). If the guest does not do so then the host may use
>        technical means to enforce the guest's footprint of M. The guest
>        may suffer a performance penalty for this enforcement.
>        paging off:     set balloon target to M.
>        paging on:      set balloon target to M.
>                        if pagingauto:
>                                wait delay IFF new target < old
>                                set paging target to M
>                                support -t <delay> to override default?
>        Open question -- if a domain balloons to M as requested should
>        it still be subject to sharing? There is a performance hit
>        associated with sharing (far less than paging though?) but
>        presumably the admin would not have enabled sharing if they
>        didn't want this, therefore I think it is right for sharing on
>        to allow the guest to actually have <M assigned to it. Might be
>        a function of the individual sharing policy?
> xl mem-paging-set domain manual
>        Enables manual control of paging target.
>        paging off:     error
>        paging on:      set pagingauto=off
>        sharing on:     same as paging on.
> xl mem-paging-set domain N
>        Overrides the amount of RAM which the guest actually has
>        available (its "footprint") to N. The host will use technical
>        means to continue to provide the illusion to the guest that it
>        has memory=M (as adjusted by mem-set). There may be a
>        performance penalty for this.
>        paging off:     error
>        paging on:      if pagingauto=on:
>                                error
>                        set paging target
>                        set pagingauto=off
> xl mem-paging-set domain auto
>        Automatically manage paging. Request that the guest uses
>        memory=M (current value of memory, as adjusted by mem-set)
>        enforced when the guest is uncooperative (as described in
>        "mem-set")
>        paging off:     error
>        paging on:      set paging target to M
>                        set pagingauto=on
> xl mem-sharing-policy-set domain [policy]
>        Configures policy for use of extra pages.
>        if !paging || pagingauto:
>                If guest's actual usage drops below M due to sharing
>                then extra pages are distributed per the sharing policy.
>        else:
>                If If guest's actual usage drops below N due to sharing
>                then extra pages are distributed per the sharing policy.
>        TBD potential policies.
>        NB: shared pages reduce a domain's actual usage. Therefore it is
>        possible that sharing reduces the usage to less than the paging
>        target. In this case no pages will be paged out.
> We should ensure that the sum over for all domains of:
>        pagingauto(D)? M : N
> does not exceed the amount of host memory.
> Ian.
> _______________________________________________
> Xen-devel mailing list
> Xen-devel@xxxxxxxxxxxxx
> http://lists.xen.org/xen-devel

Xen-devel mailing list



Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.