Why are jobs not spread over multiple frames?

I’m trying to understand why Unity isn’t spreading my parallel jobs over multiple frames. I’m checking if the jobs are completed in LateUpdate, and only when they are complete do I call .Complete(). I’m scratching my head as to why Unity is still wanting to run the jobs inside a single frame (bar a few exceptions, as seen in the profiler screenshot), causing massive frame drops, instead of letting them run in the background so the game can maintain the target frame rate?

I don’t see where the main thread is waiting on jobs and not letting them roll over multiple frames. Actually, it looks like your MeshChunkJob is rolling over to the next frame. For some reason, you just have something really expensive happening in the editor that is slowing everything down. What editor windows do you have open?

Are you absolutely certain that this is what happens? It would take only one jump that is forced to complete in LateUpdate to make it look like they are all waiting for completion in a single frame.

For instance, there could be a dependent job that you call complete on which makes it wait for other preceding jobs to complete.

Thanks, this got me digging to find out that the jobs are indeed running nicely parallel, and that the main thread is being stalled by other logic. In game it was destroying meshes unnecessarily, causing a large Object.Destroy overhead, which didn’t show up in the editor profiler specifically. It’s also being stalled by the URP frustum culling, which is entirely unnecessary as the camera always sees all meshes, but there doesn’t appear a way to bypass that - what a waste!