I have a Go program in which several goroutines are calling a database querying function concurrently. I want to log the memory and cpu usage(user space time + kernel space time) every time that function is called. Currently
pprof package only consists of
WriteHeapProfile() functions, but I can’t use them because they return per-process statistics.
I asked this question elsewhere and was advised to use
pprof.WithLabels() to tag my goroutines before that function call, and then observe the stats generated by
pprof.StartCPUProfile(). However, I could only find stopwatch time from the generated log of CPU-profile. And hence, the title. I could wrap my function in a goroutine, and observe its memory, and cpu usage stats over its lifetime if any api to do so is available, but I don’t know if it exists or not.