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

Wu Zhangjin
2009-11-11T02:42:43Z

Hi,

On Tue, 2009-11-10 at 08:43 -0800, David Daney 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.
>

so much drop? seems only two instructions added for it: lui, addi. from
this view point, I think the -fno-omit-frame-pointer(add, sd, move...)
will also bring with much drop.

It's time to remove them? -mlong-calls, -fno-omit-frame-pointer.

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

It's totally possible, will try to make it work later. I just wanted the
stuff simple, but if it really brings us with much drop, it's time to
fix it.

Regards,
Wu Zhangjin