I'm profiling a game and I have some difficulties interpreting the profiler results. I turned to the timeline, which raised some interesting questions: 1) and 2) These regions of the CPU profiler are completely idle on all the threads. First thought would be that the CPU is idle and waiting for the GPU to do it's rendering. However, that doesn't seem to make sense because section 1 occurs between the normal Update() methods but before Camera.Render occurs. Also, once the command buffers have been submitted to the GPU, it should start processing the next frame, there's not really any reason to wait for that process to be completed before using the CPU again. 3) The CPU time is listed at top as 117 ms, but this frame takes 236 ms according to the timeline. The stats number changes when the game is paused, which means the numbers definitely don't correspond to the current frame but it sits roughly at this: So the CPU time doesn't really count these large blocks of idle time.. But the 8.9 FPS counter isn't really correct if the frames are taking 236 ms.. it should be more like 4.2 FPS. It kind of throws all the numbers into suspicion. 4. The tiny stuff at the end is: I'm not sure if that is useful or if it implies that we're using that large section of 2) to wait for the frame.. But there's nothing interesting there like reading out of the framebuffer or anything like that, so nothing should block. This is a very typical frame. Sometimes the "CPU time" is ~110 ms, but the actual total frame time is 300 ms. http://kortham.net/temp/upshot_8RHGOb0M.png Does this mean my game is GPU bound or CPU bound? Why do they seem to be synchronous (CPU and GPU alternating). This was done on a MacBook Pro, GeForce GT 650M. The GPU profiler is unavailable on my system. Thanks in advance!