Ok, Also is there any harm if we set block/mutex rate at the start of the
program ? Will it cause any memory allocations or any kind of performance
impact?

On Mon, Oct 21, 2019 at 2:47 PM Ian Lance Taylor <i...@golang.org> wrote:

> On Sun, Oct 20, 2019 at 8:57 PM Nidhi Agrawal <nidhi11...@gmail.com>
> wrote:
> >
> > Implementation in http/net/pprof library is leading me to conclude that
> they are different.
> > Yes, In runtime/pprof block, mutex, cpu all are implemented in the same
> way, but http/net/pprof is not using them in the same way.
> > In CPU profiling rate is set internally, while in block, mutex we are
> supposed to set the rate.
>
> Yes, that is true.  CPU profiling start with pprof.StartCPUProfile,
> while block and mutex profiling start with runtime.SetBlockProfilerate
> and runtime.SetMutexProfileFraction.  But you don't have to set the
> block and mutex rate at the start of the program.  You set it when you
> want to start profiling.
>
> You can also change the CPU profile rate with
> runtime.SetCPUProfileRate, but that is hard to use without
> pprof.StartCPUProfile.
>
> Ian
>
>
> > On Sun, Oct 20, 2019 at 1:27 PM Ian Lance Taylor <i...@golang.org>
> wrote:
> >>
> >> On Sun, Oct 20, 2019 at 12:51 AM Nidhi Agrawal <nidhi11...@gmail.com>
> wrote:
> >> >
> >> > I came to this conclusion because the pprof implemented the cpu with
> the assumption that the client gives how much time to capture the profiling
> data. but when it comes to the mutex and block, the pprof didn't implement
> it to support this but asked the client to call the profile rate before
> calling the pprof function. This made me question why is there a difference
> in the profiling technique, is it expected from us to set profile rate at
> the start of the program, if not then why didn't they implement it similar
> to the cpu.
> >>
> >> I'm sorry, I don't really understand what you mean.
> >>
> >> There is really no difference among CPU, block, and mutex profiling
> >> with regard to how they are used.  In all cases you start profiling,
> >> do some work, and then fetch the profile.  They are all more or less
> >> the same.  I don't understand what is leading you to conclude that
> >> they are different.
> >>
> >> Heap profiling, on the other hand, really is different, and it is
> >> documented differently in runtime/pprof.
> >>
> >> Ian
> >>
> >>
> >> > On Sun, Oct 20, 2019 at 1:10 PM Ian Lance Taylor <i...@golang.org>
> wrote:
> >> >>
> >> >> On Sun, Oct 20, 2019 at 12:36 AM Nidhi Agrawal <nidhi11...@gmail.com>
> wrote:
> >> >> >
> >> >> > 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.
> >> >>
> >> >> I'm likely missing something, but I'm looking at
> >> >> https://golang.org/pkg/net/http/pprof, and I don't see that.  I see
> >> >> that it says that you have to call runtime.SetBlockProfileRate or
> >> >> runtime.SetMutexProfileFraction, but I don't see anything that says
> >> >> that you have to call it at the start of the application.
> >> >>
> >> >> 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/CACcVEiXJfQi%3D8APOPEM-_B%2BSeyEAru6Bi%3Dzku7Fx41cWCeg8qQ%40mail.gmail.com.

Reply via email to