FROMLIST: arm64: Allow CONFIG_AUTOFDO_CLANG to be selected
Link: https://lore.kernel.org/lkml/20241210113129.GB14735@willie-the-truck/T/ Select ARCH_SUPPORTS_AUTOFDO_CLANG to allow AUTOFDO_CLANG to be selected. On ARM64, ETM traces can be recorded and converted to AutoFDO profiles. Experiments on Android show 4% improvement in cold app startup time and 13% improvement in binder benchmarks. Bug: 382743224 Change-Id: I9d6d352ee6c0c7cd17ed2fbaf3d788f34ed78fbf Signed-off-by: Yabin Cui <yabinc@google.com> Reviewed-by: Rong Xu <xur.google.com> Tested-by: George Burgess IV <gbiv@google.com> Reviewed-by: Kees Cook <kees@kernel.org>
This commit is contained in:
committed by
Matthias Männich
parent
885a366c33
commit
2dc6738c39
@@ -55,7 +55,7 @@ process consists of the following steps:
|
||||
workload to gather execution frequency data. This data is
|
||||
collected using hardware sampling, via perf. AutoFDO is most
|
||||
effective on platforms supporting advanced PMU features like
|
||||
LBR on Intel machines.
|
||||
LBR on Intel machines, ETM traces on ARM machines.
|
||||
|
||||
#. AutoFDO profile generation: Perf output file is converted to
|
||||
the AutoFDO profile via offline tools.
|
||||
@@ -141,6 +141,22 @@ Here is an example workflow for AutoFDO kernel:
|
||||
|
||||
$ perf record --pfm-events RETIRED_TAKEN_BRANCH_INSTRUCTIONS:k -a -N -b -c <count> -o <perf_file> -- <loadtest>
|
||||
|
||||
- For ARM platforms with ETM trace:
|
||||
|
||||
Follow the instructions in the `Linaro OpenCSD document
|
||||
https://github.com/Linaro/OpenCSD/blob/master/decoder/tests/auto-fdo/autofdo.md`_
|
||||
to record ETM traces for AutoFDO::
|
||||
|
||||
$ perf record -e cs_etm/@tmc_etr0/k -a -o <etm_perf_file> -- <loadtest>
|
||||
$ perf inject -i <etm_perf_file> -o <perf_file> --itrace=i500009il
|
||||
|
||||
For ARM platforms running Android, follow the instructions in the
|
||||
`Android simpleperf document
|
||||
<https://android.googlesource.com/platform/system/extras/+/main/simpleperf/doc/collect_etm_data_for_autofdo.md>`_
|
||||
to record ETM traces for AutoFDO::
|
||||
|
||||
$ simpleperf record -e cs-etm:k -a -o <perf_file> -- <loadtest>
|
||||
|
||||
4) (Optional) Download the raw perf file to the host machine.
|
||||
|
||||
5) To generate an AutoFDO profile, two offline tools are available:
|
||||
|
||||
@@ -103,6 +103,7 @@ config ARM64
|
||||
select ARCH_SUPPORTS_PER_VMA_LOCK
|
||||
select ARCH_SUPPORTS_HUGE_PFNMAP if TRANSPARENT_HUGEPAGE
|
||||
select ARCH_SUPPORTS_RT
|
||||
select ARCH_SUPPORTS_AUTOFDO_CLANG
|
||||
select ARCH_WANT_BATCHED_UNMAP_TLB_FLUSH
|
||||
select ARCH_WANT_COMPAT_IPC_PARSE_VERSION if COMPAT
|
||||
select ARCH_WANT_DEFAULT_BPF_JIT
|
||||
|
||||
Reference in New Issue
Block a user