From: Dario Faggioli <raistlin@linux.it>
To: George Dunlap <george.dunlap@eu.citrix.com>
Cc: Andre Przywara <andre.przywara@amd.com>,
Ian Campbell <Ian.Campbell@citrix.com>,
Stefano Stabellini <Stefano.Stabellini@eu.citrix.com>,
Juergen Gross <juergen.gross@ts.fujitsu.com>,
Ian Jackson <Ian.Jackson@eu.citrix.com>,
"xen-devel@lists.xen.org" <xen-devel@lists.xen.org>
Subject: Re: [PATCH 08 of 10 v2] libxl: enable automatic placement of guests on NUMA nodes
Date: Thu, 21 Jun 2012 18:43:52 +0200 [thread overview]
Message-ID: <1340297032.4856.93.camel@Solace> (raw)
In-Reply-To: <4FE348C1.5030407@eu.citrix.com>
[-- Attachment #1.1: Type: text/plain, Size: 4330 bytes --]
On Thu, 2012-06-21 at 17:16 +0100, George Dunlap wrote:
> > Signed-off-by: Dario Faggioli<dario.faggioli@citrix.com>
> Overall I think this approach is much better.
>
Cool, Thanks.
> > + /*
> > + * Round up and down some of the constraints. For instance, the minimum
> > + * number of cpus a candidate should have must at least be non-negative.
> > + * Regarding the minimum number of NUMA nodes, if not explicitly specified
> > + * (i.e., min_nodes<= 0), we try to figure out a sensible number of nodes
> > + * from where to start generating candidates, if possible (or just start
> > + * from 1 otherwise). The maximum number of nodes should not exceed the
> > + * number of existent NUMA nodes on the host, or the candidate genaration
> > + * won't work properly.
> > + */
> > + min_cpus = min_cpus<= 0 ? 0 : min_cpus;
> Wouldn't it just make more sense to specify that "min_cpus" (and other
> parameters) had to be >=0?
>
Yes, I think that make sense, will do.
> > +/*
> > + * The NUMA placement candidates are reordered according to the following
> > + * heuristics:
> > + * - candidates involving fewer nodes come first. In case two (or
> > + * more) candidates span the same number of nodes,
> > + * - candidates with greater amount of free memory come first. In
> > + * case two (or more) candidates differ in their amount of free
> > + * memory by less than 10%,
> Interesting idea -- sounds pretty reasonable.
>
Time will tell... :-O
> > +static int numa_cmpf(const void *v1, const void *v2)
> > +{
> > + const libxl__numa_candidate *c1 = (const libxl__numa_candidate*) v1;
> > + const libxl__numa_candidate *c2 = (const libxl__numa_candidate*) v2;
> > + double mem_diff = labs(c1->free_memkb - c2->free_memkb);
> > + double mem_avg = (c1->free_memkb + c2->free_memkb) / 2.0;
> > +
> > + if (c1->nr_nodes != c2->nr_nodes)
> > + return c1->nr_nodes - c2->nr_nodes;
> > +
> > + if ((mem_diff / mem_avg) * 100.0< 10.0&&
> > + c1->nr_domains != c2->nr_domains)
> > + return c1->nr_domains - c2->nr_domains;
> I realize this isn't a hot path, but it seems like moving into FP is
> really unnecessary. You can just do this:
>
Yeah, IanC pointed out that too. I'll convert everything toward integer
arith.
> One more thing: Is there a reason why you put get_numa_candidates() in
> libxl_internal.h, but not sort_numa_candidates()? It seems like both or
> neither should go. :-)
>
diff --git a/tools/libxl/libxl_internal.h b/tools/libxl/libxl_internal.h
--- a/tools/libxl/libxl_internal.h
+++ b/tools/libxl/libxl_internal.h
@@ -2021,6 +2021,134 @@ static inline void libxl__ctx_unlock(lib
...
+_hidden int libxl__get_numa_candidates(libxl__gc *gc,
+ uint32_t min_free_memkb, int min_cpus,
+ int min_nodes, int max_nodes,
+ libxl__numa_candidate *cndts[], int *nr_cndts);
+
...
+/* signature for the comparison function between two candidates c1 and c2
+ * (the thid parameter is provided to enable thread safety). */
+typedef int (*libxl__numa_candidate_cmpf)(const void *v1, const void *v2);
+/* sort the list of candidates in cndts (an array with nr_cndts elements in
+ * it) using cmpf for comparing two candidates. Uses libc's qsort(). */
+_hidden void libxl__sort_numa_candidates(libxl__numa_candidate cndts[],
+ int nr_cndts,
+ libxl__numa_candidate_cmpf cmpf);
But I'm not entirely sure I understood what you meant...
> That's all I have for now. I'm OK with the general approach, so here's
> a "weak ack", so if a maintainer is happy with the code, he can check it in:
>
> Acked-by: George Dunlap <george.dunlap@eu.citrix.com>
>
Ok, that's very nice. I'll have to respin the series, so I'll definitely
address your comments and add your ack. :-)
Thanks and Regards,
Dario
--
<<This happens because I choose it to happen!>> (Raistlin Majere)
-----------------------------------------------------------------
Dario Faggioli, Ph.D, http://retis.sssup.it/people/faggioli
Senior Software Engineer, Citrix Systems R&D Ltd., Cambridge (UK)
[-- Attachment #1.2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 198 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:[~2012-06-21 16:43 UTC|newest]
Thread overview: 52+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-06-15 17:04 [PATCH 00 of 10 v2] Automatic NUMA placement for xl Dario Faggioli
2012-06-15 17:04 ` [PATCH 01 of 10 v2] libxl: fix a typo in the GCREALLOC_ARRAY macro Dario Faggioli
2012-06-21 8:53 ` Ian Campbell
2012-06-26 16:00 ` Ian Campbell
2012-06-26 16:26 ` Dario Faggioli
2012-06-15 17:04 ` [PATCH 02 of 10 v2] libxl: add a new Array type to the IDL Dario Faggioli
2012-06-15 17:04 ` [PATCH 03 of 10 v2] libxl, libxc: introduce libxl_get_numainfo() Dario Faggioli
2012-06-21 9:02 ` Ian Campbell
2012-06-21 10:00 ` Dario Faggioli
2012-06-21 10:21 ` Ian Campbell
2012-06-15 17:04 ` [PATCH 04 of 10 v2] xl: add more NUMA information to `xl info -n' Dario Faggioli
2012-06-21 9:04 ` Ian Campbell
2012-06-15 17:04 ` [PATCH 05 of 10 v2] libxl: rename libxl_cpumap to libxl_bitmap Dario Faggioli
2012-06-21 9:12 ` Ian Campbell
2012-06-21 9:49 ` Dario Faggioli
2012-06-21 10:22 ` Ian Campbell
2012-06-15 17:04 ` [PATCH 06 of 10 v2] libxl: expand the libxl_bitmap API a bit Dario Faggioli
2012-06-21 9:30 ` Ian Campbell
2012-06-21 9:46 ` Dario Faggioli
2012-06-15 17:04 ` [PATCH 07 of 10 v2] libxl: introduce some node map helpers Dario Faggioli
2012-06-21 9:35 ` Ian Campbell
2012-06-21 9:44 ` Dario Faggioli
2012-06-15 17:04 ` [PATCH 08 of 10 v2] libxl: enable automatic placement of guests on NUMA nodes Dario Faggioli
2012-06-21 11:40 ` Ian Campbell
2012-06-21 16:34 ` Dario Faggioli
2012-06-22 10:14 ` Ian Campbell
2012-06-26 16:25 ` Dario Faggioli
2012-06-26 16:26 ` Ian Campbell
2012-06-26 17:23 ` Ian Jackson
2012-06-21 16:16 ` George Dunlap
2012-06-21 16:43 ` Dario Faggioli [this message]
2012-06-22 10:05 ` George Dunlap
2012-06-26 11:03 ` Ian Jackson
2012-06-26 15:20 ` Dario Faggioli
2012-06-27 8:15 ` Dario Faggioli
2012-06-28 7:25 ` Zhang, Yang Z
2012-06-28 8:36 ` George Dunlap
2012-06-29 5:38 ` Zhang, Yang Z
2012-06-29 9:46 ` Dario Faggioli
2012-06-28 10:12 ` Dario Faggioli
2012-06-28 12:41 ` Pasi Kärkkäinen
2012-06-28 17:03 ` Dario Faggioli
2012-06-29 5:29 ` Zhang, Yang Z
2012-06-29 9:38 ` Dario Faggioli
2012-06-15 17:04 ` [PATCH 09 of 10 v2] libxl: have NUMA placement deal with cpupools Dario Faggioli
2012-06-21 13:31 ` Ian Campbell
2012-06-21 13:54 ` Dario Faggioli
2012-06-21 13:58 ` Ian Campbell
2012-06-15 17:04 ` [PATCH 10 of 10 v2] Some automatic NUMA placement documentation Dario Faggioli
2012-06-18 15:54 ` Dario Faggioli
2012-06-21 13:38 ` Ian Campbell
2012-06-21 13:57 ` Dario Faggioli
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=1340297032.4856.93.camel@Solace \
--to=raistlin@linux.it \
--cc=Ian.Campbell@citrix.com \
--cc=Ian.Jackson@eu.citrix.com \
--cc=Stefano.Stabellini@eu.citrix.com \
--cc=andre.przywara@amd.com \
--cc=george.dunlap@eu.citrix.com \
--cc=juergen.gross@ts.fujitsu.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.