Wow 300ms is really long in terms of game performance. For gaming they could’ve gotten the desired result with like 50ms.
I wonder what kind of workloads that number was chosen for (a lot of productivity work is constant for minutes at a time) or if it’s instead based on hardware characteristics (like if it takes more power to clock down and back up than the power used to keep it up for 300ms)
It’s not that uncommon for games to stutter for 50 ms, e.g. when an async task on a worker thread takes too long and holds up the rest of the game, or when something needs loading. For a Unity-based game, garbage collection can block the main thread for that long if the developer wasn’t careful, too. It’s also only sampling every 10 ms rather than recording every power state change, so a game that takes less than 10 ms to actually do its processing has a decent chance of missing any sampling points for a while.
The exact quote from the mailing list is:
The
300 ms decay is sized so that a render thread which is only 50-80% busy
from periodic vsync and GPU-fence waits holds the boost across its whole
busy period at a couple of CPPC_REQ writes total, while an idle core
sheds the boost well before it can matter. The energy exposure of a wide
window is small because EPP only influences behavior in C0 and an idle
core sits in CC6 regardless. If folks want me to make these tunable I am
happy to expose them.
Wow 300ms is really long in terms of game performance. For gaming they could’ve gotten the desired result with like 50ms.
I wonder what kind of workloads that number was chosen for (a lot of productivity work is constant for minutes at a time) or if it’s instead based on hardware characteristics (like if it takes more power to clock down and back up than the power used to keep it up for 300ms)
It’s not that uncommon for games to stutter for 50 ms, e.g. when an async task on a worker thread takes too long and holds up the rest of the game, or when something needs loading. For a Unity-based game, garbage collection can block the main thread for that long if the developer wasn’t careful, too. It’s also only sampling every 10 ms rather than recording every power state change, so a game that takes less than 10 ms to actually do its processing has a decent chance of missing any sampling points for a while.
The exact quote from the mailing list is: