Hi Star,

Yes. The patch for PerformancePkg\Dp_App was submitted.

Thanks,
Cinnamon Shia

-----Original Message-----
From: Zeng, Star [mailto:[email protected]] 
Sent: Friday, November 6, 2015 5:49 PM
To: Shia, Cinnamon; [email protected]
Subject: Re: [edk2] [PATCH 2/2] ShellPkg/UefiDpLib: Support dumping cumulative 
data

On 2015/11/3 21:09, Shia, Cinnamon wrote:
> Stat,
>
> Thanks for your feedback and review.
> Will submit the v2 patch for addressing your comments.
> And submit another patch for PerformancePkg\Dp_App

Shia,

Since the changes in UefiDpLib has been committed.
Will you submit patch for PerformancePkg\Dp_App?


Thanks,
Star

>
> Thanks,
> Cinnamon Shia
>
> -----Original Message-----
> From: Zeng, Star [mailto:[email protected]]
> Sent: Tuesday, November 3, 2015 11:16 AM
> To: Shia, Cinnamon; [email protected]
> Subject: Re: [edk2] [PATCH 2/2] ShellPkg/UefiDpLib: Support dumping 
> cumulative data
>
> On 2015/11/2 17:11, Cinnamon Shia wrote:
>> Add a new option -c to dump cumulative data.
>> For example:
>> shell> dp -c
>> ==[ Cumulative ]========
>> (Times in microsec.)     Cumulative   Average     Shortest    Longest
>>      Name          Count    Duration    Duration    Duration    Duration
>> LoadImage:         200     1000000        7000           0      100000
>> StartImage:        200    20000000       90000           0     7000000
>>     DB:Start:        200    20000000      100000           0     9000000
>> DB:Support:     200000      100000           0           0        7000
>>
>> shell> dp -c DXE
>> ==[ Cumulative ]========
>> (Times in microsec.)     Cumulative   Average     Shortest    Longest
>>      Name          Count    Duration    Duration    Duration    Duration
>> LoadImage:         200     1000000        7000           0      100000
>> StartImage:        200    20000000       90000           0     7000000
>>     DB:Start:        200    20000000      100000           0     9000000
>> DB:Support:     200000      100000           0           0        7000
>>           DXE          1    30000000    30000000           0    30000000
>>
>> Signed-off-by: Cinnamon Shia <[email protected]>
>> ---
>>    ShellPkg/Library/UefiDpLib/Dp.c          |  33 +++++++++++++++++--
>>    ShellPkg/Library/UefiDpLib/DpInternal.h  |   9 +++--
>>    ShellPkg/Library/UefiDpLib/DpTrace.c     |  55 
>> ++++++++++++++++++++++++++++---
>>    ShellPkg/Library/UefiDpLib/UefiDpLib.uni | Bin 17466 -> 18146 bytes
>>    4 files changed, 87 insertions(+), 10 deletions(-)
>
> Could the "HP_ISS" be removed from the patch?
> Could you help sync the change to PerformancePkg\Dp_App?
>
> Thanks,
> Star
>
>>
>> diff --git a/ShellPkg/Library/UefiDpLib/Dp.c 
>> b/ShellPkg/Library/UefiDpLib/Dp.c index 62a4e7b..4d109d0 100644
>> --- a/ShellPkg/Library/UefiDpLib/Dp.c
>> +++ b/ShellPkg/Library/UefiDpLib/Dp.c
>> @@ -79,6 +79,7 @@ STATIC CONST SHELL_PARAM_ITEM ParamList[] = {
>>    #endif // PROFILING_IMPLEMENTED
>>      {L"-x", TypeFlag},   // -x   eXclude Cumulative Items
>>      {L"-i", TypeFlag},   // -i   Display Identifier
>> +  {L"-c", TypeValue},  // -c   Display cumulative data.
>>      {L"-n", TypeValue},  // -n # Number of records to display for A and R
>>      {L"-t", TypeValue},  // -t # Threshold of interest
>>      {NULL, TypeMax}
>> @@ -164,6 +165,9 @@ ShellCommandRunDp (
>>      BOOLEAN                   TraceMode;
>>      BOOLEAN                   ProfileMode;
>>      BOOLEAN                   ExcludeMode;
>> +  BOOLEAN                   CumulativeMode;
>> +  CONST CHAR16              *CustomCumulativeToken;
>> +  PERF_CUM_DATA             *CustomCumulativeData;
>>
>>      StringPtr   = NULL;
>>      SummaryMode = FALSE;
>> @@ -173,6 +177,8 @@ ShellCommandRunDp (
>>      TraceMode   = FALSE;
>>      ProfileMode = FALSE;
>>      ExcludeMode = FALSE;
>> +  CumulativeMode = FALSE;
>> +  CustomCumulativeData = NULL;
>>
>>      // Get DP's entry time as soon as possible.
>>      // This is used as the Shell-Phase end time.
>> @@ -210,6 +216,7 @@ ShellCommandRunDp (
>>    #endif  // PROFILING_IMPLEMENTED
>>      ExcludeMode = ShellCommandLineGetFlag (ParamPackage, L"-x");
>>      mShowId     = ShellCommandLineGetFlag (ParamPackage, L"-i");
>> +  CumulativeMode = ShellCommandLineGetFlag (ParamPackage, L"-c");
>>
>>      // Options with Values
>>      CmdLineArg  = ShellCommandLineGetValue (ParamPackage, L"-n"); @@
>> -244,6 +251,20 @@ ShellCommandRunDp (
>>      InitCumulativeData ();
>>
>>      //
>> +  // Init the custom cumulative data.
>> +  //
>> +  CustomCumulativeToken = ShellCommandLineGetValue (ParamPackage, 
>> + L"-c");  if (CustomCumulativeToken != NULL) {
>> +    CustomCumulativeData = AllocateZeroPool (sizeof (PERF_CUM_DATA));
>> +    CustomCumulativeData->MinDur = 0;
>> +    CustomCumulativeData->MaxDur = 0;
>> +    CustomCumulativeData->Count  = 0;
>> +    CustomCumulativeData->Duration = 0;
>> +    CustomCumulativeData->Name   = AllocateZeroPool (StrLen 
>> (CustomCumulativeToken) + 1);
>> +    UnicodeStrToAsciiStr (CustomCumulativeToken,
>> + CustomCumulativeData->Name);  }
>> +
>> +  //
>>      // Timer specific processing
>>      //
>>      // Get the Performance counter characteristics:
>> @@ -302,8 +323,10 @@ ShellCommandRunDp (
>>    ****    !T &&  P  := (2) Only Profile records are displayed
>>    ****     T &&  P  := (3) Same as Default, both are displayed
>>
>> *********************************************************************
>> *
>> ******/
>> -  GatherStatistics();
>> -  if (AllMode) {
>> +  GatherStatistics (CustomCumulativeData);  if (CumulativeMode) {
>> +    ProcessCumulative (CustomCumulativeData);  } else if (AllMode) {
>>        if (TraceMode) {
>>          DumpAllTrace( Number2Display, ExcludeMode);
>>        }
>> @@ -326,7 +349,7 @@ ShellCommandRunDp (
>>            if ( ! EFI_ERROR( Status)) {
>>              ProcessPeims ();
>>              ProcessGlobal ();
>> -          ProcessCumulative ();
>> +          ProcessCumulative (NULL);
>>            }
>>          }
>>        }
>> @@ -339,6 +362,10 @@ ShellCommandRunDp (
>>      }
>>
>>      SHELL_FREE_NON_NULL (StringPtr);
>> +  if (CustomCumulativeData != NULL) {
>> +    SHELL_FREE_NON_NULL (CustomCumulativeData->Name);  } 
>> + SHELL_FREE_NON_NULL (CustomCumulativeData);
>>
>>      return SHELL_SUCCESS;
>>    }
>> diff --git a/ShellPkg/Library/UefiDpLib/DpInternal.h
>> b/ShellPkg/Library/UefiDpLib/DpInternal.h
>> index 9b8163a..9d94943 100644
>> --- a/ShellPkg/Library/UefiDpLib/DpInternal.h
>> +++ b/ShellPkg/Library/UefiDpLib/DpInternal.h
>> @@ -172,10 +172,13 @@ GetCumulativeItem(
>>
>>      @post The SummaryData and CumData structures contain statistics for the
>>            current performance logs.
>> +
>> +  @param[in]    CustomCumulativeData  The pointer to the custom cumulative 
>> data.  //*HP_ISS
>> +
>>    **/
>>    VOID
>>    GatherStatistics(
>> -  VOID
>> +  IN PERF_CUM_DATA                  *CustomCumulativeData OPTIONAL
>>      );
>>
>>    /**
>> @@ -283,11 +286,13 @@ ProcessGlobal(
>>      For each record with a Token listed in the CumData array:<BR>
>>         - Update the instance count and the total, minimum, and maximum 
>> durations.
>>      Finally, print the gathered cumulative statistics.
>> +
>> +  @param[in]    CustomCumulativeData  The pointer to the custom cumulative 
>> data.  //*HP_ISS
>>
>>    **/
>>    VOID
>>    ProcessCumulative(
>> -  VOID
>> +  IN PERF_CUM_DATA                  *CustomCumulativeData OPTIONAL
>>      );
>>
>>    /**
>> diff --git a/ShellPkg/Library/UefiDpLib/DpTrace.c
>> b/ShellPkg/Library/UefiDpLib/DpTrace.c
>> index cf8200c..f61f590 100644
>> --- a/ShellPkg/Library/UefiDpLib/DpTrace.c
>> +++ b/ShellPkg/Library/UefiDpLib/DpTrace.c
>> @@ -43,11 +43,14 @@
>>
>>      @post The SummaryData and CumData structures contain statistics for the
>>            current performance logs.
>> +
>> +  @param[in]    CustomCumulativeData  A pointer to the cumtom cumulative 
>> data.  //*HP_ISS
>> +
>>    **/
>>    VOID
>>    GatherStatistics(
>> -  VOID
>> -)
>> +  IN OUT PERF_CUM_DATA              *CustomCumulativeData OPTIONAL
>> +  )
>>    {
>>      MEASUREMENT_RECORD        Measurement;
>>      UINT64                    Duration;
>> @@ -99,6 +102,20 @@ GatherStatistics(
>>            CumData[TIndex].MaxDur = Duration;
>>          }
>>        }
>> +
>> +    //
>> +    // Collect the data for custom cumulative data.
>> +    //
>> +    if ((CustomCumulativeData != NULL) && (AsciiStrCmp (Measurement.Token, 
>> CustomCumulativeData->Name) == 0)) {
>> +      CustomCumulativeData->Duration += Duration;
>> +      CustomCumulativeData->Count++;
>> +      if (Duration < CustomCumulativeData->MinDur) {
>> +        CustomCumulativeData->MinDur = Duration;
>> +      }
>> +      if (Duration > CustomCumulativeData->MaxDur) {
>> +        CustomCumulativeData->MaxDur = Duration;
>> +      }
>> +    }
>>      }
>>    }
>>
>> @@ -782,12 +799,14 @@ ProcessGlobal(
>>      For each record with a Token listed in the CumData array:<BR>
>>         - Update the instance count and the total, minimum, and maximum 
>> durations.
>>      Finally, print the gathered cumulative statistics.
>> -
>> +
>> +  @param[in]    CustomCumulativeData  A pointer to the cumtom cumulative 
>> data.
>> +
>>    **/
>>    VOID
>>    ProcessCumulative(
>> -  VOID
>> -)
>> +  IN PERF_CUM_DATA                  *CustomCumulativeData OPTIONAL
>> +  )
>>    {
>>      UINT64                    AvgDur;         // the computed average 
>> duration
>>      UINT64                    Dur;
>> @@ -826,4 +845,30 @@ ProcessCumulative(
>>                     );
>>        }
>>      }
>> +
>> +  //
>> +  // Print the custom cumulative data.
>> +  //
>> +  if (CustomCumulativeData != NULL) {
>> +    if (CustomCumulativeData->Count != 0) {
>> +      AvgDur = DivU64x32 (CustomCumulativeData->Duration, 
>> CustomCumulativeData->Count);
>> +      AvgDur = DurationInMicroSeconds (AvgDur);
>> +      Dur    = DurationInMicroSeconds (CustomCumulativeData->Duration);
>> +      MaxDur = DurationInMicroSeconds (CustomCumulativeData->MaxDur);
>> +      MinDur = DurationInMicroSeconds (CustomCumulativeData->MinDur);
>> +    } else {
>> +      AvgDur = 0;
>> +      Dur    = 0;
>> +      MaxDur = 0;
>> +      MinDur = 0;
>> +    }
>> +    ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_DP_CUMULATIVE_STATS), 
>> gDpHiiHandle,
>> +                CustomCumulativeData->Name,
>> +                CustomCumulativeData->Count,
>> +                Dur,
>> +                AvgDur,
>> +                MinDur,
>> +                MaxDur
>> +                );
>> +  }
>>    }
>> diff --git a/ShellPkg/Library/UefiDpLib/UefiDpLib.uni
>> b/ShellPkg/Library/UefiDpLib/UefiDpLib.uni
>> index
>> 1e5c26ac944e3f626c97c79ac9bb1c4196c70ed3..5bcb4964523aa7839694bc430f5
>> 7
>> ad27e8f63047 100644 GIT binary patch delta 437
>> zcmZvY%}&BV6ot>kz=Fh81IBbSc8>}EM5qg+kpz)o6WIZaNgW8GMN$D@!HtWiPv9G9
>> zy5nu+NjTFG(MTq}(|hlC&$*f9n^?Vz&!&i_b8!xd1~gs~FwS@+JSg}WGe&q~UdM!W
>> z&1}kVgcs;IwD(%@;twlrilA!w#JYr@Ii`vC(NDi>!(7(r-~snkX%i|#CP!7P8xbp0
>> zU1LDS32)=1_-Ae(bGjJ0aFd0s1nkd9FGx#rCR6Bfryl1V*7i|=lc>CX?XkMc!6^UN
>> z+AeN(Fq3ZbeOXKf`O;wp$5d`{7e&uIPAd$56ZT0)JZ9TOj60Zv(~P;r4P0!=9~b-V
>> RPk+vrp3>2%xv99S<<^p%SkM3f
>>
>> delta 24
>> gcmaFV%ebq9af27*<|~Xj7Mmlil2|t%a8zOi0D&(FVgLXD
>>

_______________________________________________
edk2-devel mailing list
[email protected]
https://lists.01.org/mailman/listinfo/edk2-devel

Reply via email to