[PATCH v4 0/3] perf diff: Add new filter options

From: Jin Yao
Date: Tue Mar 05 2019 - 00:15:04 EST


This patch series creates following new filter options for perf diff.

--time:
It supports time percent with multipe time ranges. Time string is
'a%/n,b%/m,...' or 'a%-b%,c%-%d,...'.

For example:

Select the second 10% time slice to diff:
perf diff --time 10%/2

Select from 0% to 10% time slice to diff:
perf diff --time 0%-10%

Select the first and the second 10% time slices to diff:
perf diff --time 10%/1,10%/2

Select from 0% to 10% and 30% to 40% slices to diff:
perf diff --time 0%-10%,30%-40%

It also supports to analyze samples within given time window as:
<start>,<stop>. Times have the format seconds.microseconds. If start
is not given (i.e., time string is ',x.y') then analysis starts at
the beginning of the file. If stop time is not given (i.e, time
string is 'x.y,') then analysis goes to end of file. Time string is
'a1.b1,c1.d1:a2.b2,c2.d2'. Use ':' to separate timestamps for different
perf.data files.

For example, we get the timestamp information from perf script.

perf script -i perf.data.old
mgen 13940 [000] 3946.361400: ...

perf script -i perf.data
mgen 13940 [000] 3971.150589 ...

perf diff --time 3946.361400,:3971.150589,

It analyzes the perf.data.old from the timestamp 3946.361400 to
the end of perf.data.old and analyzes the perf.data from the
timestamp 3971.150589 to the end of perf.data.

--cpu:
Only diff samples for the list of CPUs provided. Multiple CPUs can
be provided as a comma-separated list with no space: 0,1. Ranges of
CPUs are specified with -: 0-2. Default is to report samples on all
CPUs.

For example:
perf diff --cpu 0,1

It only diff the samples for CPU0 and CPU1.

--pid:
Only diff samples for given process ID (comma separated list).

--tid:
Only diff samples for given thread ID (comma separated list).

For example,
perf diff --tid 13965

It only diff the samples for thread 13965.

v4:
---
Update abstime_str_dup(), let it return error if strdup
is failed, and update __cmd_diff() accordingly.

Only the patch "perf diff: Support --time filter option" is impacted
Others are no logical changes.

Jin Yao (3):
perf diff: Support --time filter option
perf diff: Support --cpu filter option
perf diff: Support --pid/--tid filter options

tools/perf/Documentation/perf-diff.txt | 52 ++++++++++
tools/perf/builtin-diff.c | 168 ++++++++++++++++++++++++++++++---
2 files changed, 206 insertions(+), 14 deletions(-)

--
2.7.4