High “System” CPU and sluggish response after connecting eGPU

Posted on

QUESTION :

When I connect a Lenovo laptop with embedded Intel Graphics to an eGPU dock (Nvidia) which drives all monitors, the CPU usage remains high with the kernel (“System”) always consuming more than 8% CPU.

Using procexp to view the kernel threads, I can see a number of simultaneous calls to PoFxReportDevicePoweredOn, which makes me suspect a misbehaving driver. Guessing random drivers to disable, though, did not locate the issue.

How can I locate the misbehaving driver?

ANSWER :

You can run an xperf trace to capture driver power events with:

C:> xperf.exe -start power_session -on Microsoft-Windows-Kernel-Power
C:> timeout 15
C:> xperf.exe -stop power_session
C:> xperf.exe -i c:user.etl > c:power_log.txt
C:> start c:power_log.txt

Search the log for lines starting with Microsoft-Windows-Kernel-Power/Irp/win:Start and ending with 0 (which represents a transition to D0 power state). Whatever is calling PoFxReportDevicePoweredOn will have it’s device path listed.

Microsoft-Windows-Kernel-Power/Irp/win:Start,  TimeStamp,     Process Name ( PID),   ThreadID, CPU, etw:ActivityId, etw:Related ActivityId, etw:UserSid, etw:SessionId, Irp, PowerStateType, MinorFunction, TargetDevice, InstanceNameLength, InstanceName, PowerState
Microsoft-Windows-Kernel-Power/Irp/win:Start,      15417,        "Unknown" (   4),         20,   2, , , , , 0xffffaa0804fb1c20, 1, 2, 0xffffaa07fd742ca0, 60, "PCIVEN_8086&DEV_5917&SUBSYS_225917AA&REV_073&11583659&0&10", 0
Microsoft-Windows-Kernel-Power/Irp/win:Start,      93924,        "Unknown" (   4),        660,   1, , , , , 0xffffaa0804fb1c20, 1, 2, 0xffffaa07fd742ca0, 60, "PCIVEN_8086&DEV_5917&SUBSYS_225917AA&REV_073&11583659&0&10", 3
Microsoft-Windows-Kernel-Power/Irp/win:Start,     442694,        "Unknown" (   4),         20,   0, , , , , 0xffffaa0804fb1c20, 1, 2, 0xffffaa07fd742ca0, 60, "PCIVEN_8086&DEV_5917&SUBSYS_225917AA&REV_073&11583659&0&10", 0
Microsoft-Windows-Kernel-Power/Irp/win:Start,     506018,        "Unknown" (   4),        660,   0, , , , , 0xffffaa0804fb1c20, 1, 2, 0xffffaa07fd742ca0, 60, "PCIVEN_8086&DEV_5917&SUBSYS_225917AA&REV_073&11583659&0&10", 3
Microsoft-Windows-Kernel-Power/Irp/win:Start,     856490,        "Unknown" (   4),         20,   3, , , , , 0xffffaa0804fb1c20, 1, 2, 0xffffaa07fd742ca0, 60, "PCIVEN_8086&DEV_5917&SUBSYS_225917AA&REV_073&11583659&0&10", 0
Microsoft-Windows-Kernel-Power/Irp/win:Start,     934942,        "Unknown" (   4),        660,   0, , , , , 0xffffaa0804fb1c20, 1, 2, 0xffffaa07fd742ca0, 60, "PCIVEN_8086&DEV_5917&SUBSYS_225917AA&REV_073&11583659&0&10", 3
Microsoft-Windows-Kernel-Power/Irp/win:Start,    1296908,        "Unknown" (   4),         20,   6, , , , , 0xffffaa0804fb1c20, 1, 2, 0xffffaa07fd742ca0, 60, "PCIVEN_8086&DEV_5917&SUBSYS_225917AA&REV_073&11583659&0&10", 0
Microsoft-Windows-Kernel-Power/Irp/win:Start,    1377503,        "Unknown" (   4),        660,   0, , , , , 0xffffaa0804fb1c20, 1, 2, 0xffffaa07fd742ca0, 60, "PCIVEN_8086&DEV_5917&SUBSYS_225917AA&REV_073&11583659&0&10", 3
Microsoft-Windows-Kernel-Power/Irp/win:Start,    1724611,        "Unknown" (   4),         20,   3, , , , , 0xffffaa0804fb1c20, 1, 2, 0xffffaa07fd742ca0, 60, "PCIVEN_8086&DEV_5917&SUBSYS_225917AA&REV_073&11583659&0&10", 0

You can get the description of the device with Get-PnPDevice:

PS C:WINDOWSsystem32> Get-PnPDevice 'PCIVEN_8086&DEV_5917&SUBSYS_225917AA&REV_073&11583659&0&10'

Status     Class           FriendlyName                                                                     InstanceId
------     -----           ------------                                                                     ----------
OK         Display         Intel(R) UHD Graphics 620                                                        PCIVEN_...

In my case, the culprit was “Intel(R) UHD Graphics 620”, which was rapidly transitioning between D3 (sleep) and D0 (powered on). Since the eGPU was driving all displays, I disabled the Intel graphics driver in Device Manager, and the problem ceased.

I had the same problem, which was fixed with the following workaround:

in the NVIDIA Control Panel, under Manage 3d Settings, configure one of the applications you are usually running to use NVIDIA GPU.

This will prevent the GPU switches to power save mode and wake up permanently.

I found this workaround in this thread:
https://answers.microsoft.com/en-us/windows/forum/all/high-cpu-usage-by-process-called-system/0714de1f-8ee6-4b5a-928e-1f1989e12414

Leave a Reply

Your email address will not be published. Required fields are marked *