From: prabin ca <prabinca4u@gmail.com>
To: "Bi, Dandan" <dandan.bi@intel.com>
Cc: Andrew Fish <afish@apple.com>,
edk2-devel <edk2-devel@lists.01.org>,
Laszlo Ersek <lersek@redhat.com>
Subject: Re: PerformancePkg on multiple platform -
Date: Sat, 4 Aug 2018 15:59:50 +0530 [thread overview]
Message-ID: <027F20CF-BD18-4613-A3A6-6C0BADB06361@gmail.com> (raw)
In-Reply-To: <3C0D5C461C9E904E8F62152F6274C0BB3BB50CF7@shsmsx102.ccr.corp.intel.com>
Hi Dandan,
This is also valuable input from your side, let me check this also.
Thanks for kind support
> On 04-Aug-2018, at 3:41 PM, Bi, Dandan <dandan.bi@intel.com> wrote:
>
> Hi Prabin,
>
> Here is a simple introduction of current performance infrastructure in latest Edk2 code base.
> Hope it can have some help when you enable it.
> https://github.com/dandanbi/edk2/wiki/Performance-Infrastructure
>
>
> Thanks,
> Dandan
>
> -----Original Message-----
> From: edk2-devel [mailto:edk2-devel-bounces@lists.01.org] On Behalf Of prabin ca
> Sent: Saturday, August 04, 2018 1:20 PM
> To: Andrew Fish <afish@apple.com>
> Cc: edk2-devel <edk2-devel@lists.01.org>; Laszlo Ersek <lersek@redhat.com>
> Subject: Re: [edk2] PerformancePkg on multiple platform -
>
> Hi Andrew,
>
> I have already enabled that PCD in my DSC file, because of that its working in some platform.
>
> What I'm doing is building my DP.efi and DXE driver from that dsc file and testing it from UEFI shell.
>
> thanks for your help as well.
>
>> On Sat, Aug 4, 2018 at 12:08 AM, Andrew Fish <afish@apple.com> wrote:
>>
>> Prabin,
>>
>> There is a PCD setting to configure performance collection.
>>
>> PCDs are defined in the .DEC file and it looks like the default is
>> zero and that means disabled.
>> MdePkg/MdePkg.dec
>> ...
>> ## The mask is used to control PerformanceLib behavior.<BR><BR>
>> # BIT0 - Enable Performance Measurement.<BR>
>> # @Prompt Performance Measurement Property.
>> # @Expression 0x80000002 | (gEfiMdePkgTokenSpaceGuid.
>> PcdPerformanceLibraryPropertyMask & 0xFE) == 0
>> gEfiMdePkgTokenSpaceGuid.PcdPerformanceLibraryPropertyM
>> ask|0|UINT8|0x00000009
>>
>> If you search the code you will see some platforms enabling
>> performance measurement in their DSC files.
>>
>> /Volumes/Case/UDK2018(vUDK2018)>git grep gEfiMdePkgTokenSpaceGuid.
>> PcdPerformanceLibraryPropertyMask -- *.dsc
>> BeagleBoardPkg/BeagleBoardPkg.dsc:272:
>> *gEfiMdePkgTokenSpaceGuid.PcdPerformanceLibraryPropertyMask*|1
>> EmbeddedPkg/EmbeddedPkg.dsc:175:
>> *gEfiMdePkgTokenSpaceGuid.PcdPerformanceLibraryPropertyMask*|0
>> QuarkPlatformPkg/Quark.dsc:373:
>> *gEfiMdePkgTokenSpaceGuid.PcdPerformanceLibraryPropertyMask*|0x1
>> QuarkPlatformPkg/Quark.dsc:376:
>> *gEfiMdePkgTokenSpaceGuid.PcdPerformanceLibraryPropertyMask*|0x00
>> QuarkPlatformPkg/QuarkMin.dsc:334:
>> *gEfiMdePkgTokenSpaceGuid.PcdPerformanceLibraryPropertyMask*|0x1
>> QuarkPlatformPkg/QuarkMin.dsc:337:
>> *gEfiMdePkgTokenSpaceGuid.PcdPerformanceLibraryPropertyMask*|0x00
>> Vlv2TbltDevicePkg/PlatformPkgGccX64.dsc:682:
>> *gEfiMdePkgTokenSpaceGuid.PcdPerformanceLibraryPropertyMask*|0x1
>> Vlv2TbltDevicePkg/PlatformPkgIA32.dsc:682:
>> *gEfiMdePkgTokenSpaceGuid.PcdPerformanceLibraryPropertyMask*|0x1
>> Vlv2TbltDevicePkg/PlatformPkgX64.dsc:682:
>> *gEfiMdePkgTokenSpaceGuid.PcdPerformanceLibraryPropertyMask*|0x1
>>
>> So I'd check that 1st. If that does not work I recommend adding
>> -report-file=build.log to your build command. You can look at the
>> given driver/app you care about and see what the PCD settings are and
>> which instance of the PerformanceLib got linked.
>>
>> Thanks,
>>
>> Andrew Fish
>>
>> On Aug 3, 2018, at 11:17 AM, Laszlo Ersek <lersek@redhat.com> wrote:
>>
>> Hi Prabin,
>>
>> On 08/03/18 09:29, prabin ca wrote:
>>
>> Hi Team,
>>
>> I’m new to uefi and edk. Currently I’m trying to get performance of my
>> dxe driver using PerformancePkg of EDK source code.
>>
>> I’m using perf_start and perf_end T respected check points, it’s hot
>> build and tested well in 2/3 platform. It’s giving proper response.
>>
>> But when I’m Checking with multiple platform, in some of platforms
>> it’s not working and got hang in uefi she’ll itself.
>>
>> Please help me to resolve asap, it will be really helpful.
>>
>>
>> I can only give you some hints, because thus far I have also failed to
>> figure out how performance measurements should be enabled for a
>> platform from scratch.
>>
>> Earlier I thought that an interested platform should include modules
>> from PerformancePkg. I got some good results that way; however:
>>
>> - it wouldn't work for AARCH64, and so I filed
>> <https://bugzilla.tianocore.org/show_bug.cgi?id=679>
>>
>> - ultimately PerformancePkg was removed in commit 922c1e94e4bb
>> completely. (And for that reason I now closed TianoCore#679 as
>> WONTFIX.)
>>
>> Commit 922c1e94e4bb doesn't really give pointers for enabling
>> performance measurements in a platform -- it refers the user to the DP
>> shell command instead of the standalone DP application, but that's
>> only for displaying the stats, not for recording them.
>>
>> One document where I found information is the Intel whitepaper
>>
>> A Tour Beyond BIOS
>> Implementing Profiling in with EDK II
>>
>> (just google it). "Part III – Performance Profile" is relevant.
>>
>> The first section of that talks about enabling ACPI FPDT (ACPI
>> Firmware Performance Data Table) support in edk2, for exposing
>> firmware performance data to the OS. Again, that's not about *recording* the stats.
>>
>> The second section of the same chapter seems to describe how stats can
>> be recorded however. AIUI, the DXE Core can provide the
>> PERFORMANCE[_EX] protocols, if the DxeCorePerformanceLib instance is
>> linked into it by the platform DSC file. In turn DXE modules can send
>> measurements to the protocol via the PerformanceLib APIs / DxePerformanceLib instance.
>>
>> In fact, the relevant library INF files have good documentation, we
>> just have to know what to look at.
>>
>> Recording stats in the PEI phase, via HOBs:
>> - MdeModulePkg/Library/PeiPerformanceLib/PeiPerformanceLib.inf
>>
>> Recording stats in the DXE phase (protocol provider and consumer):
>> - MdeModulePkg/Library/DxeCorePerformanceLib/DxeCorePerformanceLib.inf
>> - MdeModulePkg/Library/DxePerformanceLib/DxePerformanceLib.inf
>>
>> Recording stats in SMM (protocol provider and consumer):
>> - MdeModulePkg/Library/SmmCorePerformanceLib/SmmCorePerformanceLib.inf
>> - MdeModulePkg/Library/SmmPerformanceLib/SmmPerformanceLib.inf
>>
>> Fetching the collected stats (for display or otherwise):
>> - MdeModulePkg/Library/DxeSmmPerformanceLib/DxeSmmPerformanceLib.inf
>>
>> "Do nothing" library instance for all module types:
>> - MdePkg/Library/BasePerformanceLibNull/BasePerformanceLibNull.inf
>>
>>
>> Now obviously this doesn't explain why it works for you on some
>> platforms and why it doesn't on others. You haven't shared much
>> information about the platforms in question. I can make one guess: if
>> the performance protocol provided by the platform's DXE Core
>> (DxeCorePerformanceLib) is incompatible with the DxePerformanceLib
>> instance that is linked into your DXE driver, then communication
>> between them will likely fail.
>>
>> To my understanding, the performance protocol is not standard (PI or
>> UEFI), so it's likely best if you build your DXE driver together with
>> the DXE Core, on all platforms that you want to check. It's probably
>> unsafe to link a DXE driver against DxePerformanceLib (rather than
>> BasePerformanceLibNull) and run it on a random platform.
>>
>> Hopefully this helps a little.
>> Laszlo
>> _______________________________________________
>> edk2-devel mailing list
>> edk2-devel@lists.01.org
>> https://lists.01.org/mailman/listinfo/edk2-devel
>>
>>
>>
> _______________________________________________
> edk2-devel mailing list
> edk2-devel@lists.01.org
> https://lists.01.org/mailman/listinfo/edk2-devel
next prev parent reply other threads:[~2018-08-04 10:29 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-08-03 7:29 PerformancePkg on multiple platform prabin ca
2018-08-03 18:17 ` Laszlo Ersek
2018-08-03 18:38 ` PerformancePkg on multiple platform - Andrew Fish
2018-08-04 5:19 ` prabin ca
2018-08-04 10:11 ` Bi, Dandan
2018-08-04 10:29 ` prabin ca [this message]
2018-08-06 14:51 ` prabin ca
2018-08-04 5:17 ` PerformancePkg on multiple platform prabin ca
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-list 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=027F20CF-BD18-4613-A3A6-6C0BADB06361@gmail.com \
--to=devel@edk2.groups.io \
/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