From: Evgeny P. <Evg...@ex...> - 2005-11-14 07:14:48
|
Hi All, 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=3Dpoll' parameter to kernel. Thanks! Evgeny. |
From: John L. <le...@mo...> - 2005-11-17 03:22:09
|
On Mon, Nov 14, 2005 at 09:14:29AM +0200, Evgeny Popovich wrote: > 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? Not really. Remember oprofile is a statistical profiler, not an interstitial one. The manual and/or the developer's manual goes into some detail on this. > Is there some existing tool (I'm too lazy to write one - hope > there exists something similar) that does it for me? perfctr perhaps? > 2. Is there some visualization tools that can display the whole call > graph? The static graph? cflow. If you mean the dynamic call graph, then no, not yet. We don't count function arcs, we only sample them. > 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! The idle thread runs when nothing else wants to. > How is it possible to get info where kernel is waiting most of the > time??? With oprofile, it's not - oprofile only samples activity, not waiting. Try systemtap? regards john |
From: icecream <joh...@ho...> - 2008-06-11 05:06:13
|
John Levon wrote: > > On Mon, Nov 14, 2005 at 09:14:29AM +0200, Evgeny Popovich wrote: > >> 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? > > Not really. Remember oprofile is a statistical profiler, not an > interstitial one. The manual and/or the developer's manual goes into > some detail on this. > > but even so, isn't all the required information there? for instance, if i use: opreport -c -i SomeSymbol -a it gives me the total time number of samples found in and below SomeSymbol. it would be very useful if this could then used to construct a hierarchical list, or tree (similar to that of sysprof). -- View this message in context: http://www.nabble.com/Call-graph-sub-branch-execution-time-tp1470694p17770124.html Sent from the oprofile-list mailing list archive at Nabble.com. |
From: John L. <le...@mo...> - 2008-06-11 12:50:49
|
On Tue, Jun 10, 2008 at 10:06:21PM -0700, icecream wrote: > >> 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? > > > > Not really. Remember oprofile is a statistical profiler, not an > > interstitial one. The manual and/or the developer's manual goes into > > some detail on this. > > but even so, isn't all the required information there? for instance, if i > use: > > opreport -c -i SomeSymbol -a > > it gives me the total time number of samples found in and below SomeSymbol. > it would be very useful if this could then used to construct a hierarchical > list, or tree (similar to that of sysprof). The oprofile GUI does indeed give this information, bearing in mind the caveat above. regards john |