Como outros já apontaram, podemos ver nessa captura de tela que a CPU que está trabalhando tanto está gastando todo o seu tempo no modo kernel. (A cor vermelha.)
Executando o Powershell como administrador, digite:
Get-Process | Select Name, PrivilegedProcessorTime | `
Sort-Object PrivilegedProcessorTime -Descending
O processo no topo da lista é o processo atualmente usando o tempo de CPU com mais kernel no momento. Se esse processo não for "Sistema", você acabou de descobrir qual processo do modo de usuário está causando esse uso da CPU. Se o processo com o maior tempo de processador privilegiado for System, que eu suspeito que seja, será um pouco mais complicado.
Abra o Process Explorer. Opcionalmente, configure seu servidor de símbolos. Verifique se você está executando com elevação total do UAC. Clique com o botão direito do mouse no "processo" do sistema e vá para Propriedades. Em seguida, vá para a guia Threads. Classifique os threads por uso da CPU. O thread que está causando todo esse trabalho no modo kernel deve estar aqui. Se você observar o módulo listado em Endereço inicial, ele deverá fornecer uma pista sobre o que o trabalho está relacionado. Se for NDIS.sys, por exemplo, esse é um driver de interface de rede. Se você configurar o servidor de símbolos, deverá ver o nome de uma função dentro de um módulo (a menos que o módulo não seja da Microsoft); caso contrário, verá apenas um deslocamento numérico do endereço inicial do módulo.
Como alternativa, use o Xperf do Windows Performance Toolkit para criar perfil de interrupções, DPCs, etc.
xperf -on PROC_THREAD+LOADER+DPC+INTERRUPT
e pare de gravar com xperf -d logfile.etl
O Xperf substitui a antiga ferramenta Kernrate e pode fornecer dados extremamente detalhados.
Quando uma CPU está trabalhando no modo kernel, geralmente executa rotinas de serviço de interrupção. (ISRs) Quando ocorre uma interrupção, o trabalho no modo de usuário é suspenso nesse processador e a CPU executa o ISR registrado para essa interrupção. Se você encontrar sua CPU gastando uma quantidade excessiva de tempo nessas interrupções, isso geralmente indica um driver de dispositivo com defeito que precisa ser atualizado.
O que me incomoda (sem trocadilhos) sobre esse cenário é que parece que qualquer thread do kernel que está fazendo isso parece estar afinizada nesse único núcleo. Eu me pergunto por que o expedidor parece apenas agendar o thread para executar nesse núcleo aparentemente arbitrário. Portanto, tenho a sensação de que precisamos encontrar quem escreveu esse driver de dispositivo e mostrar a eles como executar DPCs encadeados, e não definir explicitamente uma afinidade nos encadeamentos do kernel, etc.