1

I've been playing The Witness, and I noticed that the game is lagging without fully utilizing my graphics card.

My setup is pretty old at this point (HD 5850 and i7-930). The game remained at a semi-steady 60fps on Normal settings, but there were a few hiccups while running or while quickly panning the camera.

However, my GPU load barely exceeded 60-70% while playing, and my CPU load was around 30%. I didn't see any spikes on the load chart (MSI Afterburner).

For comparison, I tried loading the game on High settings and my GPU usage was at 80+%. I also tried playing Minecraft the other day with a shader pack, and GPU usage sat at 90% the whole time with a steady (albeit <60) fps.

My question: is it normal for a game to lag if your GPU and CPU aren't under full load?

  • 2
    GPU usage might be misleading, depending on how you measure it. For Windows check out Process Explorer Per GPU-Engine measurement. Example with single engine running with desktop 2D. Long story short, only part of GPU (although quite big) is made for 3D gaming. If single core will be maxed, it might create bottleneck for everything else. – PTwr Feb 2 '16 at 14:02
  • 1
    "Hovering close to 60" with vsync on can cause your framerate to drop by large amounts since if the game misses a frame it has to wait to catch up. This means your frame rate doesn't drop to 59, it drops to 30, then 15. etc. Additionally, streaming off disc can cause hitches which again, force framerate drops. Some people call this lag. – Yorik Feb 2 '16 at 16:09
2

Common scenario when you have a game engine/technical design that is bad. This is very sifnificative of such a problem, as the GPU throughput is not kept up to maximum.

If you consider what is going on, the GPU needs to receive prepared frames from the CPU, but if it doesn't it will not be fully utlized.

The CPU in turn needs to generate said framebuffers and push them for rendering, but if a game engine stalls for some reason (most common is it is single core and todays emphasis on less speed per core is stalling it) or gets stuck waiting for some data or deadlocks, then the framebuffer is not going to be filled in time.

The ideal scenario for performance, is a 1:1 scenario, where the framebuffer to be rendered is ready from the CPU as soon as the GPU is done rendering the previous slice.

My assumption in this case is that the game is largely single threaded (as most applications are) and it actually uses very much CPU on a single core, but still manages to not keep up due to processing being to instense in between the render code (most likely due to sloppy coding).

Measure the load per core and you should see if that may be the case. It could also be wait states in the game loop, so that for some reason, certain ops take a long time to do, therefore utlization of CPU does not go up (as no real workload is done) but it still stalls, due to waiting on something ineffective (like a non-cached resource streaming from disk).

  • 3
    Genrally good, but you don't need to put it to "bad coding." As you said, single core is the norm for software, which the OP seems to be seeing (the OP has a quad core at 30%, so 20-25% for game, the balance for services etc). Also, vsync (default for this game) is a frame limiter, and so if the GPU can make 60fps at 60% utilization, then why the need for 100%. – Yorik Feb 2 '16 at 16:04

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.