WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-devel

Re: [Xen-devel] Poor HVM performance with 8 vcpus

To: Tim Deegan <Tim.Deegan@xxxxxxxxxx>
Subject: Re: [Xen-devel] Poor HVM performance with 8 vcpus
From: Juergen Gross <juergen.gross@xxxxxxxxxxxxxx>
Date: Wed, 07 Oct 2009 11:40:41 +0200
Cc: Ian Pratt <Ian.Pratt@xxxxxxxxxxxxx>, James Harper <james.harper@xxxxxxxxxxxxxxxx>, "xen-devel@xxxxxxxxxxxxxxxxxxx" <xen-devel@xxxxxxxxxxxxxxxxxxx>
Delivery-date: Wed, 07 Oct 2009 02:41:11 -0700
Dkim-signature: v=1; a=rsa-sha256; c=simple/simple; d=ts.fujitsu.com; i=juergen.gross@xxxxxxxxxxxxxx; q=dns/txt; s=s1536b; t=1254908655; x=1286444655; h=from:sender:reply-to:subject:date:message-id:to:cc: mime-version:content-transfer-encoding:content-id: content-description:resent-date:resent-from:resent-sender: resent-to:resent-cc:resent-message-id:in-reply-to: references:list-id:list-help:list-unsubscribe: list-subscribe:list-post:list-owner:list-archive; z=From:=20Juergen=20Gross=20<juergen.gross@xxxxxxxxxxxxxx> |Subject:=20Re:=20[Xen-devel]=20Poor=20HVM=20performance =20with=208=20vcpus|Date:=20Wed,=2007=20Oct=202009=2011:4 0:41=20+0200|Message-ID:=20<4ACC6219.4010305@xxxxxxxxxxxx om>|To:=20Tim=20Deegan=20<Tim.Deegan@xxxxxxxxxx>|CC:=20Ja mes=20Harper=20<james.harper@xxxxxxxxxxxxxxxx>,=20=0D=0A =20Ian=20Pratt=20<Ian.Pratt@xxxxxxxxxxxxx>,=0D=0A=20"xen- devel@xxxxxxxxxxxxxxxxxxx"=20<xen-devel@xxxxxxxxxxxxxxxxx om>|MIME-Version:=201.0|Content-Transfer-Encoding:=207bit |In-Reply-To:=20<20091007091254.GA20579@xxxxxxxxxxxxxxxxx ce.com>|References:=20<4ACC3B49.4060500@xxxxxxxxxxxxxx> =09<4FA716B1526C7C4DB0375C6DADBC4EA342A68E5C92@LONPMAILBO X01.citrite.net>=09<AEC6C66638C05B468B556EA548C1A77D0177D 81F@trantor>=20<20091007091254.GA20579@xxxxxxxxxxxxxxxxxx e.com>; bh=q+kU+K6reOqAaYstouX8/Ukm5mbf3sQb2H1FlPcfya0=; b=C9g/RCEFS5y7VdJfbey3j+TYZvyE6nf03rZKYoBaJX0QK9axTzd7Gz7s ZkZFoVJtmWVqRrm/KQe6v6HH13OGtODClWEt20XK1QzwuB8EAzsqtJFXJ BPrq4QQ5bGgOkGQMMEQGfvELbdW2F2VK2euIP5Hytn+U3LRWS97iPy+AZ vaio+3oINqELnUNee2ZWl3hjtbvGNmOw1zmEtZrGenioqxlRuaoOYc4GV cddRILFnCNU9to6xjyu/CNAOkJNch;
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:X-Enigmail-Version:Content-Type: Content-Transfer-Encoding; b=J48r2wgzLeAoFBQ7SvfVYk21Dm1vJomQ6cHROQiEMv/xUPSMuNA5JhjX ryWPkRkLXieOxA63SAamQdxNm2ACX0HhJlbrjB7oDPjhtwanbCUtFSzlg 6yjtCXJItEPnuEOGHQuAK70rHpvQHCiBG+70KTq+2dK5NTBKD1w18ASNU SmWVoeOfa+uQLIrHh7RWiLzm8GeaImMjyufAsrmkBGLmy/rlHj0evR2E6 CUz4xUvud8anSvdCDMSU+eG7zPkqg;
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
In-reply-to: <20091007091254.GA20579@xxxxxxxxxxxxxxxxxxxxxxx>
List-help: <mailto:xen-devel-request@lists.xensource.com?subject=help>
List-id: Xen developer discussion <xen-devel.lists.xensource.com>
List-post: <mailto:xen-devel@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
Organization: Fujitsu Technology Solutions
References: <4ACC3B49.4060500@xxxxxxxxxxxxxx> <4FA716B1526C7C4DB0375C6DADBC4EA342A68E5C92@xxxxxxxxxxxxxxxxxxxxxxxxx> <AEC6C66638C05B468B556EA548C1A77D0177D81F@trantor> <20091007091254.GA20579@xxxxxxxxxxxxxxxxxxxxxxx>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
User-agent: Mozilla-Thunderbird 2.0.0.22 (X11/20090707)
Tim Deegan wrote:
> At 09:08 +0100 on 07 Oct (1254906487), James Harper wrote:
>>> At the very least it would be good to have a predictor which figured
>> out which
>>> of the several heuristics should actually be used for a given VM. A
>> simple
>>> "try whichever one worked last time first" should work fine.
>>>
>>> Even smarter would be two just have heuristics for the two general
>> classes of
>>> mapping (1:1 and recursive), and have the code automatically figure
>> out the
>>> starting virtual address being used for a given guest.
>>>
>> Are there any other of these heuristics tucked away in xen? Would there
>> be any benefit to specifying the OS being virtualised in the config? Eg
>> "os=windows"?
> 
> It would be better to allow the specific heuristic to be specified in
> the Xen interface (e.g. that it's a recursive pagetable at a particular
> address, or a one-to-one mapping).  Which isn't to say the python layer
> couldn't put some syntactic sugar on it. 
> 
> But the bulk of the win will be had from adding BS2000 to the list of
> heuristics.  There's probably some benefit in making the heuristic list
> pull-to-front, too.
> 
> Automatically detecting 1:1 mappings and linear pagetable schemes would
> be fun and is probably the Right Thing[tm], but making sure it works
> with all the OSes that currently work (e.g. all HALs of all Windows
> versions) will be a significant investment in time. :)
> 
> Also, before getting too stuck into this it'd be worth running once more
> with performance counters enabled and checking that this is actually
> your problem!  You should see a much higher number for "shadow writeable
> brute-force" running BS2000 than running Windows.

I still had the numbers for a test with 6 vcpus, which already showed severe
performance degradation. I edited the numbers a little bit to show only the
counters for the cpus running BS2000 and no other domain. The test ran for
60 seconds.

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.


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@xxxxxxxxxxxxxx
Otto-Hahn-Ring 6                        Internet: ts.fujitsu.com
D-81739 Muenchen                 Company details: ts.fujitsu.com/imprint.html

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