All of lore.kernel.org
 help / color / mirror / Atom feed
From: Mukesh Rathor <mukesh.rathor@oracle.com>
To: Keir Fraser <keir.fraser@eu.citrix.com>
Cc: "xen-devel@lists.xensource.com" <xen-devel@lists.xensource.com>
Subject: Re: Hyp  compat_memory_op() and 256 GB PV
Date: Wed, 18 Mar 2009 14:50:19 -0700	[thread overview]
Message-ID: <49C16C9B.9000705@oracle.com> (raw)
In-Reply-To: <C5C22613.2F63%keir.fraser@eu.citrix.com>

[-- Attachment #1: Type: text/plain, Size: 1514 bytes --]

Hi Keir,

Attached please find my patch to allocate 1M pages at a time. With this patch 
on 3.3.1 and unstable, I'm able to bring up the hypervisor with 512GB memory 
and start a PV 64 guest (with my pud entry fix).

The only issue is performance related. As somewhat expected, after guest 
shutdown it takes a while for pages to be freed and guest to disappear. Until 
this time, system is fine, but xm will hang.

In my kdb debugger, I see cpu's in :
[0]ffff828c80110f52: page_scrub_softirq+22          test %al, %al
[1]ffff828c80110f52: page_scrub_softirq+22          test %al, %al
[2]ffff828c80110f52: page_scrub_softirq+22          test %al, %al
...

page_scrub_softirq():
     /* free_heap_pages() does not parallelise well. Serialise this function. */
     if ( !spin_trylock(&serialise_lock) )

I guess a future work item to look into parallelizing this some day....

Thanks a lot,
Mukesh



Keir Fraser wrote:
 > On 18/02/2009 19:52, "Mukesh Rathor" <mukesh.rathor@oracle.com> wrote:
 >
 >> This is a PV domain BTW, I guess xc_hvm_build.c wont' be involved. I'll
 >> instrument libxc and debug more... meanwhile I thought I'd post this.
 >
 > Yes, my mistake, and this points us straight at the problem.
 >
 > You see the xc_domain_memory_populate_physmap() call at the end of
 > libxc/xc_dom_x86.c:arch_setup_meminit()? That needs to be put in a for loop,
 > allocating no more than, say, a million pages at a time.
 >
 > The patch should be very simple, so I'll leave the rest to you.
 >
 >  -- Keir
 >

[-- Attachment #2: libxc.patch --]
[-- Type: text/x-patch, Size: 1627 bytes --]

Signed-off-by: Mukesh Rathor <mukesh.rathor@oracle.com>
---
diff -r 746955812d23 tools/libxc/xc_dom_x86.c
--- a/tools/libxc/xc_dom_x86.c	Wed Mar 11 17:47:56 2009 -0700
+++ b/tools/libxc/xc_dom_x86.c	Wed Mar 18 14:31:07 2009 -0700
@@ -25,6 +25,7 @@
 #include "xenctrl.h"
 
 /* ------------------------------------------------------------------------ */
+#define MEM_CHUNKSZ                  1024*1024
 
 #define bits_to_mask(bits)       (((xen_vaddr_t)1 << (bits))-1)
 #define round_down(addr, mask)   ((addr) & ~(mask))
@@ -694,7 +695,7 @@ int arch_setup_meminit(struct xc_dom_ima
 int arch_setup_meminit(struct xc_dom_image *dom)
 {
     int rc;
-    xen_pfn_t pfn;
+    xen_pfn_t pfn, pages, allocsz, *p2mp;
 
     rc = x86_compat(dom->guest_xc, dom->guest_domid, dom->guest_type);
     if ( rc )
@@ -712,10 +713,16 @@ int arch_setup_meminit(struct xc_dom_ima
     for ( pfn = 0; pfn < dom->total_pages; pfn++ )
         dom->p2m_host[pfn] = pfn;
 
-    /* allocate guest memory */
-    rc = xc_domain_memory_populate_physmap(dom->guest_xc, dom->guest_domid,
-                                           dom->total_pages, 0, 0,
-                                           dom->p2m_host);
+    /* allocate guest memory MEM_CHUNKSZ at a time */
+    for ( rc=0, p2mp=dom->p2m_host, pages=dom->total_pages; !rc && pages; )
+    {
+        allocsz = (pages <= MEM_CHUNKSZ) ? pages : MEM_CHUNKSZ;
+        rc = xc_domain_memory_populate_physmap(dom->guest_xc, dom->guest_domid,
+                                               allocsz, 0, 0, p2mp);
+        pages -= allocsz;
+        p2mp += allocsz;
+    }
+
     return rc;
 }
 

[-- Attachment #3: Type: text/plain, Size: 138 bytes --]

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

      reply	other threads:[~2009-03-18 21:50 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-02-18  3:39 Hyp compat_memory_op() and 256 GB PV Mukesh Rathor
2009-02-18  8:23 ` Keir Fraser
2009-02-18 19:52   ` Mukesh Rathor
2009-02-18 20:54     ` Keir Fraser
2009-03-18 21:50       ` Mukesh Rathor [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=49C16C9B.9000705@oracle.com \
    --to=mukesh.rathor@oracle.com \
    --cc=keir.fraser@eu.citrix.com \
    --cc=xen-devel@lists.xensource.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.