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

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



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@xxxxxxxxxxxxx
> https://lists.xen.org/xen-devel

_______________________________________________
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®.