[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH] xl cpupool-list: add option to list domains
On 2/18/2014 2:38 AM, Juergen Gross wrote: > It is rather complicated to obtain the cpupool a domain lives in. Add an > option -d (or --domains) to list all domains running in a cpupool. > > Signed-off-by: Juergen Gross <juergen.gross@xxxxxxxxxxxxxx> FWIW, this patch works as advertised. arlx@arlx-dw-47:~$ sudo xl cpupool-list -d Name CPUs Sched Active Domain list Pool-0 1 credit y Domain-0 test 1 arinc653 y dom1, dom2 arlx@arlx-dw-47:~$ sudo xl cpupool-list -c Name CPU list Pool-0 0 test 1 arlx@arlx-dw-47:~$ sudo xl cpupool-list -c -d specifying both cpu- and domain-list not allowed arlx@arlx-dw-47:~$ sudo xl cpupool-list -c test Name CPU list test 1 arlx@arlx-dw-47:~$ sudo xl cpupool-list -d test Name CPUs Sched Active Domain list test 1 arinc653 y dom1, dom2 -- Nathan Studer > --- > docs/man/xl.pod.1 | 5 ++++- > tools/libxl/xl_cmdimpl.c | 47 > ++++++++++++++++++++++++++++++++++++++------- > tools/libxl/xl_cmdtable.c | 5 +++-- > 3 files changed, 47 insertions(+), 10 deletions(-) > > diff --git a/docs/man/xl.pod.1 b/docs/man/xl.pod.1 > index e7b9de2..547af6d 100644 > --- a/docs/man/xl.pod.1 > +++ b/docs/man/xl.pod.1 > @@ -1019,10 +1019,13 @@ Use the given configuration file. > > =back > > -=item B<cpupool-list> [I<-c|--cpus>] [I<cpu-pool>] > +=item B<cpupool-list> [I<-c|--cpus>] [I<-d|--domains>] [I<cpu-pool>] > > List CPU pools on the host. > If I<-c> is specified, B<xl> prints a list of CPUs used by I<cpu-pool>. > +If I<-d> is specified, B<xl> prints a list of domains in I<cpu-pool> instead > +of the domain count. > +I<-c> and I<-d> are mutually exclusive. > > =item B<cpupool-destroy> I<cpu-pool> > > diff --git a/tools/libxl/xl_cmdimpl.c b/tools/libxl/xl_cmdimpl.c > index aff6f90..c7b9fce 100644 > --- a/tools/libxl/xl_cmdimpl.c > +++ b/tools/libxl/xl_cmdimpl.c > @@ -6754,23 +6754,32 @@ int main_cpupoollist(int argc, char **argv) > int opt; > static struct option opts[] = { > {"cpus", 0, 0, 'c'}, > + {"domains", 0, 0, 'd'}, > COMMON_LONG_OPTS, > {0, 0, 0, 0} > }; > - int opt_cpus = 0; > + int opt_cpus = 0, opt_domains = 0; > const char *pool = NULL; > libxl_cpupoolinfo *poolinfo; > - int n_pools, p, c, n; > + libxl_dominfo *dominfo = NULL; > + int n_pools, n_domains, p, c, n; > uint32_t poolid; > char *name; > int ret = 0; > > - SWITCH_FOREACH_OPT(opt, "hc", opts, "cpupool-list", 0) { > + SWITCH_FOREACH_OPT(opt, "hcd", opts, "cpupool-list", 0) { > case 'c': > opt_cpus = 1; > break; > + case 'd': > + opt_domains = 1; > + break; > } > > + if (opt_cpus && opt_domains) { > + fprintf(stderr, "specifying both cpu- and domain-list not > allowed\n"); > + return -ERROR_FAIL; > + } > if (optind < argc) { > pool = argv[optind]; > if (libxl_name_to_cpupoolid(ctx, pool, &poolid)) { > @@ -6784,12 +6793,21 @@ int main_cpupoollist(int argc, char **argv) > fprintf(stderr, "error getting cpupool info\n"); > return -ERROR_NOMEM; > } > + if (opt_domains) { > + dominfo = libxl_list_domain(ctx, &n_domains); > + if (!dominfo) { > + fprintf(stderr, "error getting domain info\n"); > + ret = -ERROR_NOMEM; > + goto out; > + } > + } > > printf("%-19s", "Name"); > if (opt_cpus) > printf("CPU list\n"); > else > - printf("CPUs Sched Active Domain count\n"); > + printf("CPUs Sched Active Domain %s\n", > + opt_domains ? "list" : "count"); > > for (p = 0; p < n_pools; p++) { > if (!ret && (!pool || (poolinfo[p].poolid == poolid))) { > @@ -6808,15 +6826,30 @@ int main_cpupoollist(int argc, char **argv) > n++; > } > if (!opt_cpus) { > - printf("%3d %9s y %4d", n, > - libxl_scheduler_to_string(poolinfo[p].sched), > - poolinfo[p].n_dom); > + printf("%3d %9s y ", n, > + libxl_scheduler_to_string(poolinfo[p].sched)); > + if (opt_domains) { > + c = 0; > + for (n = 0; n < n_domains; n++) { > + if (poolinfo[p].poolid == dominfo[n].cpupool) { > + name = libxl_domid_to_name(ctx, > dominfo[n].domid); > + printf("%s%s", c ? ", " : "", name); > + free(name); > + c++; > + } > + } > + } > + else > + printf(" %4d", poolinfo[p].n_dom); > } > printf("\n"); > } > } > } > > + if (dominfo) > + libxl_dominfo_list_free(dominfo, n_domains); > +out: > libxl_cpupoolinfo_list_free(poolinfo, n_pools); > > return ret; > diff --git a/tools/libxl/xl_cmdtable.c b/tools/libxl/xl_cmdtable.c > index ebe0220..8a52d26 100644 > --- a/tools/libxl/xl_cmdtable.c > +++ b/tools/libxl/xl_cmdtable.c > @@ -426,8 +426,9 @@ struct cmd_spec cmd_table[] = { > { "cpupool-list", > &main_cpupoollist, 0, 0, > "List CPU pools on host", > - "[-c|--cpus] [<CPU Pool>]", > - "-c, --cpus Output list of CPUs used by a pool" > + "[-c|--cpus] [-d|--domains] [<CPU Pool>]", > + "-c, --cpus Output list of CPUs used by a pool\n" > + "-d, --domains Output list of domains running in a > pool" > }, > { "cpupool-destroy", > &main_cpupooldestroy, 0, 1, > _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |