[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] Re: [Patch] support of cpu pools in xl


  • To: Ian Campbell <Ian.Campbell@xxxxxxxxxxxxx>
  • From: Juergen Gross <juergen.gross@xxxxxxxxxxxxxx>
  • Date: Fri, 17 Sep 2010 13:41:32 +0200
  • Cc: "xen-devel@xxxxxxxxxxxxxxxxxxx" <xen-devel@xxxxxxxxxxxxxxxxxxx>
  • Delivery-date: Fri, 17 Sep 2010 04:43:06 -0700
  • Domainkey-signature: s=s1536a; d=ts.fujitsu.com; c=nofws; q=dns; h=X-SBRSScore:X-IronPort-AV:Received:X-IronPort-AV: Received:Received:Message-ID:Date:From:Organization: User-Agent:MIME-Version:To:CC:Subject:References: In-Reply-To:Content-Type; b=Di77n6B/3JIGjwDUyYyV5Pd1WFaxk9o6ru3K6sz3TzWOKb2dbIVkFSQT 6MENCTXrtqA1ZFQbrm8tjr0gfEA7en8rmlHPvo6aSLrzaXgTiHesw2Wsn WBd/hlxaAS/Oeswbdjjk4acZGVqMChKY7NUq23aOVktszD9nEvMSM7ewq fIC5fdvdG46nGUC+OBIH0wX5YKmDbOaAjEBLrUnqQSf4dsNNR95RFg8rt 15/bFFPw/hjQ1SJfjmbhGHRbsYKT+;
  • List-id: Xen developer discussion <xen-devel.lists.xensource.com>

On 09/17/10 11:46, Ian Campbell wrote:

On Fri, 2010-09-17 at 07:10 +0100, Juergen Gross wrote:

attached patch adds support of cpu pools in xl/libxl.
Ian, I didn't split up this patch, because the updated libxl_cpumask
structure requires changes to xl in any case.

That's fine.

BTW: I realized that libxlu_cfg_l.c seems to be in the repository.
Isn't this file generated by make? I think it should be removed there.

In an ideal world, yes. I think this was a workaround for buggy versions
of flex observed in the field or something.

How nice ;-)


Signed-off-by: juergen.gross@xxxxxxxxxxxxxx

Support of cpu pools in xl:
   library functions
   xl pool-create
   xl pool-list
   xl pool-destroy
   xl pool-cpu-add
   xl pool-cpu-remove
   xl pool-migrate

diff -r d978675f3d53 tools/libxl/libxl.c
--- a/tools/libxl/libxl.c       Thu Sep 16 18:29:26 2010 +0100
+++ b/tools/libxl/libxl.c       Fri Sep 17 07:42:30 2010 +0200
@@ -609,9 +609,17 @@ libxl_poolinfo * libxl_list_pool(libxl_c
  libxl_poolinfo * libxl_list_pool(libxl_ctx *ctx, int *nb_pool)
  {
      libxl_poolinfo *ptr;
-    int i, ret;
-    xc_cpupoolinfo_t info[256];
-    int size = 256;
+    int i, m;
+    xc_cpupoolinfo_t *info;
+    int size;
+    uint32_t poolid;
+    libxl_physinfo physinfo;
+
+    if (libxl_get_physinfo(ctx,&physinfo) != 0) {
+        LIBXL__LOG_ERRNO(ctx, LIBXL__LOG_ERROR, "getting phys info");
+        return NULL;
+    }
+    size = physinfo.max_cpu_id + 32;

Where does the number 32 come from?

I just wanted to be able to support some (inactive) cpupools without any
cpu allocated. It's just a number which should normally be large enough.


      ptr = calloc(size, sizeof(libxl_poolinfo));

      if (!ptr) {
@@ -619,16 +627,23 @@ libxl_poolinfo * libxl_list_pool(libxl_c
          return NULL;
      }

-    ret = xc_cpupool_getinfo(ctx->xch, 0, 256, info);
-    if (ret<0) {
-        LIBXL__LOG_ERRNO(ctx, LIBXL__LOG_ERROR, "getting cpupool info");
-        return NULL;
+    poolid = 0;
+    for (i = 0; i<  size; i++) {
+        info = xc_cpupool_getinfo(ctx->xch, poolid);
+        if (info == NULL)
+            break;
+        ptr[i].poolid = info->cpupool_id;
+        ptr[i].sched_id = info->sched_id;
+        ptr[i].n_dom = info->n_dom;
+        if (libxl_cpumap_alloc(&ptr[i].cpumap, physinfo.max_cpu_id + 1))
+            break;
+        for (m = 0; m<  ptr[i].cpumap.size / sizeof(*ptr[i].cpumap.map); m++)
+            ptr[i].cpumap.map[m] = info->cpumap[m];

I guess if "physinfo.max_cpu_id + 1" does not correspond to
info->cpumap_size then that is a serious error but if it does happen
then you may run over the end of either ptr[i].cpumap.map or
info->cpumap.

Changed (introducing '0' when info->cpumap_size is too small).


Juergen

--
Juergen Gross                 Principal Developer Operating Systems
TSP ES&S SWE OS6                       Telephone: +49 (0) 89 3222 2967
Fujitsu Technology Solutions              e-mail: juergen.gross@xxxxxxxxxxxxxx
Domagkstr. 28                           Internet: ts.fujitsu.com
D-80807 Muenchen                 Company details: ts.fujitsu.com/imprint.html

Attachment: cpupools-xl.patch
Description: Text Data

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.