Re: [PATCH v7 7/7] Add Propeller configuration for kernel build
From: Nathan Chancellor
Date: Thu Dec 12 2024 - 16:35:08 EST
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