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