Game doesn't use full GPU or CPU

:arrow_forward: GAME INFORMATION

:point_down: These details are CRITICAL; DO NOT skip them or your issue may not be reviewed.

  • GAME BUILD #: 47820
  • GAME PLATFORM: Steam
  • OPERATING SYSTEM: Windows 10

:arrow_forward: ISSUE EXPERIENCED

:point_down: DESCRIBE THE ISSUE IN DETAIL (below). LIMIT TO ONE BUG PER THREAD.
I start a single player game vs 7 AIs, deathmatch/extreme. The game starts out at 165 fps (my monitor refresh rate) and slowly goes down to 75 fps as the game progresses, but the GPU and CPU usage actually decreases slightly (from ~55% to 45%). Temperatures are very low. Have a Intel 6700k and Nvidia 1060 6gb.

:arrow_forward: FREQUENCY OF ISSUE

:point_down: How often does the issue occur? CHOSE ONE; DELETE THE REST!

  • 100% of the time / matches I play (ALWAYS)

:arrow_forward: REPRODUCTION STEPS

:point_down: List CLEAR and DETAILED STEPS we can take to reproduce the issue ourselves… Be descriptive!

Here’s the steps to reproduce the issue:

  1. Start multiplayer game and wait

:arrow_forward: EXPECTED RESULT

:point_down: What was SUPPOSED to happen if the bug you encountered were not present?

:arrow_forward: IMAGE

:point_down: ALWAYS attach a PICTURE (.jpg, .png, .gif) or VIDEO (.mp4, YouTube link) that highlights the problem.

:arrow_forward: GAME FILES (SAVE / RECORDING)

:point_down: Attach a SAVE GAME (.aoe2spgame) or GAME RECORDING (.aoe2record) of the match where you encountered the issue. Link it below if using an external file service.

Imagine you own a fast food restaurant. You are measuring completed orders per hour, similar to frames per second (FPS). You also calculate the total staff busy percentage. This includes fry station, drink station, burger station, salad, cleanup, etc. That’s your CPU/GPU %.

Initially, each car is ordering one meal simple meal. All the employees are lightly busy but they’ve got a little time to relax as the order is taken or handed over. Let’s say 30% CPU/GPU usage. Let’s say that you are able to get 165 cars through an hour. So 165 FPS.

Lunch hits and each car is now ordering multiple meals. Your orders per hour (FPS) actually declines because each order is more complicated. Maybe now 100 FPS. But, the staff is working harder, so 55% CPU/GPU usage.

At some point, each car is now ordering so many meals that it exceeds the rate at which fries can be made. Each order is waiting on fries. Your orders per hour (FPS) declines because each order contains so many fries and you are waiting on fries. However, the rest of the staff has nothing to do after they complete their job (take the order, make burgers, make drinks, wait wait wait wait wait for fries, deliver the order). So total CPU/GPU usage actually drops a little.

Let’s compare that to AOE2. You have a CPU/GPU that is capable of working on multiple things in parallel, just like the staff of a fast food restaurant. However, if the villager pathing code (fries) is so busy that the rest of the CPU/GPU is waiting on it, then the total CPU/GPU usage will drop and the frame rate will drop.

2 Likes

Why wouldn’t more people just start making fries? 11

You’re saying one major aspect of the game is one thread, and one logical processor on my CPU is at 100% and the others are much lower? I’ll have to check but I don’t think that is the case.

Either way seems kind of like a bug, I don’t think this behaviour is normal in other games.

one logical processor on my CPU is at 100% and the others are much lower?

Yes, for the most part. In the following image, notice one of my logical processors goes from 20% to almost 100% (unsteady) when the AOE2 benchmark test starts. My FPS dropped from 144 to 75 during benchmarking.

In the lower-left corner, notice the dip in GPU usage when the loading screen was shown. Then, when the benchmark begins, even though the FPS dropped, the GPU is ever-so-slightly less busy because the bottlenecked CPU thread (fries) is unable to serve as many frames for the GPU to draw.

In order to spread the heat evenly in the physical chip, a thread can move to different logical processors during usage. So, you can’t always rely on the Task Manager chart to see if a thread is maxed out.

Instead, I recommend Microsoft’s free Process Explorer utility. After installing and running Process Explorer, simply find AOE2DE_s.exe in Process Explorer’s list, right click, choose Properties. Then click the Threads tab. Now you can see that AOE2 has plenty of threads, but usually only one or two get maxed out.

(On a 20 core CPU, a maxed out thread is 1/20 = 5%. In the above example, 4.94 and 4.90 are basically maxed out.)

When those two threads are maxed out, the rest of the computer may be LESS busy because it is waiting to work on the output of those threads.

1 Like

There’s been discussions of this in the past, but don’t know that it’s ever been filed as a bug report, though… so that sounds good. I’d have to imagine they’re tracking it already internally as something to try and fix someday, but you never know. (I don’t know if it’s in the official forum bug list either)

Here’s a thread in the Discussion area, for example, if curious to see:

It would be wonderful if it someday used all cores, etc.

Ok makes sense, thanks for the detailed post.