I'm new with Oprofile, and maybe have some misunderstanding with it.
Here is the whole problem: I've made several changes to kernel 2.6, and since then my application runs 5-6 times slower than usual.
Oprofile (0.9) simple opreport tells me that 80% of the time I spend in poll_idle. So I've rebuild the kernel with debug info and frame pointers enabled
In order to get call graph information. But there are few problems with it:
1. I do get call graph information, and time I spend in each function's body, but I don't get time I've spent in the whole function tree, that is, is it possible to get execution time of function and all its children? Is there some existing tool (I'm too lazy to write one - hope there exists something similar) that does it for me?
2. Is there some visualization tools that can display the whole call graph?
3. I see that most of the time the kernel spend in poll_idle, which is called by cpu_idle. But noone calls to cpu_idle! How is it possible to get info where kernel is waiting most of the time???
I'm catching CPU_CLK_UNHALTED event, and pass 'idle=poll' parameter to kernel.