Because it is explicitly written in the documentation here
https://golang.org/pkg/net/http/pprof/ that we should set block profile
rate at the start of application, unlike CPU profiling where the rate is
being set internally before profiling starts.

As you said we can set the rate any time then similar to cpu profiling,
block/mutex profiling can also be implemented like
go tool pprof http://localhost:6060/debug/pprof/block?seconds=30&rate=1
Where internally we set the rate before profiling starts.

I wanted to understand if there is any reason for such different
implementation.

On Sun, Oct 20, 2019 at 12:58 PM Ian Lance Taylor <i...@golang.org> wrote:

> On Sun, Oct 20, 2019 at 12:23 AM Nidhi Agrawal <nidhi11...@gmail.com>
> wrote:
> >
> > Ok, Is it necessary to call SetBlockProfileRate at the start of
> application?
> > If not then we can call it just before starting block profile and after
> block profile interval (eg. 30 seconds) when profiling finishes then we can
> reset it to 0.
>
> As far as I know you can call SetBlockProfileRate at any time.
>
> Why do you think that it must be called at the start of the application?
>
> Ian
>
>
> > On Sun, Oct 20, 2019 at 12:48 PM Ian Lance Taylor <i...@golang.org>
> wrote:
> >>
> >> On Sat, Oct 19, 2019 at 10:17 PM Nidhi Agrawal <nidhi11...@gmail.com>
> wrote:
> >> >
> >> >
> >> > https://golang.org/src/runtime/mprof.go,
> https://golang.org/pkg/net/http/pprof/ here it is mentioned that we need
> to set SetBlockProfileRate to get enable block profile.
> >> >
> >> > In case of block profiling if I set rate just before profiling and
> reset it to 0 after profiling i am not getting any data.
> >> >
> >> > I am doing something like:
> >> > SetBlockProfileRate(1)
> >> > pprof.Lookup("block").WriteTo(f, 0);
> >> > SetBlockProfileRate(0)
> >>
> >> If that is exactly what you are doing, then that doesn't work for CPU
> >> profiling either.  You need to call SetBlockProfileRate, then do some
> >> work, then fetch the profile.
> >>
> >> Ian
> >>
> >>
> >> > On Sun, Oct 20, 2019 at 10:24 AM Ian Lance Taylor <i...@golang.org>
> wrote:
> >> >>
> >> >> On Sat, Oct 19, 2019 at 7:34 PM Nidhi Agrawal <nidhi11...@gmail.com>
> wrote:
> >> >> >
> >> >> > We don't need to set MemProfileRate. It is about block and mutex
> profiling where we need to set the rate (SetBlockProfileRate,
> SetMutexProfileFraction) at application start. Is there any performance
> impacts of doing that ?
> >> >> >
> >> >> > It is not causing any issue we want to enable block and mutex
> profiling so i am thinking if we can do something like
> >> >> >   SetBlockProfileRate(1)
> >> >> >   pprof.Lookup("block").WriteTo(f, 0);
> >> >> >   sleep(20)
> >> >> >   SetBlockProfileRate(0)
> >> >> > just like how cpu and trace profile works. But i am curious why
> isn't it not already done in the library. What can be the reason behind
> this?
> >> >> >
> >> >> > I am curious why they are different from cpu and trace profiling,
> trying to understand the inner working of this. It would be really helpful
> if you can give me some pointers on where i can read about the high level
> design of the pprof.
> >> >>
> >> >> Oh, sorry, I misread what you were asking.  But now I'm not sure what
> >> >> you are asking.  You said
> >> >>
> >> >> > On the other hand for mutex and block profiling, it expects us to
> set the rate at the start of the application and while calling profiling,
> it just gathers the information and return.
> >> >>
> >> >> That's how memory profiling works.  You don't have to set the mutex
> >> >> and profiling rates at the start of the application.  You can set
> them
> >> >> when you want to start profiling, as you suggest.  Is there some
> >> >> documentation that says otherwise?
> >> >>
> >> >> Sorry, I don't know of any documentation describing the profiling
> >> >> implementation.
> >> >>
> >> >> Ian
>

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/golang-nuts/CACcVEiUeadG8zgO42oQNQn%3DxKO0DGC00MnRS%2B0%2B%3DYsOB%3DKCyig%40mail.gmail.com.

Reply via email to