All of lore.kernel.org
 help / color / mirror / Atom feed
From: Elena Ufimtseva <ufimtseva@gmail.com>
To: Ian Campbell <Ian.Campbell@citrix.com>
Cc: Keir Fraser <keir@xen.org>,
	Stefano Stabellini <stefano.stabellini@eu.citrix.com>,
	George Dunlap <george.dunlap@eu.citrix.com>,
	Matt Wilson <msw@linux.com>,
	Dario Faggioli <dario.faggioli@citrix.com>,
	Li Yechen <lccycc123@gmail.com>,
	Ian Jackson <ian.jackson@eu.citrix.com>,
	"xen-devel@lists.xen.org" <xen-devel@lists.xen.org>,
	Jan Beulich <JBeulich@suse.com>
Subject: Re: [PATCH v10 5/9] libxl: vnuma types declararion
Date: Tue, 16 Sep 2014 02:17:13 -0400	[thread overview]
Message-ID: <CAEr7rXg7LUHA+x5RJRtkPHKMeimPcoci2gjkJzwgXkf1KO5Vjw@mail.gmail.com> (raw)
In-Reply-To: <1409826927.15057.22.camel@kazak.uk.xensource.com>


[-- Attachment #1.1: Type: text/plain, Size: 5435 bytes --]

On Thu, Sep 4, 2014 at 6:35 AM, Ian Campbell <Ian.Campbell@citrix.com>
wrote:

> On Wed, 2014-09-03 at 23:48 -0400, Elena Ufimtseva wrote:
> > > What happens if a guest has 33 vcpus?
> > >
> > > Or maybe the output of this is a single vcpu number?
> > >
> > >> +    ("vdistance",       Array(uint32, "num_vdistance")),
> > >
> > > nodes to distances? Can num_vdistance ever differ from vnodes?
> >
> > num_vdistance is a square of vnodes.
> > >
> > > I thought distances were between two nodes, in which case doesn't this
> > > need to be multidimensional?
> >
> > yes, but parser just fills it on per-row order, treating it as it is a
> > multidimensional array.
>
> I suppose this is a workaround for the lack of multidimensional arrays
> in the IDL?
>
> If this is to be done then it needs a comment I think. In particular the
> stride length needs to be clearly defined.
>
> > > You appear to unconditionally overwrite whatever the users might have
> > > put here.
> > >
> > >> +    ("vnuma_autoplacement",  libxl_defbool),
> > >
> > > Why/how does this differ from the existing numa placement option?
> >
> >
> > Basically, its meaning can be briefly described as to try to build
> > vnode to pnode mapping if automatic vnuma placement
> > enabled, or try to use the user-defined one.
> > But I am thinking maybe you are right, and there is no need in that
> > vnuma_autoplacement at all.
> > Just to remove it, and if numa placement is in automatic mode, just
> > use it. If not, try to use vnode to pnode mapping.
> >
> > Now I think that is what Dario was talking about for some time )
> >
> >
> > Ok, now going back to these types.
> >
> >   ("vnodes",          uint32),
> >   ("vmemranges",      uint32),
> >   ("vnuma_mem",       Array(uint64, "num_vnuma_mem")),
> >   ("vnuma_vcpumap",   Array(uint32, "num_vnuma_vcpumap")),
> >   ("vdistance",       Array(uint32, "num_vdistance")),
> >   ("vnuma_vnodemap",  Array(uint32, "num_vnuma_vnondemap")),
> >
> >
> > vnodes -  number of vnuma nodes;
> > vmemranges - number of vmemranges (not used, but added support in
> > Xen); Not sure how to deal with this. Should I just remove it as its
> > not used by tool stack yet?
>
> I think that would be best, otherwise we risk tying ourselves to an API
> which might not actually work when we come to try and use it.
>
> If you need the concept internally while building you could add such
> things to libxl__domain_build_state instead.
>
> > vnuma_mem - vnode memory sizes (conflicts now with vmemranges);
> > vnuma_vcpumap - map of vnuma nodes and vcpus (length is number of
> > vcpus, each element is vnuma node number);
> > vdistance - distances, num_vdistance = vnodes * vnodes;
> > vnuma_vnodemap - mapping of vnuma nodes to physical NUMA nodes;
> >
> > And vnuma_autoplacement probably not needed here at all.
> >
> > About vmemranges. They will be needed for vnuma nodes what have
> > multiple ranges of memories.
> > I added it in type definition to specify support when calling
> > hypercall. As of now, PV domain have one memory range per node.
> >
> > There is libxl__build_vnuma_ranges function which for PV domain
> > basically converts vnuma memory node sizes into ranges.
> > But for PV domain there is only one range per vnode.
> >
> > Maybe there is a better way of doing this, maybe even remove confusing
> > at this point vmemranges?
>
> That would help, I think.
>
> Then I would take the rest and wrap them in a libxl_vnode_info struct:
>
> libxl_vnode_info = Struct("libxl_vnode_info", [
>     ("mem", MemKB), # Size of this node's memory
>     ("distances", Array(...)), # Distances from this node to the others
> (single dimensional array)
>     ("pnode", TYPE), # which pnode this vnode is associated with
> ])
>
> Then in the (b|c)_config
>      ("vnuma_nodes", Array(libxl_vnode_info...))
>

Hi Ian

Is there a better mechanism to parse first vnuma_nodes, and within it to
parse distances array?
So lets say config will be looking like this:

vnuma_nodes = [ a b c, d e f, g e k,... ]
but c, f, k cannot be arrays. Parser does not expect to have one more
string withing each element of a topmost string.

So this does not work:

vnuma_nodes  =  [ a b "distance array1", d e "distance array2", ...]
also this does not work:

vnuma_node = [ [], [], [], ..]
Looks like that I was trying to avoid with emulating multi dimensional
array for distance still persists here.

Maybe you know some tricky way to get around this?

Thank you!



>
> This avoids the issue of having to have various num_* which are expected
> to always be identical. Except for vnuma_nodes[N].num_distances, but I
> think that is unavoidable.
>
> The only thing I wasn't sure of was how to fit the vcpumap into this.
> AIUI this is a map from vcpu number to vnode number (i.e. for each vcpu
> it tells you which vnuma node it is part of). I presume it isn't
> possible/desirable to have a vcpu be part of multiple vnuma nodes.
>
> One possibility would be to have a libxl_bitmap/cpumap as part of the
> libxl_vnode_info (containing the set of vcpus which are part of this
> node) but that would be prone to allowing a vcpu to be in multiple
> nodes.
>
> Another possibility would be an array in (b|c)_config as you have now,
> which would be annoying because it's num_foo really ought to be the
> ->vcpus count and the IDL doesn't really allow that.
>
> I'm not sure what is the lesser of the two evils here.
>
> Ian.
>
>


-- 
Elena

[-- Attachment #1.2: Type: text/html, Size: 7170 bytes --]

[-- Attachment #2: Type: text/plain, Size: 126 bytes --]

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel

  parent reply	other threads:[~2014-09-16  6:17 UTC|newest]

Thread overview: 32+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-09-03  4:24 [PATCH v10 3/9] vnuma hook to debug-keys u Elena Ufimtseva
2014-09-03  4:24 ` [PATCH v10 4/9] libxc: Introduce xc_domain_setvnuma to set vNUMA Elena Ufimtseva
2014-09-03 14:53   ` Ian Campbell
2014-09-03  4:24 ` [PATCH v10 5/9] libxl: vnuma types declararion Elena Ufimtseva
2014-09-03 15:03   ` Ian Campbell
2014-09-03 16:04   ` Ian Campbell
2014-09-04  3:48     ` Elena Ufimtseva
     [not found]       ` <1409826927.15057.22.camel@kazak.uk.xensource.com>
2014-09-08 16:13         ` Dario Faggioli
2014-09-08 19:47           ` Elena Ufimtseva
2014-09-16  6:17         ` Elena Ufimtseva [this message]
2014-09-16  7:16           ` Dario Faggioli
2014-09-16 12:57             ` Elena Ufimtseva
2014-09-03  4:24 ` [PATCH v10 6/9] libxl: build numa nodes memory blocks Elena Ufimtseva
2014-09-03 15:21   ` Ian Campbell
2014-09-04  4:47     ` Elena Ufimtseva
2014-09-05  3:50     ` Elena Ufimtseva
2014-09-12 10:18   ` Dario Faggioli
2014-09-03  4:24 ` [PATCH v10 7/9] libxc: allocate domain memory for vnuma enabled Elena Ufimtseva
2014-09-03 15:26   ` Ian Campbell
2014-09-12 11:06   ` Dario Faggioli
2014-09-03  4:24 ` [PATCH v10 8/9] libxl: vnuma nodes placement bits Elena Ufimtseva
2014-09-03 15:50   ` Konrad Rzeszutek Wilk
2014-09-03 15:52   ` Ian Campbell
2014-09-12 16:51   ` Dario Faggioli
2014-09-03  4:24 ` [PATCH v10 9/9] libxl: vnuma topology configuration parser and doc Elena Ufimtseva
2014-09-03 15:42   ` Konrad Rzeszutek Wilk
2014-09-11 17:13   ` Dario Faggioli
2014-09-12  2:04     ` Elena Ufimtseva
2014-09-12  9:02       ` Dario Faggioli
2014-09-12  9:31         ` Wei Liu
2014-09-12  9:59           ` Dario Faggioli
2014-09-03 15:37 ` [PATCH v10 3/9] vnuma hook to debug-keys u Konrad Rzeszutek Wilk

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=CAEr7rXg7LUHA+x5RJRtkPHKMeimPcoci2gjkJzwgXkf1KO5Vjw@mail.gmail.com \
    --to=ufimtseva@gmail.com \
    --cc=Ian.Campbell@citrix.com \
    --cc=JBeulich@suse.com \
    --cc=dario.faggioli@citrix.com \
    --cc=george.dunlap@eu.citrix.com \
    --cc=ian.jackson@eu.citrix.com \
    --cc=keir@xen.org \
    --cc=lccycc123@gmail.com \
    --cc=msw@linux.com \
    --cc=stefano.stabellini@eu.citrix.com \
    --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.