[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <4E01FBC9.3020009@cn.fujitsu.com>
Date: Wed, 22 Jun 2011 22:27:21 +0800
From: Xiao Guangrong <xiaoguangrong@...fujitsu.com>
To: Avi Kivity <avi@...hat.com>
CC: Marcelo Tosatti <mtosatti@...hat.com>,
LKML <linux-kernel@...r.kernel.org>, KVM <kvm@...r.kernel.org>
Subject: [PATCH v2 0/22] KVM: optimize for MMIO handled
In this version, we fix the bugs in the v1:
- fix broken read emulation spans a page boundary
- fix invalid spte point is got if we walk shadow page table
out of the mmu lock
And, we also introduce some rules to modify spte in this version,
then it does not need to atomically clear/set spte on x86_32 host
anymore, the performance report of x86_32 host is in the later section
Avi,
I have sampled the operation of lockless shadow page walking as below steps:
- mark walk_shadow_page_get_mmio_spte as 'noinline'
- do the netperf test, the client is on the guest(NIC is e1000) and the server
is on the host, it can generate large press of mmio access
- using perf to sample it, and the result of 'perf report' is attached
The ratio of walk_shadow_page_get_mmio_spte is 0.09%, the ratio of handle_ept_misconfig
is 0.11%, the ratio of handle_mmio_page_fault_common is 0.07%
I think it is acceptable, your opinion?
The structure of this patchset:
- Patch 1 ~ patch 3, fix the bugs in KVM
- Patch 4 ~ patch 7, cleanup read/write emulation and cache mmio info for them
to quickly mmio emulate
- Patch 8 ~ patch 13, cleanup/prepare for mmio page fault support
- Patch 14 ~ patch 18, optimize for spte operation for x86_32 host
- Patch 19 ~ patch 22, implement mmio page fault
Performance report on X86_32 host:
Netperf (TCP_RR, NIC=e1000):
===========================
ept is enabled:
Before After
1st 677.28 697.58
2nd 670.93 703.94
3rd 677.19 692.17
ept is disabled
Before After
1st 648.06 725.54
2nd 644.71 729.56
3rd 650.80 724.67
Kernbech (do not redirect the output)
==========================
ept is enabled:
Before After
1st 1m29.525s 1m26.904s
2nd 1m27.101s 1m26.423s
3rd 1m25.552s 1m26.070s
ept is disabled
Before After
1st 3m15.126s 3m11.754s
2nd 3m16.090s 3m10.382s
3rd 3m14.428s 3m9.056s
By the way, you can find the performance report of x86_64 host in the
v1 version:
https://lkml.org/lkml/2011/6/7/190
View attachment "netperf-log" of type "text/plain" (69237 bytes)
Powered by blists - more mailing lists