🎉 Celebrating 25 Years of GameDev.net! 🎉

Not many can claim 25 years on the Internet! Join us in celebrating this milestone. Learn more about our history, and thank you for being a part of our community!

Performance degradation over time

Started by
4 comments, last by _void_ 3 years, 5 months ago

Hey guys,

I have a simple app where I render a textured quad using Vulkan. I can see that at the start of the application the time taken by the render frame is around 0.016 ms. After around 8 seconds of running, the spent time goes up to 0.121 ms. It is almost 10 times! It does not jump immediately to 0.121 ms but it does gradually over 8 seconds.

I am using Vulkan 1.2 and running on GTX 1070. To measure the time, I am using Vulkan timestamp queries. I noticed the issue on NVIDIA's driver released in Decemeber 2020. I have updated to the latest driver version and the behaviour is the same.

Edit: I have also taken a series of captures with NSight and it shows 0.02 ms for all trials.

Have you seen this behaviour before? Do you have suggestions how to troubleshoot the issue?

Thanks!

Advertisement

I'd guess, you are micro-benchmarking a near empty loop, where some tiny driver overhead shows up. I'd suggest coming back when you have enough content so you are above 10ms, as then you do enough to be able to optimize and it actually might start getting useful to optimize.

16 micro seconds is a very busy loop utilizing GPU and CPU in a full scale. I'd say they heat up and either OS or HW underclock one of them after enough time/heat accumulates in chip.

Your GPU is probably getting downclocked. Nsight will lock the clocks for your automatically when you profile to keep them stable. There's no Vulkan API for doing that, but you can use this or just spin up a D3D12 device to call SetStablePowerState (assuming you're running on Windows 10).

Using SetStablePowerState does mitigate the issue. Thank you guys for the help!

This topic is closed to new replies.

Advertisement