[Libvir] CPU pinning of domains at creation time
Saori Fukuta
fukuta.saori at jp.fujitsu.com
Thu Oct 18 01:10:59 UTC 2007
On Wed, 17 Oct 2007 10:53:17 -0400 Daniel Veillard wrote:
> On Thu, Oct 11, 2007 at 10:45:44AM -0500, Ryan Harper wrote:
> > I think we should support the same cpuset notation that Xen supports,
> > which means including ranges (1-4) and negation (^1). These two
> > features make describing large ranges much more compact.
>
> Enclosed is a rewrite of the cpuset notations, which can plug as
> a replacement for the current code in xend_internals, it should support
> the existing syntax currently used to parse xend topology strings,
> and also alllow ranges and negation. It's not as a patch but as a
> standlone replacement program which can be used to test (in spirit
> of the old topology.c one from Beth).
> I guess that's okay, check the test output (and possibly extend the
> test cases in tests array), It tried to think of everything including
> the weird \\n python xend bug and the 'no cpus' in cell cases.
> Just dump tst.c in libvirt/src, add $(INCLUDES) to the
> $(CC) $(CFLAGS) -I../include -o tst tst.c .... line and run
> make tst
> ./tst
> and check the output (also enclosed),
> The parsing is done in a slightly different way, but that should
> not change the output,
I checked the test output. It seems work fine to me !
And also, how about this one for specifying "all" as an input ?
--- tst.c_org 2007-10-17 20:52:10.000000000 -0400
+++ tst.c 2007-10-17 20:52:57.000000000 -0400
@@ -25,6 +25,7 @@ virXendError(void *conn, virErrorNumber
#ifdef STANDALONE
const char *tests[] = {
+ "node0:all",
"node0:0-3,7,9-10\n node1:11-14\n",
"node0:4,7\n",
"node0:8-9,11\n",
@@ -166,11 +167,19 @@ parseCpuSet(virConnectPtr conn, const ch
while ((*cur != 0) && (*cur != sep)) {
/*
- * 3 constructs are allowed:
+ * 4 constructs are allowed:
* - N : a single CPU number
* - N-M : a range of CPU numbers with N < M
* - ^N : remove a single CPU number from the set
+ * - all : apply the cpumap to all vcpus
*/
+ if ( !strcmp(cur, "all") ) {
+ char buf[256];
+ memset(&buf, 0, sizeof(buf));
+ sprintf(buf, "0-%d", maxcpu);
+ cur = buf;
+ }
+
if (*cur == '^') {
cur++;
neg = 1;
Thanks,
Saori Fukuta
More information about the libvir-list
mailing list