From: Dario Faggioli <dario.faggioli@citrix.com>
To: Chao Peng <chao.p.peng@linux.intel.com>
Cc: keir@xen.org, Ian.Campbell@citrix.com,
stefano.stabellini@eu.citrix.com, andrew.cooper3@citrix.com,
Ian.Jackson@eu.citrix.com, xen-devel@lists.xen.org,
will.auld@intel.com, JBeulich@suse.com, wei.liu2@citrix.com,
dgdegra@tycho.nsa.gov
Subject: Re: [PATCH v5 12/13] tools: add tools support for Intel CAT
Date: Tue, 21 Apr 2015 03:24:37 +0200 [thread overview]
Message-ID: <1429579477.18926.35.camel@citrix.com> (raw)
In-Reply-To: <1429281230-4352-13-git-send-email-chao.p.peng@linux.intel.com>
[-- Attachment #1.1: Type: text/plain, Size: 5149 bytes --]
On Fri, 2015-04-17 at 22:33 +0800, Chao Peng wrote:
> This is the xc/xl changes to support Intel Cache Allocation
> Technology(CAT). Two commands are introduced:
> - xl psr-cat-hwinfo
> Show CAT hardware information.
> Examples:
> [root@vmm-psr vmm]# xl psr-cat-hwinfo
> Cache Allocation Technology (CAT):
> Socket ID : 0
> L3 Cache : 12288KB
> Maximum COS : 15
> CBM length : 12
> Default CBM : 0xfff
>
Or, you can rename the psr-cmt-hwinfo command, added in the previous
patch, to 'psr-hwinfo' and make it accept options, e.g.,
"-m, --cmt show Cache Monitoring Technology (CMT) hardware info"
"-c, --cat show Cache Allocation Technology (CAT) hardware info"
By default (i.e., no options provided), it can just print all the hw
info.
Not a big deal, but I think that would make a better command line
interface. Tools' maintainers' call, I guess.
> --- a/tools/libxc/include/xenctrl.h
> +++ b/tools/libxc/include/xenctrl.h
> +
> +int xc_psr_cat_set_domain_data(xc_interface *xch, uint32_t domid,
> + xc_psr_cat_type type, uint32_t target,
> + uint64_t data);
> +int xc_psr_cat_get_domain_data(xc_interface *xch, uint32_t domid,
> + xc_psr_cat_type type, uint32_t target,
> + uint64_t *data);
>
So, for this twos, 'target' is the socket you want to act on.
> +int xc_psr_cat_get_l3_info(xc_interface *xch, uint32_t socket,
> + uint32_t *cos_max, uint32_t *cbm_len);
>
While here you use 'socket', to mean the same thing.
That looks rather inconsistent. Since it's a socket we are talking
about, why not 'socket' everywhere?
> --- a/tools/libxl/libxl.h
> +++ b/tools/libxl/libxl.h
> +#ifdef LIBXL_HAVE_PSR_CAT
> +
> +#define LIBXL_PSR_TARGET_ALL (~0U)
> +int libxl_psr_cat_set_cbm(libxl_ctx *ctx, uint32_t domid,
> + libxl_psr_cbm_type type, uint32_t target,
> + uint64_t cbm);
> +int libxl_psr_cat_get_cbm(libxl_ctx *ctx, uint32_t domid,
> + libxl_psr_cbm_type type, uint32_t target,
> + uint64_t *cbm_r);
> +
The same applies here: I'd rename taget to socket.
Then there's that LIBXL_PSR_TARGET_ALL. So, target (or socket, if you'll
rename it) is an integer representing _which_one_ socket to act on.
However, there is a special value to mean "all sockets".
Another possibility would be to offer an API that "natively" allows for
operating on multiple sockets, by using libxl_bitmap-s, as it happens in
many other places, in libxl itself (e.g., setting and getting vcpu
affinity).
That means target would become a libxl_bitmap, and, in the
implementation, you'll apply the operation on all the sockets
corresponding to a set bit in there. Only one bit set means just that
socket, all bits means all sockets.
This looks like a better interface to me (no need for special ~0U
values), it'd make the implementation more linear, and is more
consistent with how other similar situations are handled in libxl.
However, I appreciate that one may find it overkill... I guess it
depends whether we expect the prevalent usage pattern to be almost
always about single sockets --and maybe on all sockets, from time to
time-- or if we see value in being able to specify more than one and
less than all sockets.
For instance, now that we have vNUMA, if a domain has 4 vNUMA nodes,
each one mapped to a physical NUMA node, it looks to me like it would
make sense to set CAT to, say, 0x0F, on the sockets corresponding to the
physical NODEs. With the interface in this patch, that would require
calling libxl_psr_cat_set_cbm() 4 times, with the libxl_bitmap approach,
just once, after setting up the bitmap properly.
Thoughts?
> --- a/tools/libxl/libxl_psr.c
> +++ b/tools/libxl/libxl_psr.c
> +int libxl_psr_cat_get_l3_info(libxl_ctx *ctx, libxl_psr_cat_info **info,
> + uint32_t *nr)
> +{
> + GC_INIT(ctx);
> + int rc, r;
> + uint32_t i, nr_sockets;
> + libxl_psr_cat_info *ptr;
> +
> + rc = libxl__count_physical_sockets(gc, &nr_sockets);
> + if (rc) {
> + LOGE(ERROR, "failed to get system socket count");
> + goto out;
> + }
> +
> + ptr = libxl__malloc(NOGC, nr_sockets * sizeof(libxl_psr_cat_info));
> +
> + for (i = 0; i < nr_sockets; i++) {
> + r = xc_psr_cat_get_l3_info(ctx->xch, i, &ptr[i].cos_max,
> + &ptr[i].cbm_len);
> + if (r < 0) {
>
why not just:
if (xc_psr_cat_get_l3_info(ctx->xch, i, &ptr[i].cos_max,
&ptr[i].cbm_len)) {
> + libxl__psr_cat_log_err_msg(gc, errno);
> + rc = ERROR_FAIL;
> + free(ptr);
> + goto out;
> + }
> + }
> +
I mean, you don't need to save the actual return value from libxc, do
you? The same applies to other places down in the patch.
Regards,
Dario
[-- Attachment #1.2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 181 bytes --]
[-- Attachment #2: Type: text/plain, Size: 126 bytes --]
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel
next prev parent reply other threads:[~2015-04-21 1:24 UTC|newest]
Thread overview: 33+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-04-17 14:33 [PATCH v5 00/13] enable Cache Allocation Technology (CAT) for VMs Chao Peng
2015-04-17 14:33 ` [PATCH v5 01/13] x86: add socket_to_cpumask Chao Peng
2015-04-17 14:33 ` [PATCH v5 02/13] x86: improve psr scheduling code Chao Peng
2015-04-20 15:42 ` Dario Faggioli
2015-04-17 14:33 ` [PATCH v5 03/13] x86: detect and initialize Intel CAT feature Chao Peng
2015-04-20 16:13 ` Dario Faggioli
2015-04-21 9:39 ` Chao Peng
2015-04-17 14:33 ` [PATCH v5 04/13] x86: maintain COS to CBM mapping for each socket Chao Peng
2015-04-17 14:33 ` [PATCH v5 05/13] x86: add COS information for each domain Chao Peng
2015-04-20 15:50 ` Andrew Cooper
2015-04-17 14:33 ` [PATCH v5 06/13] x86: expose CBM length and COS number information Chao Peng
2015-04-17 14:33 ` [PATCH v5 07/13] x86: dynamically get/set CBM for a domain Chao Peng
2015-04-20 15:52 ` Andrew Cooper
2015-04-21 9:42 ` Chao Peng
2015-04-17 14:33 ` [PATCH v5 08/13] x86: add scheduling support for Intel CAT Chao Peng
2015-04-17 14:33 ` [PATCH v5 09/13] xsm: add CAT related xsm policies Chao Peng
2015-04-17 14:33 ` [PATCH v5 10/13] tools/libxl: minor name changes for CMT commands Chao Peng
2015-04-20 16:07 ` Dario Faggioli
2015-04-21 13:56 ` Ian Campbell
2015-04-17 14:33 ` [PATCH v5 11/13] tools/libxl: add command to show CMT hardware info Chao Peng
2015-04-21 0:37 ` Dario Faggioli
2015-04-21 9:42 ` Chao Peng
2015-04-21 13:57 ` Ian Campbell
2015-04-17 14:33 ` [PATCH v5 12/13] tools: add tools support for Intel CAT Chao Peng
2015-04-21 1:24 ` Dario Faggioli [this message]
2015-04-21 9:49 ` Chao Peng
2015-04-21 14:01 ` Ian Campbell
2015-04-21 14:39 ` Dario Faggioli
2015-04-22 13:09 ` Chao Peng
2015-04-21 15:15 ` Dario Faggioli
2015-04-22 13:37 ` Chao Peng
2015-04-17 14:33 ` [PATCH v5 13/13] docs: add xl-psr.markdown Chao Peng
2015-04-21 14:05 ` Ian Campbell
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=1429579477.18926.35.camel@citrix.com \
--to=dario.faggioli@citrix.com \
--cc=Ian.Campbell@citrix.com \
--cc=Ian.Jackson@eu.citrix.com \
--cc=JBeulich@suse.com \
--cc=andrew.cooper3@citrix.com \
--cc=chao.p.peng@linux.intel.com \
--cc=dgdegra@tycho.nsa.gov \
--cc=keir@xen.org \
--cc=stefano.stabellini@eu.citrix.com \
--cc=wei.liu2@citrix.com \
--cc=will.auld@intel.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.