[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] OVMF very slow on AMD



On Fri, Jul 15, 2016 at 11:22:45AM -0400, Boris Ostrovsky wrote:
> On 07/15/2016 09:48 AM, Konrad Rzeszutek Wilk wrote:
> > 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 don't know whether it's possible but can you extract this loop somehow
> and run it on baremetal? Or run the whole thing on baremetal.

I think I've managed to run the same function, with the same input, as a
linux process.

And, even within the guest, it takes about 0.3s to run, versus about 60s
when OVMF boot.

Could it be that, for some reason, access to the memory is uncached?
Only on AMD? And later, Linux is doing the right things?

I can try to describe how OVMF is setting up the memory.


> Also a newer compiler might potentially make a difference (if you are
> running on something older).

I have gcc (GCC) 6.1.1 20160707. I think that new enough, or too new
maybe.

-- 
Anthony PERARD

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

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.