On Wed, Sep 19, 2012 at 05:47:15PM -0400, Ehsan Akhgari wrote: > On 12-09-19 5:08 PM, Steve Fink wrote: > >On 09/19/2012 06:33 AM, Ehsan Akhgari wrote: > >>On 12-09-19 1:01 AM, L. David Baron wrote: > >>>On Wednesday 2012-09-19 00:04 -0400, Ehsan Akhgari wrote: > >>>>A while ago (I think more than a couple of years ago now), Vlad > >>>>implemented FunctionTimer which is a facility to time how much each > >>>>function exactly takes to run. Then, I went ahead and instrumented > >>>>a whole bunch of code which was triggered throughout our startup > >>>>path to get a sense of what things are expensive there and what we > >>>>can do about that. That code is hidden behind the NS_FUNCTION_TIMER > >>>>build-time flag, turned on by passing --enable-functiontimer. > >>> > >>>Is any of the instrumentation worth turning into instrumentation for > >>>the new profiler (SAMPLE_LABEL_* macros)? > >> > >>I can go through the list and file bugs if I find anything > >>particularly useful. > >> > >>>Otherwise sounds fine to me (though there could be somebody using it > >>>who wants it to stay). > >> > >>I just confirmed that at least, nsGlobalWindow.cpp will not build with > >>--enable-functiontimer, and the fact that nobody has complained about > >>that before is a strong indication that nobody is using this code. > > > >I was still building with this relatively recently, though I haven't > >actually used it in at least a year and it's possible all of those > >builds were JS shell-only which wouldn't be affected. I had my own UI > >that used the functiontimer output, but I never bothered landing it and > >now that we have JS call information in the profiler, there's no reason > >to make any attempt to keep it alive. > > Yeah I don't think js shell builds would be affected. And let's use > the past tense to refer to FunctionTimer from now on! It is dead on > inbound. :-) > > >At a theoretical level, instrumentation like functiontimer enables > >things that sampling cannot. For example, you can accurately count > >memory allocated within the activation of a function call (or other > >metrics like cache misses, branch mispredicts, context switches, etc.). > >But the new profiler uses both sampling and instrumentation (the latter > >via SAMPLE_LABEL_*? I don't know the details.) I suspect I'm not saying > >anything that everyone doesn't already know. > > The sample labels will not provide instrumenting profiling. What > happens is that the sample labels build up a stack, and every time > that we pause the target thread when taking a sample, we walk that > pseudo stack and record it. This is what we use on platforms that > we cannot currently unwind the C++ stack, including mobile/b2g and > aurora/beta/release (where we don't build with frame pointers), and > should be mostly thought of as a replacement or addition to the > native stack.
We could, however, instrument there. Mike _______________________________________________ dev-platform mailing list dev-platform@lists.mozilla.org https://lists.mozilla.org/listinfo/dev-platform