mbox series

[v1,0/4] perf cs-etm: Fix synthesizing instruction samples

Message ID 20191024151325.28623-1-leo.yan@linaro.org
Headers show
Series perf cs-etm: Fix synthesizing instruction samples | expand

Message

Leo Yan Oct. 24, 2019, 3:13 p.m. UTC
This patch series is to address the issue for synthesizing instruction
samples, especially when the instruction sample period is small enough,
the current logic cannot synthesize multiple instruction samples within
one instruction range packet.

To fix this issue, patch 0001 avoids to reset the last branches for
every instruction sample; if reset the last branches when every time
generate instruction sample, then the later samples in the same range
packet cannot use the last branches anymore.

Patch 0002 is the main patch to fix the logic for synthesizing
instruction samples; it allows to handle different instruction periods.

Patch 0003 is an optimization for copying last branches; it only copies
last branches once if the instruction samples share the same last
branches.

Patch 0004 is a minor fix for unsigned variable comparison to zero.

To verify my changing for synthesizing instruction samples, I added
some logs in the code, and reviewed the output log manually for
instuctions samples.  The below commands are tested on DB410c board:

  # perf script --itrace=i2
  # perf script --itrace=i2li16
  # perf inject --itrace=i2il16 -i perf.data -o perf.data.new
  # perf inject --itrace=i100il16 -i perf.data -o perf.data.new


Leo Yan (4):
  perf cs-etm: Continuously record last branches
  perf cs-etm: Correct synthesizing instruction samples
  perf cs-etm: Optimize copying last branches
  perf cs-etm: Fix unsigned variable comparison to zero

 tools/perf/util/cs-etm.c | 137 ++++++++++++++++++++++++++++++++-------
 1 file changed, 115 insertions(+), 22 deletions(-)

-- 
2.17.1

Comments

Mathieu Poirier Oct. 31, 2019, 5:14 p.m. UTC | #1
On Thu, 24 Oct 2019 at 09:15, Leo Yan <leo.yan@linaro.org> wrote:
>

> This patch series is to address the issue for synthesizing instruction

> samples, especially when the instruction sample period is small enough,

> the current logic cannot synthesize multiple instruction samples within

> one instruction range packet.

>

> To fix this issue, patch 0001 avoids to reset the last branches for

> every instruction sample; if reset the last branches when every time

> generate instruction sample, then the later samples in the same range

> packet cannot use the last branches anymore.

>

> Patch 0002 is the main patch to fix the logic for synthesizing

> instruction samples; it allows to handle different instruction periods.

>

> Patch 0003 is an optimization for copying last branches; it only copies

> last branches once if the instruction samples share the same last

> branches.

>

> Patch 0004 is a minor fix for unsigned variable comparison to zero.

>

> To verify my changing for synthesizing instruction samples, I added

> some logs in the code, and reviewed the output log manually for

> instuctions samples.  The below commands are tested on DB410c board:

>

>   # perf script --itrace=i2

>   # perf script --itrace=i2li16

>   # perf inject --itrace=i2il16 -i perf.data -o perf.data.new

>   # perf inject --itrace=i100il16 -i perf.data -o perf.data.new

>

>

> Leo Yan (4):

>   perf cs-etm: Continuously record last branches

>   perf cs-etm: Correct synthesizing instruction samples

>   perf cs-etm: Optimize copying last branches

>   perf cs-etm: Fix unsigned variable comparison to zero


I have reviewed and agree with the changes in this set but won't move
forward until Mike has looked at patch 2/4.

Thanks,
Mathieu

>

>  tools/perf/util/cs-etm.c | 137 ++++++++++++++++++++++++++++++++-------

>  1 file changed, 115 insertions(+), 22 deletions(-)

>

> --

> 2.17.1

>
Leo Yan Nov. 1, 2019, 2:10 a.m. UTC | #2
On Thu, Oct 31, 2019 at 11:14:15AM -0600, Mathieu Poirier wrote:
> On Thu, 24 Oct 2019 at 09:15, Leo Yan <leo.yan@linaro.org> wrote:

> >

> > This patch series is to address the issue for synthesizing instruction

> > samples, especially when the instruction sample period is small enough,

> > the current logic cannot synthesize multiple instruction samples within

> > one instruction range packet.

> >

> > To fix this issue, patch 0001 avoids to reset the last branches for

> > every instruction sample; if reset the last branches when every time

> > generate instruction sample, then the later samples in the same range

> > packet cannot use the last branches anymore.

> >

> > Patch 0002 is the main patch to fix the logic for synthesizing

> > instruction samples; it allows to handle different instruction periods.

> >

> > Patch 0003 is an optimization for copying last branches; it only copies

> > last branches once if the instruction samples share the same last

> > branches.

> >

> > Patch 0004 is a minor fix for unsigned variable comparison to zero.

> >

> > To verify my changing for synthesizing instruction samples, I added

> > some logs in the code, and reviewed the output log manually for

> > instuctions samples.  The below commands are tested on DB410c board:

> >

> >   # perf script --itrace=i2

> >   # perf script --itrace=i2li16

> >   # perf inject --itrace=i2il16 -i perf.data -o perf.data.new

> >   # perf inject --itrace=i100il16 -i perf.data -o perf.data.new

> >

> >

> > Leo Yan (4):

> >   perf cs-etm: Continuously record last branches

> >   perf cs-etm: Correct synthesizing instruction samples

> >   perf cs-etm: Optimize copying last branches

> >   perf cs-etm: Fix unsigned variable comparison to zero

> 

> I have reviewed and agree with the changes in this set but won't move

> forward until Mike has looked at patch 2/4.


Thanks a lot for reviewing, Mathieu.

Sorry I forgot to loop Mike in this patch set, and respin patch for v2
and have sent to mailing list.  @Mike, please review patch set v2 as
you received, Thanks!

Thanks,
Leo Yan