[PATCH] powerpc/configs: Enable function trace by default
Michael Ellerman
mpe at ellerman.id.au
Wed Apr 19 23:46:47 AEST 2017
Balbir Singh <bsingharora at gmail.com> writes:
> On Wed, 2017-04-19 at 21:13 +1000, Anton Blanchard wrote:
>> Hi Balbir,
>>
>> > > FTRACE is quite CPU consumming, shouldn't it really be on by
>> > > default ?
>> >
>> > It does some work at boot to NOP out function entry points at _mcount
>> > locations. Is that what you are referring to? Or the overhead of the
>> > code in terms of size? Most distro kernels have tracing on by default.
>> >
>> > The rest of the overhead is enablement based.
>>
>> Unfortunately the overhead is somewhat high without
>> CONFIG_MPROFILE_KERNEL, and enabling that option will break old
>> toolchains. It would be great if we could automatically enable it based
>> on the toolchain.
>>
>> Even with CONFIG_MPROFILE_KERNEL enabled, we aren't noping out the
>> redundant mflr at the start of each function.
>
> Very good catch! I sent the enablement assuming that we want to have these
> enabled to ensure we generally have these enabled in the distro kernels
> and ideally want to test with these enabled and many of us turn them
> on in any case. Do you see an issue with this being enabled by default?
> I presume most workloads run on kernels that have them enabled these days?
No definitely not. Most distro kernels don't even have the code, it only
went into 4.6.
> CONFIG_MPROFILE_KERNEL depends on CC_USING_MPROFILE_KERNEL which is
No it doesn't:
config MPROFILE_KERNEL
depends on PPC64 && CPU_LITTLE_ENDIAN
def_bool !DISABLE_MPROFILE_KERNEL
> automatically detected and is LE only.
It's automatically detected at build time, which is too late, so our
only option is to break the build:
ifdef CONFIG_MPROFILE_KERNEL
ifeq ($(shell $(srctree)/arch/powerpc/scripts/gcc-check-mprofile-kernel.sh $(CC) -I$(srctree)/include -D__KERNEL__),OK)
CC_FLAGS_FTRACE := -pg -mprofile-kernel
KBUILD_CPPFLAGS += -DCC_USING_MPROFILE_KERNEL
else
# If the user asked for mprofile-kernel but the toolchain doesn't
# support it, emit a warning and deliberately break the build later
# with mprofile-kernel-not-supported. We would prefer to make this an
# error right here, but then the user would never be able to run
# oldconfig to change their configuration.
$(warning Compiler does not support mprofile-kernel, set CONFIG_DISABLE_MPROFILE_KERNEL)
CC_FLAGS_FTRACE := -mprofile-kernel-not-supported
endif
endif
So in short it's a big PITA.
cheers
More information about the Linuxppc-dev
mailing list