[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] OVMF very slow on AMD
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 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? 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. Also a newer compiler might potentially make a difference (if you are running on something older). -boris _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx https://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |