lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <ZOXvGQslV9amdJ45@kernel.org>
Date:   Wed, 23 Aug 2023 08:35:53 -0300
From:   Arnaldo Carvalho de Melo <acme@...nel.org>
To:     Yang Jihong <yangjihong1@...wei.com>,
        Ian Rogers <irogers@...gle.com>
Cc:     peterz@...radead.org, mingo@...hat.com, mark.rutland@....com,
        alexander.shishkin@...ux.intel.com, jolsa@...nel.org,
        namhyung@...nel.org, irogers@...gle.com, adrian.hunter@...el.com,
        kan.liang@...ux.intel.com, james.clark@....com,
        tmricht@...ux.ibm.com, ak@...ux.intel.com,
        anshuman.khandual@....com, linux-kernel@...r.kernel.org,
        linux-perf-users@...r.kernel.org
Subject: Re: [PATCH v6 0/7] perf record: Track sideband events for all CPUs
 when tracing selected CPUs

Em Wed, Aug 23, 2023 at 09:17:56AM +0800, Yang Jihong escreveu:
> Hi Arnaldo,
> 
> Can you consider applying this patchset ?
> Please let me know if there is anything that needs to be fixed.

I'm just giving Ian some more time since he's been busy lately and tried
to review this patchset,

- Arnaldo
 
> Yang,
> Thanks
> 
> On 2023/8/21 9:27, 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_v5:
> >   - No code changes.
> >   - Detailed commit message of patch3.
> >   - Add Acked-by and Tested-by tags from Adrian Hunter.
> > 
> > Changes since_v4:
> >   - Simplify check code for record__tracking_system_wide().
> >   - Add perf attr test result to commit message for patch 7.
> > 
> > Changes since_v3:
> >   - Check fall_kernel, all_user, and dummy or exclude_user when determining
> >     whether system wide is required.
> > 
> > Changes since_v2:
> >   - Rename record_tracking.sh to record_sideband.sh in tools/perf/tests/shell.
> >   - Remove "perf evlist: Skip dummy event sample_type check for evlist_config" patch.
> >   - Add opts->all_kernel check in record__config_tracking_events().
> >   - Add perf_event_attr test for record selected CPUs exclude_user.
> >   - Update base-record & system-wide-dummy sample_type attr expected values for test-record-C0.
> > 
> > Changes since v1:
> >   - Add perf_evlist__go_system_wide() via internal/evlist.h instead of
> >     exporting perf_evlist__propagate_maps().
> >   - Use evlist__add_aux_dummy() instead of evlist__add_dummy() in
> >     evlist__findnew_tracking_event().
> >   - Add a parameter in evlist__findnew_tracking_event() to deal with
> >     system_wide inside.
> >   - Add sideband for all CPUs when tracing selected CPUs comments on
> >     the perf record man page.
> >   - Use "sideband events" instead of "tracking events".
> >   - Adjust the patches Sequence.
> >   - Add patch5 to skip dummy event sample_type check for evlist_config.
> >   - Add patch6 to update system-wide-dummy attr values for perf test.
> > 
> > Yang Jihong (7):
> >    perf evlist: Add perf_evlist__go_system_wide() helper
> >    perf evlist: Add evlist__findnew_tracking_event() helper
> >    perf record: Move setting dummy tracking before
> >      record__init_thread_masks()
> >    perf record: Track sideband events for all CPUs when tracing selected
> >      CPUs
> >    perf test: Update base-record & system-wide-dummy attr expected values
> >      for test-record-C0
> >    perf test: Add test case for record sideband events
> >    perf test: Add perf_event_attr test for record selected CPUs
> >      exclude_user
> > 
> >   tools/lib/perf/evlist.c                       |   9 ++
> >   tools/lib/perf/include/internal/evlist.h      |   2 +
> >   tools/perf/Documentation/perf-record.txt      |   3 +
> >   tools/perf/builtin-record.c                   | 106 +++++++++++++-----
> >   tools/perf/tests/attr/system-wide-dummy       |  14 ++-
> >   tools/perf/tests/attr/test-record-C0          |   4 +-
> >   .../perf/tests/attr/test-record-C0-all-kernel |  32 ++++++
> >   tools/perf/tests/shell/record_sideband.sh     |  44 ++++++++
> >   tools/perf/util/evlist.c                      |  18 +++
> >   tools/perf/util/evlist.h                      |   1 +
> >   10 files changed, 198 insertions(+), 35 deletions(-)
> >   create mode 100644 tools/perf/tests/attr/test-record-C0-all-kernel
> >   create mode 100755 tools/perf/tests/shell/record_sideband.sh
> > 

-- 

- Arnaldo

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ