[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