[0/4] perf tools: Add printing perf_event_attr `config` and `id` symbol in perf_event_attr__fprintf()

Message ID 20230419122912.73746-1-yangjihong1@huawei.com
Headers
Series perf tools: Add printing perf_event_attr `config` and `id` symbol in perf_event_attr__fprintf() |

Message

Yang Jihong April 19, 2023, 12:29 p.m. UTC
  Add printing perf_event_attr `config` and `id` symbol to improve the readability of debugging information.

Before:

  # perf --debug verbose=2 record -e cycles,cpu-clock,sched:sched_switch,branch-load-misses,r101 -C 0 true
  <SNIP>
  ------------------------------------------------------------
  perf_event_attr:
    size                             136
    { sample_period, sample_freq }   4000
    sample_type                      IP|TID|TIME|CPU|PERIOD|IDENTIFIER
    read_format                      ID
    disabled                         1
    inherit                          1
    freq                             1
    sample_id_all                    1
    exclude_guest                    1
  ------------------------------------------------------------
  sys_perf_event_open: pid -1  cpu 0  group_fd -1  flags 0x8 = 6
  ------------------------------------------------------------
  perf_event_attr:
    type                             1
    size                             136
    { sample_period, sample_freq }   4000
    sample_type                      IP|TID|TIME|CPU|PERIOD|IDENTIFIER
    read_format                      ID
    disabled                         1
    inherit                          1
    freq                             1
    sample_id_all                    1
    exclude_guest                    1
  ------------------------------------------------------------
  sys_perf_event_open: pid -1  cpu 0  group_fd -1  flags 0x8 = 7
  ------------------------------------------------------------
  perf_event_attr:
    type                             2
    size                             136
    config                           0x131
    { sample_period, sample_freq }   1
    sample_type                      IP|TID|TIME|CPU|PERIOD|RAW|IDENTIFIER
    read_format                      ID
    disabled                         1
    inherit                          1
    sample_id_all                    1
    exclude_guest                    1
  ------------------------------------------------------------
  sys_perf_event_open: pid -1  cpu 0  group_fd -1  flags 0x8 = 8
  ------------------------------------------------------------
  perf_event_attr:
    type                             3
    size                             136
    config                           0x10005
    { sample_period, sample_freq }   4000
    sample_type                      IP|TID|TIME|CPU|PERIOD|IDENTIFIER
    read_format                      ID
    disabled                         1
    inherit                          1
    freq                             1
    sample_id_all                    1
    exclude_guest                    1
  ------------------------------------------------------------
  sys_perf_event_open: pid -1  cpu 0  group_fd -1  flags 0x8 = 10
  ------------------------------------------------------------
  perf_event_attr:
    type                             4
    size                             136
    config                           0x101
    { sample_period, sample_freq }   4000
    sample_type                      IP|TID|TIME|CPU|PERIOD|IDENTIFIER
    read_format                      ID
    disabled                         1
    inherit                          1
    freq                             1
    sample_id_all                    1
    exclude_guest                    1
  ------------------------------------------------------------
  sys_perf_event_open: pid -1  cpu 0  group_fd -1  flags 0x8 = 11
  <SNIP>

After:

  # perf --debug verbose=2 record -e cycles,cpu-clock,sched:sched_switch,branch-load-misses,r101 -C 0 true
  <SNIP>
  ------------------------------------------------------------
  perf_event_attr:
    type                             0 (PERF_TYPE_HARDWARE)
    size                             136
    config                           0 (PERF_COUNT_HW_CPU_CYCLES)
    { sample_period, sample_freq }   4000
    sample_type                      IP|TID|TIME|CPU|PERIOD|IDENTIFIER
    read_format                      ID
    disabled                         1
    inherit                          1
    freq                             1
    sample_id_all                    1
    exclude_guest                    1
  ------------------------------------------------------------
  sys_perf_event_open: pid -1  cpu 0  group_fd -1  flags 0x8 = 6
  ------------------------------------------------------------
  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
    disabled                         1
    inherit                          1
    freq                             1
    sample_id_all                    1
    exclude_guest                    1
  ------------------------------------------------------------
  sys_perf_event_open: pid -1  cpu 0  group_fd -1  flags 0x8 = 7
  ------------------------------------------------------------
  perf_event_attr:
    type                             2 (PERF_TYPE_TRACEPOINT)
    size                             136
    config                           0x131 (sched:sched_switch)
    { sample_period, sample_freq }   1
    sample_type                      IP|TID|TIME|CPU|PERIOD|RAW|IDENTIFIER
    read_format                      ID
    disabled                         1
    inherit                          1
    sample_id_all                    1
    exclude_guest                    1
  ------------------------------------------------------------
  sys_perf_event_open: pid -1  cpu 0  group_fd -1  flags 0x8 = 8
  ------------------------------------------------------------
  perf_event_attr:
    type                             3 (PERF_TYPE_HW_CACHE)
    size                             136
    config                           0x10005 (PERF_COUNT_HW_CACHE_RESULT_MISS | PERF_COUNT_HW_CACHE_OP_READ | PERF_COUNT_HW_CACHE_BPU)
    { sample_period, sample_freq }   4000
    sample_type                      IP|TID|TIME|CPU|PERIOD|IDENTIFIER
    read_format                      ID
    disabled                         1
    inherit                          1
    freq                             1
    sample_id_all                    1
    exclude_guest                    1
  ------------------------------------------------------------
  sys_perf_event_open: pid -1  cpu 0  group_fd -1  flags 0x8 = 10
  ------------------------------------------------------------
  perf_event_attr:
    type                             4 (PERF_TYPE_RAW)
    size                             136
    config                           0x101
    { sample_period, sample_freq }   4000
    sample_type                      IP|TID|TIME|CPU|PERIOD|IDENTIFIER
    read_format                      ID
    disabled                         1
    inherit                          1
    freq                             1
    sample_id_all                    1
    exclude_guest                    1
  ------------------------------------------------------------
  sys_perf_event_open: pid -1  cpu 0  group_fd -1  flags 0x8 = 11
  <SNIP>

Yang Jihong (4):
  perf trace-event-info: Add tracepoint_id_to_name() helper
  perf tools: Extend PRINT_ATTRf to support printing of members with a
    value of 0
  perf tools: Add printing perf_event_attr->type symbol in
    perf_event_attr__fprintf()
  perf tools: Add printing perf_event_attr->config symbol in
    perf_event_attr__fprintf()

 tools/perf/util/perf_event_attr_fprintf.c | 169 ++++++++++++++++++++--
 tools/perf/util/trace-event-info.c        |  13 ++
 tools/perf/util/trace-event.h             |   6 +
 3 files changed, 179 insertions(+), 9 deletions(-)
  

Comments

Yang Jihong May 10, 2023, 7:22 a.m. UTC | #1
Hello,

PING.

Thanks,
Yang.

On 2023/4/19 20:29, Yang Jihong wrote:
> Add printing perf_event_attr `config` and `id` symbol to improve the readability of debugging information.
> 
> Before:
> 
>    # perf --debug verbose=2 record -e cycles,cpu-clock,sched:sched_switch,branch-load-misses,r101 -C 0 true
>    <SNIP>
>    ------------------------------------------------------------
>    perf_event_attr:
>      size                             136
>      { sample_period, sample_freq }   4000
>      sample_type                      IP|TID|TIME|CPU|PERIOD|IDENTIFIER
>      read_format                      ID
>      disabled                         1
>      inherit                          1
>      freq                             1
>      sample_id_all                    1
>      exclude_guest                    1
>    ------------------------------------------------------------
>    sys_perf_event_open: pid -1  cpu 0  group_fd -1  flags 0x8 = 6
>    ------------------------------------------------------------
>    perf_event_attr:
>      type                             1
>      size                             136
>      { sample_period, sample_freq }   4000
>      sample_type                      IP|TID|TIME|CPU|PERIOD|IDENTIFIER
>      read_format                      ID
>      disabled                         1
>      inherit                          1
>      freq                             1
>      sample_id_all                    1
>      exclude_guest                    1
>    ------------------------------------------------------------
>    sys_perf_event_open: pid -1  cpu 0  group_fd -1  flags 0x8 = 7
>    ------------------------------------------------------------
>    perf_event_attr:
>      type                             2
>      size                             136
>      config                           0x131
>      { sample_period, sample_freq }   1
>      sample_type                      IP|TID|TIME|CPU|PERIOD|RAW|IDENTIFIER
>      read_format                      ID
>      disabled                         1
>      inherit                          1
>      sample_id_all                    1
>      exclude_guest                    1
>    ------------------------------------------------------------
>    sys_perf_event_open: pid -1  cpu 0  group_fd -1  flags 0x8 = 8
>    ------------------------------------------------------------
>    perf_event_attr:
>      type                             3
>      size                             136
>      config                           0x10005
>      { sample_period, sample_freq }   4000
>      sample_type                      IP|TID|TIME|CPU|PERIOD|IDENTIFIER
>      read_format                      ID
>      disabled                         1
>      inherit                          1
>      freq                             1
>      sample_id_all                    1
>      exclude_guest                    1
>    ------------------------------------------------------------
>    sys_perf_event_open: pid -1  cpu 0  group_fd -1  flags 0x8 = 10
>    ------------------------------------------------------------
>    perf_event_attr:
>      type                             4
>      size                             136
>      config                           0x101
>      { sample_period, sample_freq }   4000
>      sample_type                      IP|TID|TIME|CPU|PERIOD|IDENTIFIER
>      read_format                      ID
>      disabled                         1
>      inherit                          1
>      freq                             1
>      sample_id_all                    1
>      exclude_guest                    1
>    ------------------------------------------------------------
>    sys_perf_event_open: pid -1  cpu 0  group_fd -1  flags 0x8 = 11
>    <SNIP>
> 
> After:
> 
>    # perf --debug verbose=2 record -e cycles,cpu-clock,sched:sched_switch,branch-load-misses,r101 -C 0 true
>    <SNIP>
>    ------------------------------------------------------------
>    perf_event_attr:
>      type                             0 (PERF_TYPE_HARDWARE)
>      size                             136
>      config                           0 (PERF_COUNT_HW_CPU_CYCLES)
>      { sample_period, sample_freq }   4000
>      sample_type                      IP|TID|TIME|CPU|PERIOD|IDENTIFIER
>      read_format                      ID
>      disabled                         1
>      inherit                          1
>      freq                             1
>      sample_id_all                    1
>      exclude_guest                    1
>    ------------------------------------------------------------
>    sys_perf_event_open: pid -1  cpu 0  group_fd -1  flags 0x8 = 6
>    ------------------------------------------------------------
>    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
>      disabled                         1
>      inherit                          1
>      freq                             1
>      sample_id_all                    1
>      exclude_guest                    1
>    ------------------------------------------------------------
>    sys_perf_event_open: pid -1  cpu 0  group_fd -1  flags 0x8 = 7
>    ------------------------------------------------------------
>    perf_event_attr:
>      type                             2 (PERF_TYPE_TRACEPOINT)
>      size                             136
>      config                           0x131 (sched:sched_switch)
>      { sample_period, sample_freq }   1
>      sample_type                      IP|TID|TIME|CPU|PERIOD|RAW|IDENTIFIER
>      read_format                      ID
>      disabled                         1
>      inherit                          1
>      sample_id_all                    1
>      exclude_guest                    1
>    ------------------------------------------------------------
>    sys_perf_event_open: pid -1  cpu 0  group_fd -1  flags 0x8 = 8
>    ------------------------------------------------------------
>    perf_event_attr:
>      type                             3 (PERF_TYPE_HW_CACHE)
>      size                             136
>      config                           0x10005 (PERF_COUNT_HW_CACHE_RESULT_MISS | PERF_COUNT_HW_CACHE_OP_READ | PERF_COUNT_HW_CACHE_BPU)
>      { sample_period, sample_freq }   4000
>      sample_type                      IP|TID|TIME|CPU|PERIOD|IDENTIFIER
>      read_format                      ID
>      disabled                         1
>      inherit                          1
>      freq                             1
>      sample_id_all                    1
>      exclude_guest                    1
>    ------------------------------------------------------------
>    sys_perf_event_open: pid -1  cpu 0  group_fd -1  flags 0x8 = 10
>    ------------------------------------------------------------
>    perf_event_attr:
>      type                             4 (PERF_TYPE_RAW)
>      size                             136
>      config                           0x101
>      { sample_period, sample_freq }   4000
>      sample_type                      IP|TID|TIME|CPU|PERIOD|IDENTIFIER
>      read_format                      ID
>      disabled                         1
>      inherit                          1
>      freq                             1
>      sample_id_all                    1
>      exclude_guest                    1
>    ------------------------------------------------------------
>    sys_perf_event_open: pid -1  cpu 0  group_fd -1  flags 0x8 = 11
>    <SNIP>
> 
> Yang Jihong (4):
>    perf trace-event-info: Add tracepoint_id_to_name() helper
>    perf tools: Extend PRINT_ATTRf to support printing of members with a
>      value of 0
>    perf tools: Add printing perf_event_attr->type symbol in
>      perf_event_attr__fprintf()
>    perf tools: Add printing perf_event_attr->config symbol in
>      perf_event_attr__fprintf()
> 
>   tools/perf/util/perf_event_attr_fprintf.c | 169 ++++++++++++++++++++--
>   tools/perf/util/trace-event-info.c        |  13 ++
>   tools/perf/util/trace-event.h             |   6 +
>   3 files changed, 179 insertions(+), 9 deletions(-)
>