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: Wed, 3 Sep 2014 23:48:23 -0400	[thread overview]
Message-ID: <CAEr7rXgG3uDoUmJNDjpu5J1C6wRc4MHg-Kf_yh_bZnx2WtEuoA@mail.gmail.com> (raw)
In-Reply-To: <1409760274.15505.9.camel@kazak.uk.xensource.com>

On Wed, Sep 3, 2014 at 12:04 PM, Ian Campbell <Ian.Campbell@citrix.com> wrote:
> On Wed, 2014-09-03 at 00:24 -0400, Elena Ufimtseva wrote:
>> Adds vnuma topology types declarations to libxl_domain_build_info
>> structure.
>
> So, as mentioned I was becoming increasingly confused about what all
> these fields represent. So lets stop and take stock.

That is not good )
I guess I did not understand correctly about new convention you have
mentioned in previous review.
But I know I need to have it re-worked, so let me try to answer.

>
>> Signed-off-by: Elena Ufimtseva <ufimtseva@gmail.com>
>> ---
>>  tools/libxl/libxl_types.idl |    8 +++++++-
>>  tools/libxl/libxl_vnuma.h   |   16 ++++++++++++++++
>>  2 files changed, 23 insertions(+), 1 deletion(-)
>>  create mode 100644 tools/libxl/libxl_vnuma.h
>>
>> diff --git a/tools/libxl/libxl_types.idl b/tools/libxl/libxl_types.idl
>> index 08a7927..ea8bac0 100644
>> --- a/tools/libxl/libxl_types.idl
>> +++ b/tools/libxl/libxl_types.idl
>> @@ -333,7 +333,13 @@ libxl_domain_build_info = Struct("domain_build_info",[
>>      ("disable_migrate", libxl_defbool),
>>      ("cpuid",           libxl_cpuid_policy_list),
>>      ("blkdev_start",    string),
>> -
>> +    ("vnodes",          uint32),
>
> I suppose this is the number of NUMA nodes the guest should have?

Yes.

>
>> +    ("vmemranges",      uint32),
>
> and I suppose this is a number of memory ranges? Does this differ ever
> from vnodes?

Yes it can be different, it can as one node can have more than one memory range.
Parsing does not take this into account and further in the tool stack
there is no pretty way to work around this (see at the end).

>
>> +    ("vnuma_mem",       Array(uint64, "num_vnuma_mem")),
>
> The size of each memory node?

Yes.
>
> When/how can num_vnuma_mem differ from vmemranges?

Well, I did not work on it yet as vmemranges are not supported yet,
but will be needed for multi-range memory nodes.
But I agree, it does not look right to me as well.

>
>> +    ("vnuma_vcpumap",   Array(uint32, "num_vnuma_vcpumap")),
>
> Is this supposed to map numa node to a bitmap of vcpus? If yes:

It is a map, but not a bitmap of vcpus. Its an array of nr_vcpus size,
each element is the node number.
>
> When/how can num_vnuma_vcpumap differ from vnodes?

num_vnuma_vcpumap is the number of vcpus in map from config or by
default number of vcpus per domain.

>
> 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.

>
>> +    ("vnuma_vnodemap",  Array(uint32, "num_vnuma_vnondemap")),
>
> I've run out of guesses for what this might be. vnode to pnode perhaps?

Yes, it it vnode to pnode map. I guess me changing the field names
brought lots of confusion.


> 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?

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?


Elena
>
> Ian.
>



-- 
Elena

  reply	other threads:[~2014-09-04  3:48 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 [this message]
     [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
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=CAEr7rXgG3uDoUmJNDjpu5J1C6wRc4MHg-Kf_yh_bZnx2WtEuoA@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.