Como otros ya han señalado, podemos ver en esa captura de pantalla que la CPU que está trabajando tan duro está pasando todo su tiempo en modo kernel. (El color rojo).
Ejecutando Powershell como administrador, escriba:
Get-Process | Select Name, PrivilegedProcessorTime | `
Sort-Object PrivilegedProcessorTime -Descending
El proceso en la parte superior de la lista es el proceso que actualmente utiliza la mayor cantidad de tiempo de CPU en modo kernel en este momento. Si ese proceso no es "Sistema", acaba de descubrir qué proceso de modo de usuario está causando el uso de esta CPU. Si el proceso con el mayor tiempo de procesador privilegiado es el sistema, que sospecho que es, entonces es un poco más complicado.
Abra el Explorador de procesos. Opcionalmente, configure su servidor de símbolos. Asegúrese de estar ejecutando con la elevación completa de UAC. Haga clic derecho en el "proceso" del sistema y vaya a Propiedades. Luego vaya a la pestaña Hilos. Ordenar los hilos por uso de CPU. El hilo que está causando todo este trabajo en modo kernel debería estar aquí. Si observa el módulo que figura en la Dirección de inicio, debería darle una pista de lo que está relacionado el trabajo. Si es NDIS.sys, por ejemplo, es un controlador de interfaz de red. Si configura el servidor de símbolos, debería ver el nombre de una función dentro de un módulo (a menos que el módulo no sea Microsoft), de lo contrario, verá un desplazamiento numérico desde la dirección de inicio del módulo.
Alternativamente, use Xperf del Kit de herramientas de rendimiento de Windows para perfilar interrupciones, DPC, etc.
xperf -on PROC_THREAD+LOADER+DPC+INTERRUPT
y deja de grabar con xperf -d logfile.etl
Xperf reemplaza la antigua herramienta Kernrate y puede proporcionarle datos extremadamente detallados.
Cuando una CPU está trabajando en modo kernel, está ejecutando principalmente rutinas de servicio de interrupción. (ISR) Cuando se produce una interrupción, el trabajo en modo de usuario se suspende en ese procesador y la CPU ejecuta el ISR registrado en esa interrupción. Si encuentra que su CPU pasa una cantidad excesiva de tiempo en estas interrupciones, eso generalmente indica un controlador de dispositivo defectuoso que debe actualizarse.
Sin embargo, lo que me molesta (sin juego de palabras) sobre este escenario es que parece que cualquier hilo del núcleo que esté haciendo esto parece estar afinado a ese núcleo. Me pregunto por qué el despachador parece estar programando solo el hilo para que se ejecute en ese núcleo aparentemente arbitrario. Por lo tanto, tengo la sensación de que necesitamos encontrar a quien escribió este controlador de dispositivo y mostrarles cómo hacer DPC roscados, y no establecer explícitamente una afinidad en los hilos del núcleo, etc.