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.
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/CACcVEiUKj8hdZm4%2BFv4QDD0HyjA%3D-wWrQZEV1L2u%3Dt5cijv-2Q%40mail.gmail.com.