Re: [PATCH v7 04/17] tracing: add static function tracer support for MIPS

David Daney
2009-11-10T16:50:35Z

Wu Zhangjin wrote:
> Hi,
>
> On Mon, 2009-11-09 at 16:26 -0800, David Daney wrote:
>> Wu Zhangjin wrote:
>>
>>>
>>> +ifndef CONFIG_FUNCTION_TRACER
>>> cflags-y := -ffunction-sections
>>> +else
>>> +cflags-y := -mlong-calls
>>> +endif
>>> cflags-y += $(call cc-option, -mno-check-zero-division)
>>>
>> That doesn't make sense to me. Modules are already compiled with
>> -mlong-calls. The only time you would need the entire kernel compiled
>> with -mlong-calls is if the tracer were in a module. The logic here
>> doesn't seem to reflect that.
>
> Yes, I knew the module have gotten the -mlong-calls, Here we just want
> to use -mlong-calls for the whole kernel, and then we get the same
> _mcount stuff in the whole kernel, at last, we can use the same
> scripts/recordmcount.pl and ftrace_make_nop & ftrace_make_call for the
> dynamic ftracer.
>

-mlong-calls really degrades performance. I have seen things like 6%
drop in network packet forwarding rates with -mlong-calls.

It would be better to fix all the tools so that they could handle both
-mlong-calls and -mno-long-calls code.

David Daney