On 26-Aug-23 8:56 AM, Yang Jihong wrote:Thanks for the test.
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>
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.
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?