You want to use pprof “labels” and mark the frames. > On Jun 26, 2020, at 1:35 PM, michael.nis...@gmail.com wrote: > > > Hello, > > I'm trying to figure out how to do "frame" based profiling in GO and was > redirect to this mailing--list from the `r/golang` sub (topic). Would be > amazing if anyone here can help. > > In short: I have a game server in Go and need to profile CPU costs of > individual frames but sadly can't find a way to do that properly. > > I thought that the `pprof` CPU profile should be the right tool. However, at > least the profile visualization tools always aggregate the methods execution > costs between `StartCPUProfile` and `StopCPUProfile`. While in some scenarios > this is great, we have currently have big spikes in for frame duration and > would love to see the difference in times per frame. Ideally in a flame-graph > like visualization but grouped by frames. So we'd somehow need to mark the > frame start/end and tell the visualization to use that. > > Ideally, like the profiler in the Unity3D Editor does: > > > Unity3D Profiling - Per frame method execution times > > I tried use `Start/StopCPUProfile` at the beginning and end of a frame to > create an individual capture per frame. That's not ideal for comparison but > should be good enough and simple in concept. Sadly the cost of > `StartCPUProfile` is so high, we can't call that per frame. > > Looking at the code, the the 100 millisecond sleep in `profileWriter` > explains that it. So what we'd need is a way to mark the frame start/end > somehow for visual grouping. Is that possible with `pprof`? > > > pprof.go > > Further, I wonder if it's even possible to profile a game server with a > simulation framerate of 120Hz. Since the 100Hz CPU profile rate is hard coded > in `StartCPUProfile` I would guess we even per frame aggregation it make not > work of a frame duration is usually below 1s / 120 or is that not relevant? > > Best, > Michael > > -- > 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/d0e8b1ae-d992-44ed-bd9a-6a72e6526d4co%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/36D99174-9694-4664-9493-416087FBBA91%40ix.netcom.com.