All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v6 0/7] perf record: Track sideband events for all CPUs when tracing selected CPUs
@ 2023-08-21  1:27 Yang Jihong
  2023-08-21  1:27 ` [PATCH v6 1/7] perf evlist: Add perf_evlist__go_system_wide() helper Yang Jihong
                   ` (7 more replies)
  0 siblings, 8 replies; 26+ messages in thread
From: Yang Jihong @ 2023-08-21  1:27 UTC (permalink / raw)
  To: peterz, mingo, acme, mark.rutland, alexander.shishkin, jolsa,
	namhyung, irogers, adrian.hunter, kan.liang, james.clark, tmricht,
	ak, anshuman.khandual, linux-kernel, linux-perf-users
  Cc: yangjihong1

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

-- 
2.30.GIT


^ permalink raw reply	[flat|nested] 26+ messages in thread

end of thread, other threads:[~2023-08-25  6:30 UTC | newest]

Thread overview: 26+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-08-21  1:27 [PATCH v6 0/7] perf record: Track sideband events for all CPUs when tracing selected CPUs Yang Jihong
2023-08-21  1:27 ` [PATCH v6 1/7] perf evlist: Add perf_evlist__go_system_wide() helper Yang Jihong
2023-08-25  4:51   ` Ian Rogers
2023-08-25  5:41     ` Yang Jihong
     [not found]       ` <CAP-5=fUtCHXDC5zOML4po8k1rQVPo9ybsTA8_AihepP6w8B5Kw@mail.gmail.com>
2023-08-25  6:15         ` Yang Jihong
2023-08-25  6:28         ` Yang Jihong
2023-08-21  1:27 ` [PATCH v6 2/7] perf evlist: Add evlist__findnew_tracking_event() helper Yang Jihong
2023-08-25  4:55   ` Ian Rogers
2023-08-25  5:58     ` Yang Jihong
2023-08-21  1:27 ` [PATCH v6 3/7] perf record: Move setting dummy tracking before record__init_thread_masks() Yang Jihong
2023-08-25  5:10   ` Ian Rogers
2023-08-25  6:05     ` Yang Jihong
2023-08-21  1:27 ` [PATCH v6 4/7] perf record: Track sideband events for all CPUs when tracing selected CPUs Yang Jihong
2023-08-25  5:17   ` Ian Rogers
2023-08-25  6:07     ` Yang Jihong
2023-08-25  6:13     ` Adrian Hunter
2023-08-21  1:27 ` [PATCH v6 5/7] perf test: Update base-record & system-wide-dummy attr expected values for test-record-C0 Yang Jihong
2023-08-25  5:22   ` Ian Rogers
2023-08-25  6:09     ` Yang Jihong
2023-08-21  1:27 ` [PATCH v6 6/7] perf test: Add test case for record sideband events Yang Jihong
2023-08-25  5:28   ` Ian Rogers
2023-08-25  6:12     ` Yang Jihong
2023-08-21  1:27 ` [PATCH v6 7/7] perf test: Add perf_event_attr test for record selected CPUs exclude_user Yang Jihong
2023-08-25  5:25   ` Ian Rogers
2023-08-23  1:17 ` [PATCH v6 0/7] perf record: Track sideband events for all CPUs when tracing selected CPUs Yang Jihong
2023-08-23 11:35   ` Arnaldo Carvalho de Melo

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.