Re: [PATCH v7 0/6] perf record: Track sideband events for all CPUs when tracing selected CPUs

From: Yang Jihong
Date: Tue Aug 29 2023 - 05:35:43 EST


Hello,

On 2023/8/29 13:37, Ravi Bangoria wrote:
On 26-Aug-23 8:56 AM, Yang Jihong wrote:
User space tasks can migrate between CPUs, track sideband events for all
CPUs.

I've tested this series with simple test program and it mostly works fine.

Tested-by: Ravi Bangoria <ravi.bangoria@xxxxxxx>

Thanks for the test.

Since we are recording sideband data on all cpus, perf will endup recording
lots of unnecessary data, esp. on large systems. E.g. on a 128 cpu system:

Without patch:
$ sudo ./perf record -C 10 -o perf.data.without -- sleep 10
$ du -d1 -ha ./perf.data.without
3.0M ./perf.data.without

$ sudo ./perf report --stats -i perf.data.without
Aggregated stats:
TOTAL events: 47011
MMAP events: 51 ( 0.1%)
COMM events: 1549 ( 3.3%)
EXIT events: 105 ( 0.2%)
FORK events: 1544 ( 3.3%)
SAMPLE events: 38226 (81.3%)
MMAP2 events: 5485 (11.7%)
...
cycles:P stats:
SAMPLE events: 38226

With patch:
$ sudo ./perf record -C 10 -o perf.data.with -- sleep 10
$ du -d1 -ha ./perf.data.with
15M ./perf.data.with

$ sudo ./perf report --stats -i perf.data.with
Aggregated stats:
TOTAL events: 160164
MMAP events: 51 ( 0.0%)
COMM events: 12879 ( 8.0%)
EXIT events: 11192 ( 7.0%)
FORK events: 12669 ( 7.9%)
SAMPLE events: 38464 (24.0%)
MMAP2 events: 84844 (53.0%)
...
cycles:P stats:
SAMPLE events: 38464

Number of actual samples are same ~38K. However, the perf.data file is 5x
bigger because of additional sideband data.

Yes, if record system wide sideband data, the amount of sideband events will increase proportionally, which is expected.


I'm pretty sure we don't need most of those additional data. So, thinking
loud, should we post-process perf.data file and filter out unnecessary data?


I wonder if we can add a new function in perf inject.
By reading perf.data and comparing tid of SAMPLE events and sideband events, we can filter out the sideband data of unmatched tasks.

That's just my idea, or there's another better solution.

Thanks,
Yang