From: tupeng212 <tupeng212@gmail.com>
To: Keir Fraser <keir.xen@gmail.com>
Cc: xen-devel <xen-devel@lists.xen.org>
Subject: Re: alloc_heap_pages is low efficient with more CPUs
Date: Sat, 13 Oct 2012 14:46:54 +0800 [thread overview]
Message-ID: <2012101314464865629623@gmail.com> (raw)
In-Reply-To: CC9EC91B.41A16%keir.xen@gmail.com
[-- Attachment #1.1: Type: text/plain, Size: 2442 bytes --]
What if you replace tlbflush_filter() call with cpus_clear(&extra_cpus_mask)?
: you mean just clear it, maybe a little violent.., you 'd like to do it at any other place.
I assume you see lots of looping in one of those two functions, but only single-page-at-a-time calls into alloc_domheap_pages()->alloc_heap_pages()?
: In populate_physmap, all pages are 2M size,
static void populate_physmap(struct memop_args *a)
{
for ( i = a->nr_done; i < a->nr_extents; i++ )
{
page = alloc_domheap_pages(d, a->extent_order, a->memflags) ->alloc_heap_pages ; //a->extent_order = 9, always 2M size
}
//you mean move that block and TLB-flush here to avoid for loop ?
}
tupeng212
From: Keir Fraser
Date: 2012-10-13 14:30
To: tupeng212
Subject: Re: [Xen-devel] alloc_heap_pages is low efficient with more CPUs
What if you replace tlbflush_filter() call with cpus_clear(&extra_cpus_mask)? Seems a bit silly to do, but I’d like to know how much a few cpumask operations per page is costing (most are of course much quicker than tlbflush_filter as they operate on 64 bits per iteration, rather than one bit per iteration).
If that is suitably fast, I think we can have a go at fixing this by pulling the TLB-flush logic out of alloc_heap_pages() and into the loops in increwase_reservation() and populate_physmap() in common/memory.c. I assume you see lots of looping in one of those two functions, but only single-page-at-a-time calls into alloc_domheap_pages()->alloc_heap_pages()?
-- Keir
On 13/10/2012 07:21, "tupeng212" <tupeng212@gmail.com> wrote:
If the tlbflush_filter() and cpumask_or() lines are commented out from the
if(need_tlbflush) block in alloc_heap_pages(), what are the domain creation
times like then?
: You mean removing these code from alloc_heap_pages, then try it.
I didn't do it as you said, but I calculated the whole time of if(need_tlbflush) block
by using time1=NOW() ...block ... time2=NOW(), time=time2-time1, its unit is ns, and s = ns * 10^9
it occupy high rate of the whole time. whole starting time is 30s, then this block may be 29s.
By the way it looks like you are not using xen-unstable or
xen-4.2, can you try with one of these later versions of Xen?
: fortunately, other groups have to use xen-4.2, we have repeated this experiment on
that source code too, it changed nothing, time is still very long in second starting.
tupeng
[-- Attachment #1.2: Type: text/html, Size: 5118 bytes --]
[-- Attachment #2: Type: text/plain, Size: 126 bytes --]
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel
next parent reply other threads:[~2012-10-13 6:46 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <CC9EC91B.41A16%keir.xen@gmail.com>
2012-10-13 6:46 ` tupeng212 [this message]
2012-10-13 8:59 ` alloc_heap_pages is low efficient with more CPUs Keir Fraser
2012-10-15 13:27 ` tupeng212
2012-10-15 15:45 ` Keir Fraser
2012-10-16 7:51 ` Jan Beulich
2012-10-16 8:03 ` Keir Fraser
2012-10-16 8:28 ` Jan Beulich
2012-10-16 8:53 ` Keir Fraser
2012-10-11 15:18 tupeng212
2012-10-11 15:41 ` Keir Fraser
2012-10-12 12:24 ` tupeng212
2012-10-12 22:39 ` Mukesh Rathor
2012-10-13 6:03 ` Keir Fraser
2012-10-13 7:20 ` tupeng212
2012-10-13 8:59 ` Keir Fraser
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=2012101314464865629623@gmail.com \
--to=tupeng212@gmail.com \
--cc=keir.xen@gmail.com \
--cc=xen-devel@lists.xen.org \
/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.