[lkml]   [2009]   [Apr]   [28]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
SubjectRe: BUG: Function graph tracer hang

On Tue, 28 Apr 2009, Frederic Weisbecker wrote:

> Note that the branch profiler does that:
> ______f.miss_hit[______r]++;
> Which is a read + write on the cacheline.
> If each "if" are profiled in the timer interrupt, we can
> have the cachelines doing a ping-pong of dirtifying since the above
> variable is shared.
> Then the timer interrupt becomes slower. The function graph tracer itself makes
> it slower.
> Moreover it is traced itself. So not only the "if" in code are traced, but also
> each "if" processed by the function graph tracer on function calls and returns.
> Which means a fair amount of cacheline dirtifying.
> Then if the timer interrupt is slowed, and we have a lot of them (1000 Hz),
> the system spends all of its time inside it.
> At least we need the branch tracing to be done per cpu, I guess.

This can be done by basically reimplementing what percpu does. This is
because the data is saved off in its own section at every if statement. We
could copy that section per cpu and add code to the incrementors to add
only to their own CPU buffers.

This is low in my priority of things to do, but I'll at least add it to my
"to do" list.

-- Steve

 \ /
  Last update: 2009-04-28 22:51    [W:0.118 / U:4.036 seconds]
©2003-2018 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site