On Thu, Dec 12, 2024 at 01:20:46PM -0800, Yonghong Song wrote: ... > > +5) Use the create_llvm_prof tool (https://github.com/google/autofdo) to > > + generate Propeller profile. :: > > + > > + $ create_llvm_prof --binary=<vmlinux> --profile=<perf_file> > > + --format=propeller --propeller_output_module_name > > + --out=<propeller_profile_prefix>_cc_profile.txt > > + --propeller_symorder=<propeller_profile_prefix>_ld_profile.txt > > Prevously I am using perf-6.8.5-0.hs1.hsx.el9.x86_64 and it works fine. > Now in my system, the perf is upgraded to 6.12.gadc218676eef > > [root@twshared7248.15.atn5 ~]# perf --version > perf version 6.12.gadc218676eef > > and create_llvm_prof does not work any more. > > The command to collect sampling data: > > # perf record -e BR_INST_RETIRED.NEAR_TAKEN:k -a -N -b -c 500009 -- stress --cpu 36 --io 36 --vm 36 --vm-bytes 128M --timeout 300s > stress: info: [536354] dispatching hogs: 36 cpu, 36 io, 36 vm, 0 hdd > stress: info: [536354] successful run completed in 300s > [ perf record: Woken up 2210 times to write data ] > [ perf record: Captured and wrote 562.529 MB perf.data (701971 samples) ] > # uname -r > 6.11.1-0_fbk0_lto_rc19_612_gb572dfac1b39 > > The kernel is a 6.11 lto kernel. > > I then run the following command: > $ cat ../run.sh > # perf record -e BR_INST_RETIRED.NEAR_TAKEN:k -a -N -b -c 500009 \ > # -- stress --cpu 36 --io 36 --vm 36 --vm-bytes 128M --timeout 300s > # good: perf-6.8.5-0.hs1.hsx.el9.x86_64 > > # <propeller_profile_prefix>: /tmp/propeller > ./create_llvm_prof --binary=vmlinux-6.11.1-0_fbk0_lto_rc19_612_gb572dfac1b39 \ > --profile=perf.data \ > --format=propeller --propeller_output_module_name \ > --out=/tmp/propeller_cc_profile.txt \ > --propeller_symorder=/tmp/propeller_ld_profile.txt > > $ ./run.sh > WARNING: Logging before InitGoogleLogging() is written to STDERR > I20241212 13:12:18.401772 463318 llvm_propeller_binary_content.cc:376] 'vmlinux-6.11.1-0_fbk0_lto_rc19_612_gb572dfac1b39' is PIE: 0 > I20241212 13:12:18.403692 463318 llvm_propeller_binary_content.cc:380] 'vmlinux-6.11.1-0_fbk0_lto_rc19_612_gb572dfac1b39' is relocatable: 0 > I20241212 13:12:18.404873 463318 llvm_propeller_binary_content.cc:388] Build Id found in 'vmlinux-6.11.1-0_fbk0_lto_rc19_612_gb572dfac1b39': eaacd5a14abc48cf832b3ad0fa6c64635ab569a8 > I20241212 13:12:18.521499 463318 llvm_propeller_binary_content.cc:376] 'vmlinux-6.11.1-0_fbk0_lto_rc19_612_gb572dfac1b39' is PIE: 0 > I20241212 13:12:18.521530 463318 llvm_propeller_binary_content.cc:380] 'vmlinux-6.11.1-0_fbk0_lto_rc19_612_gb572dfac1b39' is relocatable: 0 > I20241212 13:12:18.521553 463318 llvm_propeller_binary_content.cc:388] Build Id found in 'vmlinux-6.11.1-0_fbk0_lto_rc19_612_gb572dfac1b39': eaacd5a14abc48cf832b3ad0fa6c64635ab569a8 > I20241212 13:12:18.521611 463318 llvm_propeller_perf_lbr_aggregator.cc:51] Parsing [1/1] perf.data ... > [ERROR:/home/runner/work/autofdo/autofdo/third_party/perf_data_converter/src/quipper/perf_reader.cc:1386] Event size 132 after uint64_t alignment of the filename length is greater than event size 128 reported by perf for the buildid event of type 0 > W20241212 13:12:18.521708 463318 llvm_propeller_perf_lbr_aggregator.cc:55] Skipped profile [1/1] perf.data: FAILED_PRECONDITION: Failed to read perf data file: [1/1] perf.data > W20241212 13:12:18.521718 463318 llvm_propeller_perf_lbr_aggregator.cc:67] Too few branch records in perf data. > E20241212 13:12:18.554437 463318 create_llvm_prof.cc:238] FAILED_PRECONDITION: No perf file is parsed, cannot proceed. > > > Could you help take a look why perf 12 does not work with create_llvm_prof? > The create_llvm_prof is downloaded from https://github.com/google/autofdo/releases/tag/v0.30.1. I think Peter may have reported the same issue on GitHub? https://github.com/google/autofdo/issues/233 I wonder if this is a kernel side or perf tool regression? Cheers, Nathan