One of the benefits of Windows as a service is that we receive constant updates, security enhancements and additions to the OS. One of the new features in the 2004 build was the introduction of hardware accelerated GPU scheduling. For details on this new feature and some background on how the Windows Display Driver Model has evolved please read this excellent article.
In this post I will post my initial findings and thoughts on using the hardware acceleration feature with Microsoft Teams. Please note that this is not considered official guidance, but please do leave a comment below to let others know if this was useful or not.
Teams To The Forefront
Work has certainly change due to COVID-19 and Microsoft Teams forms a huge portion of our work day. An issue you may experience is that the Teams client consumes a lot of CPU resources on the local PC. This is especially true when you are doing a video call, and leveraging some of the advanced features. For example, Microsoft Teams has certain requirements for the background blur feature. The Teams client will also try and use hardware acceleration. This is not new, as web browsers and Office have also moved to use hardware acceleration to help performance. Not always with good results though.
Teams Client High CPU Consumption
Features are good, but they do consume resources. Chances are you are reading this if you are experiencing high CPU usage on your machine, or if you got a case from a user reporting the same issue.
There are a range of options which have been proposed:
- Update Microsoft Teams client to latest version
- Use Teams on the web - teams.microsoft.com
- Update device firmware & drivers, ensure that all display adapters are updated
- Update display dock drivers and firmware if you are using a dock to take advantage of multiple monitors
- Disable hardware acceleration in the Microsoft Teams client
Not all of those are great options, so since Nvidia released drivers for my laptop that supports the hardware accelerated GPU feature, I wanted to see how it changed my daily work.
Windows Hardware Accelerated GPU Scheduling
Previously you may have installed a control panel style of application from the video card vendor as part of their driver package, and you could use that vendor's app to control which GPU a particular process would execute on. This is now natively supported by Windows 10, and starting with the 2004 build you will find the option below in your graphic settings if the driver and hardware support the feature. Note that it is disabled by default, and you must enabled it. A restart is required.
You can find the option shown below by going to: Settings -> System -> Display -> Graphics Settings.
Enabling Teams for Hardware Accelerated GPU Scheduling
After restarting the machine, we can click the browse button to locate the application.
You choose whether you want to select a Modern app or a desktop application. You need to browse to the the relevant application.
Once imported, you chose if you want the application to have better power saving or performance.
In the example below, I have started to import the applications. At this point you are probably wondering why you cannot find Microsoft Teams in C:\Program Files. Well, that's because it does not install there, it is part of your user profile.
You should find Teams.exe here:
Restart the application so the changes can be applied.
By enabling the hardware accelerated GPU scheduling feature and moving the three applications I use the most (Outlook, Edge and Teams) I have to say that CPU load dropped considerably.
Previously when I was making a video call with other apps running in the background, my system CPU load was at least 80%. Applications were also sluggish during the call and it was frustrating to multi task and do other background activities.
The system remains fully responsive, and I've not run into any issues during the course of the last month.
Task Manager usage is similar to below when I have Outlook, Teams and a gazillion Edge tabs open.
There are some quick and simple checks you can make in Task Manager.
Task manager should show the GPU usage if the driver supports that, and on the Details tab there are additional GPU related columns that you can add to review how the apps are using the GPU resources. You will probably have to add those columns in to see them. For example: