All of lore.kernel.org
 help / color / mirror / Atom feed
From: Juergen Gross <juergen.gross@ts.fujitsu.com>
To: Tim Deegan <Tim.Deegan@citrix.com>
Cc: Ian Pratt <Ian.Pratt@eu.citrix.com>,
	James Harper <james.harper@bendigoit.com.au>,
	"xen-devel@lists.xensource.com" <xen-devel@lists.xensource.com>
Subject: Re: Poor HVM performance with 8 vcpus
Date: Wed, 07 Oct 2009 14:32:56 +0200	[thread overview]
Message-ID: <4ACC8A78.7040806@ts.fujitsu.com> (raw)
In-Reply-To: <20091007101447.GB20579@whitby.uk.xensource.com>

Tim Deegan wrote:
> At 10:40 +0100 on 07 Oct (1254912041), Juergen Gross wrote:
>> calls to shadow_alloc              438     427     424     480     436     422
>> number of shadow pages in use     2765    2151    2386    2509    4885    1391
>> calls to shadow_free               168     132     185     144     181     105
>> calls to shadow_fault            65271   69132   60495   53756   73363   52449
>> shadow_fault fast path n/p        7347    8081    6713    6134    8521    6112
>> shadow_fault fast path error        14      12      15       3      13      11
>> shadow_fault really guest fault  24004   25723   22815   19709   27049   19190
>> shadow_fault emulates a write     1045     949    1018     995    1015     901
>> shadow_fault fast emulate          424     361     449     348     387     314
>> shadow_fault fixed fault         32503   34264   29624   26689   36641   26096
>> calls to shadow_validate_gl2e      875     748     917     731     795     667
>> calls to shadow_validate_gl3e      481     456     443     491     489     446
>> calls to shadow_validate_gl4e      104      97      95     112     105      95
>> calls to shadow_hash_lookup    2109654 2203254 2228896 2245849 2164727 2309059
>> shadow hash hit in bucket head 2012828 2111164 2161113 2177591 2104099 2242458
>> shadow hash misses                 851     840     841     910     852     838
>> calls to get_shadow_status     2110031 2202828 2228769 2246689 2164213 2309241
>> calls to shadow_hash_insert        438     436     428     481     437     430
>> calls to shadow_hash_delete        168     150     185     154     202     128
>> shadow removes write access        335     324     329     385     330     336
>> shadow writeable: linux high       130     139     152     155     138     149
>> shadow writeable: sl1p           14508   15402   12961   11823   16474   11472
>> shadow writeable brute-force       205     185     177     230     192     187
>> shadow unshadows for fork/exit       9      12      12      12      18      12
>> shadow unshadows a page             10      13      13      13      19      13
>> shadow walks guest tables       647527  727336  649397  646601  659655  621289
>> shadow checks gwalk                526     544     535     550     614     554
>> shadow flush tlb by rem wr perm    235     233     229     268     238     237
>> shadow emulates invlpg           14688   15499   14604   12630   16627   11370
>> shadow OOS fixup adds            14467   15335   13059   11840   16624   11339
>> shadow OOS unsyncs               14467   15335   13058   11840   16624   11339
>> shadow OOS evictions               566     449     565     369     589     336
>> shadow OOS resyncs               14510   15407   12964   11828   16478   11481
>>
>> I don't think the "shadow writable brute-force" is the problem.
>> get_shadow_status seems to be a more critical candidate.
> 
> get_shadow_status is a simple hash lookup to find the shadow of a frame;
> it's expected to happen multiple times per pagefault.  Even so those
> numbers look high.  ~10k guest PT walks per CPU per second, each causing
> 3-4 shadow hash lookups.  That's much higher than the number of
> pagefaults.  
> 
> I take it you reset the performance counters at the start of that run?

Yes.

> 
> Are there any other numbers (outside the shadow stats) that are up
> around 600k/cpu?

No. All other counts are below 100k.

> 
> I wonder whether this is caused by pagetables changing under out feet in
> the shadow fault handler -- in order to avoid taking the shadow lock too
> often, the fault handler walks the pagetables first, then takes the lock
> and double-checks its work.   If the other cpus are aggressively writing
> to the pagetables that this CPU is running on that could cause the
> pagefault handler to spin, locking and unlocking the shadow lock as it
> goes.   I would expect to see the OOS unsyncs number much higher if that
> was the case though.  
> 
> Can you try the attached patch and see if it makes any difference?

Not really. Still 4 vcpus waiting at the shadow lock, performance counters as
follows (test ran with 8 vcpus this time, performance was 2% higher than
without patch, but uncertainty is in the same order).
I copied only the counters for 1 cpu, as the others are similar. Counters are
smaller as before, because performance was less as with 6 vcpus and lock
profiling costs about 20% performance with this lock load (the previous
measurement had no lock profiling support).

calls to shadow_alloc               700
number of shadow pages in use      1986
calls to shadow_free                 48
calls to shadow_fault             33508
shadow_fault fast path n/p         3785
shadow_fault fast path error         10
shadow_fault really guest fault   11290
shadow_fault emulates a write      1313
shadow_fault fast emulate           257
shadow_fault fixed fault          16853
calls to shadow_validate_gl2e       604
calls to shadow_validate_gl3e       786
calls to shadow_validate_gl4e       179
calls to shadow_hash_lookup     1079773
shadow hash hit in bucket head  1030265
shadow hash misses                 1258
calls to get_shadow_status      1079233
calls to shadow_hash_insert         700
calls to shadow_hash_delete          48
shadow removes write access         650
shadow writeable: linux high        624
shadow writeable: sl1p             7459
shadow writeable brute-force         26
shadow unshadows for fork/exit        1
shadow unshadows a page               1
shadow walks guest tables        393663
shadow checks gwalk                1251
shadow flush tlb by rem wr perm     439
shadow emulates invlpg             6212
shadow OOS fixup adds              7330
shadow OOS unsyncs                 7328
shadow OOS evictions                175
shadow OOS resyncs                 7459


Juergen

-- 
Juergen Gross                 Principal Developer Operating Systems
TSP ES&S SWE OS6                       Telephone: +49 (0) 89 636 47950
Fujitsu Technolgy Solutions               e-mail: juergen.gross@ts.fujitsu.com
Otto-Hahn-Ring 6                        Internet: ts.fujitsu.com
D-81739 Muenchen                 Company details: ts.fujitsu.com/imprint.html

  reply	other threads:[~2009-10-07 12:32 UTC|newest]

Thread overview: 29+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-10-07  6:55 Poor HVM performance with 8 vcpus Juergen Gross
2009-10-07  7:26 ` Keir Fraser
2009-10-07  7:49   ` Juergen Gross
2009-10-07  7:56 ` Ian Pratt
2009-10-07  8:08   ` James Harper
2009-10-07  8:13     ` Ian Pratt
2009-10-07  8:31       ` Juergen Gross
2009-10-07  8:17     ` Keir Fraser
2009-10-07  9:12     ` Tim Deegan
2009-10-07  9:40       ` Juergen Gross
2009-10-07 10:11         ` George Dunlap
2009-10-07 11:45           ` Juergen Gross
2009-10-07 13:44             ` George Dunlap
     [not found]             ` <de76405a0910070627s7585c587l8753e40d1d2b77b9@mail.gmail.com>
     [not found]               ` <4ACC9C40.3030503@ts.fujitsu.com>
2009-10-07 14:24                 ` George Dunlap
2009-10-08  5:00                   ` Juergen Gross
2009-10-07 10:14         ` Tim Deegan
2009-10-07 12:32           ` Juergen Gross [this message]
2009-10-07 16:37 ` Gianluca Guida
2009-10-08  7:10   ` Juergen Gross
2009-10-14  8:16     ` Juergen Gross
2009-10-14  8:35       ` Keir Fraser
2009-10-14  9:11         ` Juergen Gross
2009-10-14 10:16         ` Gianluca Guida
2009-10-14 10:44           ` Juergen Gross
2009-10-14 10:49             ` Keir Fraser
2009-10-14  8:41       ` Tim Deegan
2009-10-14  9:17         ` Juergen Gross
2009-10-14 11:35       ` Gianluca Guida
2009-10-14 11:43         ` Juergen Gross

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=4ACC8A78.7040806@ts.fujitsu.com \
    --to=juergen.gross@ts.fujitsu.com \
    --cc=Ian.Pratt@eu.citrix.com \
    --cc=Tim.Deegan@citrix.com \
    --cc=james.harper@bendigoit.com.au \
    --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.