On Fri, Jun 06, 2025 at 11:12:34PM -0700, Ian Rogers wrote: > Pipe mode has no header and emits the data as if it were events. The > dumping of features was controlled by the --header/-I options which > makes little sense when they are events, normally traced when > dump_trace is true. Switch to making pipe feature events also be > traced with detail when other events are. I'm not sure I'm following. Are you saying the pipe mode doesn't support features with --header/-I option? It seems to work for me. $ git show commit be59dba332e1e8edd3e88d991ba0e4795ae2bcb2 (HEAD -> perf-testing) Author: Ian Rogers <irogers@xxxxxxxxxx> Date: Tue Jun 17 15:33:56 2025 -0700 libperf evsel: Add missed puts and asserts A missed evsel__close before evsel__delete was the source of leaking perf events due to a hybrid test. Add asserts in debug builds so that this shouldn't happen in the future. Add puts missing on the cpu map and thread maps. Signed-off-by: Ian Rogers <irogers@xxxxxxxxxx> Link: https://lore.kernel.org/r/20250617223356.2752099-4-irogers@xxxxxxxxxx Signed-off-by: Namhyung Kim <namhyung@xxxxxxxxxx> $ ./perf version perf version 6.16.rc3.gbe59dba332e1 $ ./perf record -o- true | ./perf report -i- --header-only # ======== # captured on : Tue Jun 24 12:06:38 2025 # header version : 1 # data offset : 0 # data size : 0 # feat offset : 0 # ======== # # hostname : bangji # os release : 6.12.20-1rodete1-amd64 # perf version : 6.16.rc3.gbe59dba332e1 # arch : x86_64 # nrcpus online : 4 # nrcpus avail : 8 # cpudesc : 11th Gen Intel(R) Core(TM) i7-1185G7 @ 3.00GHz # cpuid : GenuineIntel,6,140,1 # total memory : 32566540 kB # cmdline : /home/namhyung/project/linux/tools/perf/perf record -o- true # event : name = cycles:P, , id = { 369, 370, 371, 372 }, type = 0 (PERF_TYPE_HARDWARE), ... # CPU_TOPOLOGY info available, use -I to display # NUMA_TOPOLOGY info available, use -I to display # pmu mappings: cpu = 4, breakpoint = 5, cstate_core = 22, cstate_pkg = 23, hwmon_acpitz = 4294901760, ... # time of first sample : 0.000000 # time of last sample : 0.000000 # sample duration : 0.000 ms # MEM_TOPOLOGY info available, use -I to display # cpu pmu capabilities: branches=32, max_precise=3, pmu_name=icelake # intel_pt pmu capabilities: topa_multiple_entries=1, psb_cyc=1, single_range_output=1, ... > > The attr event in pipe mode had no dumping, wire this up and use the > existing perf_event_attr fprintf support. > > The header's bpf_prog_info or bpf_btf may be empty when written. If > they are empty just skip writing them to save space. These look good to me. Thanks, Namhyung > > Ian Rogers (4): > perf header: In pipe mode dump features without --header/-I > perf header: Allow tracing of attr events > perf header: Display message if BPF/BTF info is empty > perf header: Don't write empty BPF/BTF info > > tools/perf/util/header.c | 46 ++++++++++++++++++++++++++-------------- > tools/perf/util/header.h | 1 + > 2 files changed, 31 insertions(+), 16 deletions(-) > > -- > 2.50.0.rc0.604.gd4ff7b7c86-goog >