On Tue, May 12, 2020 at 1:01 PM Steve Canfield <stevencanfi...@gmail.com> wrote: > > Thanks Ian. Are there limits on how many such labels exist for the life of > the process, or can be active at once? Would labeling by rpc_guid be > acceptable?
There are no limits on labels other than memory usage. Ian > On Tue, May 12, 2020 at 12:06 PM Ian Lance Taylor <i...@golang.org> wrote: >> >> On Tue, May 12, 2020 at 10:31 AM Steve Canfield >> <stevencanfi...@gmail.com> wrote: >> > >> > I feel like I must be really dense, but it doesn't seem like you are >> > answering my question. >> > >> > Again, assume I have good reasons to want to know the cpu usage for every >> > request. Let's say I want to do isolation or billing or whatever on the >> > basis of cpu usage. >> > >> > Is this possible in Go? >> >> Use context labels (https://golang.org/pkg/runtime/pprof/#WithLabels) >> and CPU profiling. The profile should let you attribute CPU usage per >> label. >> >> However, that approach would only do sampling. I do not know of an >> approach that would let you get fairly precise CPU usage for every >> request, as when multiple goroutines are running in parallel there is >> no good way to separate out the CPU usage of each goroutine. >> >> Ian >> >> >> > On Mon, May 11, 2020 at 9:51 PM robert engels <reng...@ix.netcom.com> >> > wrote: >> >> >> >> Also, you may be interested in github.com/robaho/goanalyzer - I feel it >> >> makes latency analysis much easier. >> >> >> >> On May 11, 2020, at 11:46 PM, robert engels <reng...@ix.netcom.com> wrote: >> >> >> >> You don’t need to do it this way. see https://rakyll.org/profiler-labels/ >> >> >> >> You label the work. The work will be recorded with the labels for >> >> analysis. The labels can be nested. This will allow you to use the >> >> execution trace to profile wall time, see >> >> https://talks.golang.org/2015/dynamic-tools.slide#30 >> >> >> >> The standard pprof/profile will do cpu time profiling. >> >> >> >> This is all you really need to do the profiling. >> >> >> >> On May 11, 2020, at 10:58 PM, Steve Canfield <stevencanfi...@gmail.com> >> >> wrote: >> >> >> >> Thanks, but what about the "I can't enable profiling for every request" >> >> bit? Assume it's actually important for me to know the cpu consumption on >> >> a per request basis. >> >> >> >> On Mon, May 11, 2020 at 4:55 PM Robert Engels <reng...@ix.netcom.com> >> >> wrote: >> >>> >> >>> Look at pprof labels. >> >>> >> >>> On May 11, 2020, at 6:29 PM, Steven Canfield <stevencanfi...@gmail.com> >> >>> wrote: >> >>> >> >>> >> >>> Hi, >> >>> >> >>> I have an RPC server which has heterogenous requests, e.g. some calls >> >>> hit cache and are cheaper to serve while others need to compute a result. >> >>> >> >>> Is there any way to keep track of the cpu used just by one particular >> >>> goroutine[1]? It seems like there's not a straightforward way today >> >>> without adding logic around every single blocking piece (to start/stop a >> >>> timer), and in the future will become completely impossible with >> >>> "Non-cooperative goroutine preemption". >> >>> >> >>> I would be happy with only knowing this number when a goroutine finishes. >> >>> >> >>> I'm familiar with using pprof for measuring the entire process, but it's >> >>> not clear to me how to go from there to what was used by a particular >> >>> RPC, and I also can't enable profiling for every request. >> >>> >> >>> Thanks, >> >>> -Steve >> >>> >> >>> 1: I really want a goroutine and its children, but I create new >> >>> goroutines in few enough places that I could do some context mgmt to >> >>> manage this. >> >>> >> >>> -- >> >>> 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/e2d7e3d7-c678-4515-9cdb-060d29b14500%40googlegroups.com. >> >> >> >> >> >> >> >> -- >> >> 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/A1D870A7-ADFD-4F00-B678-E7C6C0FE80FD%40ix.netcom.com. >> >> >> >> >> > -- >> > 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/CANLJsyBF9BezZVYtoFcGCTNYQrTuVVAQoEgBC2CWVRJOxb8P-A%40mail.gmail.com. -- 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/CAOyqgcVknCuT8e8KSwR1VQa%2BQSnBzZ9RUdBLC1PQfAYDVJzPtQ%40mail.gmail.com.