lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [thread-next>] [day] [month] [year] [list]
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

Powered by Openwall GNU/*/Linux Powered by OpenVZ