xen-devel.lists.xenproject.org archive mirror
 help / color / mirror / Atom feed
From: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
To: Anthony PERARD <anthony.perard@citrix.com>
Cc: xen-devel@lists.xen.org
Subject: Re: OVMF very slow on AMD
Date: Fri, 15 Jul 2016 09:48:31 -0400	[thread overview]
Message-ID: <20160715134831.GB16867@char.us.oracle.com> (raw)
In-Reply-To: <20160714155307.GK1729@perard.uk.xensource.com>

On Thu, Jul 14, 2016 at 04:53:07PM +0100, Anthony PERARD wrote:
> Hi,
> 
> I've been investigating why OVMF is very slow  in a Xen guest on an AMD
> host. This, I think, is the current failure that osstest is having.
> 
> I've only look at a specific part of OVMF where the slowdown is very
> obvious on AMD vs Intel, the decompression.
> 
> This is what I get on AMD, via the Xen serial console port:
>   Invoking OVMF ...
>   SecCoreStartupWithStack(0xFFFCC000, 0x818000)
> then, nothing for almost 1 minute, then the rest of the boot process.
> The same binary on Intel, the output does not stay "stuck" here.
> 
> I could pin-point which part of the boot process takes a long time, but
> there is not anything obvious in there, just a loop that decompress the
> ovmf binary, with plenty of iteration.
> I tried `xentrace', but the trace does not show anything wrong, there is
> just an interrupt from time to time. I've tried to had some tracepoint
> inside this decompresion function in OVMF, but that did not reveal
> anything either, maybe there where not at the right place.
> 
> Anyway, the function is: LzmaDec_DecodeReal() from the file
> IntelFrameworkModulePkg/Library/LzmaCustomDecompressLib/Sdk/C/LzmaDec.c
> you can get the assembly from this object:
> Build/OvmfX64/DEBUG_GCC49/X64/IntelFrameworkModulePkg/Library/LzmaCustomDecompressLib/LzmaCustomDecompressLib/OUTPUT/Sdk/C/LzmaDec.obj
> This is with OVMF upstream (https://github.com/tianocore/edk2).
> I can send the assembly if needed.

Pls. The full file if possible. Perhaps there is also an .S file somewhere there?

> 
> So, this loop takes about 1 minute on my AMD machine (AMD Opteron(tm)
> Processor 4284), and less that 1 second on an Intel machine.
> If I compile OVMF as a 32bit binary, the loop is faster, but still takes
> about 30s on AMD. (that's true for both OvmfIa32 and OvmfIa32X64 which
> is 32bit bootstrap, but can start 64bit OS.)
> Another thing, I tried the same binary (64bit) with KVM, and OVMF seems
> fast.
> 
> 
> So, any idee of what I could investigate?

I presume we emulating some operation on AMD but not on Intel.

However you say xentrace shows nothing - which would imply we are not
incurring VMEXITs to deal with this. Hmm.. Could it be what we
expose to the guest (the CPUID flags?) Somehow we are missing one on AMD
and it takes a slower route?


> 
> Thanks,
> 
> -- 
> Anthony PERARD
> 
> _______________________________________________
> Xen-devel mailing list
> Xen-devel@lists.xen.org
> https://lists.xen.org/xen-devel

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
https://lists.xen.org/xen-devel

  reply	other threads:[~2016-07-15 13:48 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-07-14 15:53 OVMF very slow on AMD Anthony PERARD
2016-07-15 13:48 ` Konrad Rzeszutek Wilk [this message]
2016-07-15 15:22   ` Boris Ostrovsky
2016-07-27 11:08     ` Anthony PERARD
2016-07-27 11:35       ` Anthony PERARD
2016-07-27 19:45         ` Boris Ostrovsky
2016-07-28 10:18           ` Anthony PERARD
2016-07-28 10:43             ` George Dunlap
2016-07-28 10:54               ` Andrew Cooper
2016-07-28 11:28                 ` Anthony PERARD
2016-07-28 15:17                 ` Boris Ostrovsky
2016-07-28 15:51                   ` Andrew Cooper
2016-07-28 19:25                     ` Boris Ostrovsky
2016-07-28 19:44                       ` Andrew Cooper
2016-07-28 19:54                         ` Boris Ostrovsky
2016-07-29 15:54                           ` Anthony PERARD
2016-07-18 14:10   ` Anthony PERARD
2016-07-18 15:09   ` Anthony PERARD
2016-07-22 10:40     ` Dario Faggioli

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=20160715134831.GB16867@char.us.oracle.com \
    --to=konrad.wilk@oracle.com \
    --cc=anthony.perard@citrix.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).