[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH 4 of 4] Support new xl command cpupool-numa-split
On Fri, 2010-11-26 at 07:10 +0000, Juergen Gross wrote: > + > + if (libxl_cpumap_alloc(&ctx, &cpumap)) { > + fprintf(stderr, "Failed to allocate cpumap\n"); > + return -ERROR_FAIL; > + } > + > + poolinfo = libxl_list_cpupool(&ctx, &n_pools); > + if (!poolinfo) { > + fprintf(stderr, "error getting cpupool info\n"); > + return -ERROR_NOMEM; > + } > + poolid = poolinfo[0].poolid; > + schedid = poolinfo[0].sched_id; > + libxl_for_each_cpu(c, poolinfo[0].cpumap) > + if (libxl_cpumap_test(&poolinfo[0].cpumap, c)) > + libxl_cpumap_set(&cpumap, c); Can the libxl_cpumap_alloc and this loop be deferred until after the check and bail for n_pools > 1? There seems to be no way to find out the number of pools without also getting all the info about them, which is a shame. > + /* Reset Pool-0 to 1st node */ > + node = topology->nodemap.array[0]; > + libxl_for_each_cpu(c, cpumap) { > + if (!libxl_cpumap_test(&cpumap, c) && (c < > topology->nodemap.entries) && > + (topology->nodemap.array[c] == node)) { > + ret = -libxl_cpupool_cpuadd(&ctx, poolid, c); > + if (ret) { > + fprintf(stderr, "error on adding cpu to Pool-0\n"); > + goto out; > + } > + libxl_cpumap_reset(&freemap, c); (nt really related to this series but I wish this was called libxl_cpumap_clear, I had to go check it wasn't resetting the whole map or something...) > + } > + } > + libxl_for_each_cpu(c, cpumap) { > + if (libxl_cpumap_test(&cpumap, c) && (c < topology->nodemap.entries) > && > + (topology->nodemap.array[c] != node)) { > + ret = -libxl_cpupool_cpuremove(&ctx, poolid, c); > + if (ret) { > + fprintf(stderr, "error on removing cpu from Pool-0\n"); > + goto out; > + } > + libxl_cpumap_set(&freemap, c); > + } > + } Can this loop be merged with the preceding loop, with the body being the else case of the if? > + for (;;) { > + node = -1; > + libxl_for_each_cpu(c, freemap) { > + if (libxl_cpumap_test(&freemap, c) && (node == -1)) { > + node = topology->nodemap.array[c]; > + } > + libxl_cpumap_reset(&cpumap, c); > + if ((node >= 0) && libxl_cpumap_test(&freemap, c) && > + (c < topology->nodemap.entries) && > (topology->nodemap.array[c] == node)) { > + libxl_cpumap_reset(&freemap, c); > + libxl_cpumap_set(&cpumap, c); > + } > + } > + if (node == -1) > + break; > + > + snprintf(name, 15, "Pool-node%d", node); Do we want to rename Pool-0 at some point too or do we rely on that name elsewhere? Ian. _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |