Messages in this thread | | | From | Namhyung Kim <> | Date | Fri, 15 Sep 2023 17:14:09 -0700 | Subject | Re: [PATCH v8 0/6] perf record: Track sideband events for all CPUs when tracing selected CPUs |
| |
Hello,
On Tue, Sep 12, 2023 at 1:32 PM Arnaldo Carvalho de Melo <acme@kernel.org> wrote: > > Em Tue, Sep 12, 2023 at 02:41:56PM +0530, Ravi Bangoria escreveu: > > On 04-Sep-23 8:03 AM, Yang Jihong wrote: > > > User space tasks can migrate between CPUs, track sideband events for all > > > CPUs. > > > > > > The specific scenarios are as follows: > > > > > > CPU0 CPU1 > > > perf record -C 0 start > > > taskA starts to be created and executed > > > -> PERF_RECORD_COMM and PERF_RECORD_MMAP > > > events only deliver to CPU1 > > > ...... > > > | > > > migrate to CPU0 > > > | > > > Running on CPU0 <----------/ > > > ... > > > > > > perf record -C 0 stop > > > > > > Now perf samples the PC of taskA. However, perf does not record the > > > PERF_RECORD_COMM and PERF_RECORD_COMM events of taskA. > > > Therefore, the comm and symbols of taskA cannot be parsed. > > > > > > The sys_perf_event_open invoked is as follows: > > > > > > # perf --debug verbose=3 record -e cpu-clock -C 1 true > > > <SNIP> > > > Opening: cpu-clock > > > ------------------------------------------------------------ > > > perf_event_attr: > > > type 1 (PERF_TYPE_SOFTWARE) > > > size 136 > > > config 0 (PERF_COUNT_SW_CPU_CLOCK) > > > { sample_period, sample_freq } 4000 > > > sample_type IP|TID|TIME|CPU|PERIOD|IDENTIFIER > > > read_format ID|LOST > > > disabled 1 > > > inherit 1 > > > freq 1 > > > sample_id_all 1 > > > exclude_guest 1 > > > ------------------------------------------------------------ > > > sys_perf_event_open: pid -1 cpu 1 group_fd -1 flags 0x8 = 5 > > > Opening: dummy:u > > > ------------------------------------------------------------ > > > perf_event_attr: > > > type 1 (PERF_TYPE_SOFTWARE) > > > size 136 > > > config 0x9 (PERF_COUNT_SW_DUMMY) > > > { sample_period, sample_freq } 1 > > > sample_type IP|TID|TIME|CPU|IDENTIFIER > > > read_format ID|LOST > > > inherit 1 > > > exclude_kernel 1 > > > exclude_hv 1 > > > mmap 1 > > > comm 1 > > > task 1 > > > sample_id_all 1 > > > exclude_guest 1 > > > mmap2 1 > > > comm_exec 1 > > > ksymbol 1 > > > bpf_event 1 > > > ------------------------------------------------------------ > > > sys_perf_event_open: pid -1 cpu 0 group_fd -1 flags 0x8 = 6 > > > sys_perf_event_open: pid -1 cpu 1 group_fd -1 flags 0x8 = 7 > > > sys_perf_event_open: pid -1 cpu 2 group_fd -1 flags 0x8 = 9 > > > sys_perf_event_open: pid -1 cpu 3 group_fd -1 flags 0x8 = 10 > > > sys_perf_event_open: pid -1 cpu 4 group_fd -1 flags 0x8 = 11 > > > sys_perf_event_open: pid -1 cpu 5 group_fd -1 flags 0x8 = 12 > > > sys_perf_event_open: pid -1 cpu 6 group_fd -1 flags 0x8 = 13 > > > sys_perf_event_open: pid -1 cpu 7 group_fd -1 flags 0x8 = 14 > > > <SNIP> > > > > > > Changes since_v7: > > > - The condition for requiring system_wide sideband is changed to > > > "as long as a non-dummy event exists" (patch4). > > > - Modify the corresponding test case to record only dummy event (patch6). > > > - Thanks to tested-by tag from Ravi, but because the solution is modified, > > > the tested-by tag of Ravi is not added to this version. > > > > I've re-tested v8 with my simple test. > > > > Tested-by: Ravi Bangoria <ravi.bangoria@amd.com> > > > Thanks, applied to the csets that were still sitting in an umpublished > perf-tools-next local branch, soon public.
Now I'm seeing a perf test failure on perf-tools-next.
$ sudo ./perf test -v 17 17: Setup struct perf_event_attr : --- start --- test child forked, pid 1616372 Using CPUID GenuineIntel-6-8C-1 running './tests/attr/test-record-branch-filter-k' running './tests/attr/test-record-period' running './tests/attr/test-record-graph-default' test limitation '!aarch64' excluded architecture list ['aarch64'] running './tests/attr/test-record-branch-filter-any' running './tests/attr/test-record-data' running './tests/attr/test-stat-detailed-1' running './tests/attr/test-record-branch-filter-hv' running './tests/attr/test-record-graph-fp' test limitation '!aarch64' excluded architecture list ['aarch64'] running './tests/attr/test-record-basic' running './tests/attr/test-record-group2' running './tests/attr/test-stat-detailed-3' running './tests/attr/test-record-branch-any' running './tests/attr/test-record-branch-filter-ind_call' running './tests/attr/test-stat-detailed-2' running './tests/attr/test-record-group1' running './tests/attr/test-record-count' running './tests/attr/test-record-no-samples' running './tests/attr/test-record-graph-dwarf' running './tests/attr/test-record-spe-period' test limitation 'aarch64' skipped [x86_64] './tests/attr/test-record-spe-period' running './tests/attr/test-record-graph-fp-aarch64' test limitation 'aarch64' skipped [x86_64] './tests/attr/test-record-graph-fp-aarch64' running './tests/attr/test-record-freq' running './tests/attr/test-record-pfm-period' running './tests/attr/test-record-no-buffering' running './tests/attr/test-record-no-inherit' running './tests/attr/test-record-branch-filter-any_ret' running './tests/attr/test-record-raw' running './tests/attr/test-record-dummy-C0' expected read_format=4, got 20 FAILED './tests/attr/test-record-dummy-C0' - match failure test child finished with -1 ---- end ---- Setup struct perf_event_attr: FAILED!
| |