UNSOLVED

kalfy

updated

3 years ago

Closed

K

kalfy

1 Rookie

11 Posts

2

5061

March 29th, 2023 10:00

Force DWM.exe & Windows processes to use discrete GPU? Precision 5560 SLOW & unresponsive

I have a Dell Precision 5560 for work use which has an Intel UHD Graphics integrated GPU ("GPU 0") and also a NVidia RTX A2000 discrete GPU ("GPU 1"), and I've been having issues with the laptop being incredibly unresponsive and slow at times. It feels like an old Celeron processor running Windows 98 instead of an 11th gen Intel CPU laptop running Windows 11 with a usable RTX card. To the point that I don’t understand how this laptop is so expensive and supposedly high-specced for a business laptop – other laptops with similar CPU and RAM absolutely wipe the floor with it in terms of responsiveness in Windows UI and general work app usage.

 

I've tried a tonne of things to fix this over five months, I've done all the standard stuff like updated drivers, all Windows updates, optional Windows/driver updates, Dell SupportAssist app updates, and making sure the general laptop power settings are set to Performance instead of Balanced etc. Nothing has helped. There is no relevant BIOS setting for this laptop to switch GPUs. I've read other users having similar issues with Dell Precision laptops and laptops from other manufacturers who have had parts replaced and still faced the same issues, so I don't believe it's a hardware issue with my specific laptop. After reading up about the Precision 5560 model, it seems all graphics used on the laptop are funneled through the integrated graphics rather than having a separate route directly to the Nvidia GPU - hence no hardware switch. Despite that fact, the NVidia GPU having 0% usage in anything outside of a full-screen 3D app didn't seem right to me, because the GPU should still be able to be used even if it's funneled through the integrated graphics channel.

 

Today I remembered you can see which GPU is being called by apps and services in Task Manager. I found that when this happens at its worst, it seems to be because programs and services are calling the integrated GPU 0 in Task Manager resulting in a medium to very high % usage for GPU 0, meanwhile my CPU usage is low and % usage for the discrete GPU 1 is zero. In fact, GPU 1 never seemed to be called for anything while watching Task Manager.

 

I also today realised that the NVidia Control Panel settings for setting the preference of which GPU the laptop should use are pretty useless. I had set all the presets and app settings in that panel section to use the NVidia GPU but it seems they just get overwritten or overruled by Windows settings in Windows 11 pushing them back to using the integrated graphics instead. I found proof of this in Task Manager by the processes still calling GPU 0 after setting them otherwise in the NVidia Control Panel.

 

So I went into the Graphics Settings in Windows 11 and manually added as many system exes and Windows apps to the list of "Custom Options for apps" there, manually setting them all to High Performance to use discrete GPU 1 instead of integrated 0. Even a few apps which the settings menu said Windows recommended keeping on integrated graphics. I used Task Manager to find which processes were making calls to GPU 0 then used "Open file location", "Go to details" or "Search online" in Task Manager right-click menu to find out what the relevant .exe filename was for that process and where it was, before manually adding it in the Windows Graphics Settings options. Annoyingly for some apps I'd add the app settings then run the app and find it was still calling GPU 0 because the app actually had another exe process which needed to be individually added as well, making the process LONG. After adding them, I had to restart the app or in some cases reboot the laptop to be able to detect a change in the process now calling GPU 1 in Task Manager.

 

The above actually worked for a bunch of apps and processes which suddenly had significantly better responsiveness and were calling GPU 1 in Task Manager. I also noticed after doing this that I didn't get as many random instances of my laptop fan going crazy when doing very little (by 2023 standards) anymore, the fan seemed to be used less possibly indicating better thermals in the laptop by shifting some of the work to GPU 1 instead of GPU 0 handling it all. It's an absolute pain in the backside having to go these lengths just to get individual apps running better but this is the single thing I've found that helps.

 

But this didn't work for core Windows system processes or the general feel of the Windows UI as a whole - the Windows core processes and services still called GPU 0 despite being set to High Performance in Windows Graphics Settings.

 

One of the main processes which still seemed to be hogging a high %age of GPU 0 usage and slowing down the system is dwm.exe - Desktop Window Manager. Which I believe seems to handle the position of all windows on screen at any time - their location, movement and interaction with each other. So in other words, probably the most graphically intensive Windows system process which is constantly running in the Windows UI.

 

By using Task Manager to go to the process details of dwm.exe, I also noticed the "Username" column for dwm.exe is different from everything else. Instead of having the username of my admin login, it has it's own username of "DWM-1". In fact, all the apps, services and processes I had been able to successfully change to use GPU 1 in the Windows Graphics Settings were all listed under the "Username" of my own admin login name. Yet, all the apps where changing that setting had failed and was still somehow being overridden to use GPU 0 elsewhere, either had the username "SYSTEM" or "DWM-1". This would explain why adding dwm.exe and other core Windows processes to the Graphics Settings custom options didn't work - because they were being overridden by higher level "SYSTEM" domain settings forced by Windows.

 

So my question is - does anyone know how to get into the domain properties of "SYSTEM" or even just "DWM-1" to be able to set the GPU priority settings of those specific processes within those domains? Is that even possible? It seems like the only way to truly force discrete GPU usage for all apps and UI at a driver/software level instead of needing a hardware switch.

I would be happy to accept partial defeat and compromise if I can just get into DWM-1 and make dwm.exe use GPU 1 instead of GPU 0, and leave the SYSTEM processes alone.

 

Side note - I also went into the Nvidia Control Panel options and set the Power Management Mode for all presets and app settings to "Performance Preferred" wherever possible, to make sure that wasn't bottlenecking the system. While this didn't fix any performance issues by itself, it did seem to fix a minor glitch I had within Edge browser after setting msedge.exe and msedgewebview2.exe to High Performance in Windows Graphics Settings.