🖥️ Componente: CPU. A contention de CPU é uma das causas mais comuns de lentidão em VMs Windows. Este artigo cobre todas as ferramentas nativas — do Task Manager ao PerfMon — com os contadores exatos a monitorizar e os comandos PowerShell prontos a executar.
Quando suspeitar de problema de CPU?
- Sistema geral lento mas disco e rede parecem normais
- Aplicações demoram a responder, especialmente ao abrir
- Ventoinhas do servidor em velocidade máxima (servidores físicos)
- Task Manager mostra CPU frequentemente acima de 80–90%
- Em VMs: o problema afeta toda a VM igualmente
1. Task Manager — Diagnóstico Visual Inicial
O primeiro passo é sempre o Task Manager. Abre com Ctrl+Shift+Esc.
2. Resource Monitor — Análise Aprofundada
Abre com Win+R → resmon.exe ou diretamente a partir do Task Manager (botão Open Resource Monitor no fundo do separador Performance).
- Separador CPU: expande cada processo para mostrar as handles e módulos DLL ativos.
- Coluna Average CPU — média dos últimos 60 segundos, mais representativa que o valor instantâneo.
- Coluna Status — processos em estado Suspended ou Not Responding indicam bloqueio.
3. Performance Monitor (PerfMon) — Contadores de CPU
Abre com Win+R → perfmon.exe. Navegas para Monitoring Tools → Performance Monitor e clicas em + para adicionar contadores.
Contadores essenciais a adicionar
| Contador | O que mede | Limiar de alerta |
|---|---|---|
\Processor(_Total)\% Processor Time |
Utilização global de CPU | > 90% sustentado |
\Processor(_Total)\% Privileged Time |
Tempo em modo kernel (drivers) | > 25% indica driver problemático |
\Processor(_Total)\% User Time |
Tempo em modo utilizador (apps) | Comparar com % Processor Time |
\Processor(_Total)\% Interrupt Time |
Interrupções de hardware | > 15% indica problema de driver/HW |
\Processor(_Total)\% DPC Time |
Deferred Procedure Calls | > 5% indica problema de driver |
\System\Processor Queue Length |
Processos à espera de CPU | > 2 por core = CPU bottleneck |
\System\Context Switches/sec |
Comutações de contexto | Valores muito elevados = excesso de threads |
Definir o intervalo de amostragem para 1 segundo e observar durante 5–10 minutos no período de degradação para capturar o padrão real.
4. PowerShell — Análise de CPU por Processo
Executar no PowerShell com privilégios de Administrador:
# Top 10 processos por CPU
Get-Process | Sort-Object CPU -Descending | Select-Object -First 10 Name, Id, CPU
# Monitorização contínua a cada 3 segundos (Ctrl+C para parar)
while ($true) {
Get-Process | Sort-Object CPU -Descending | Select-Object -First 5 Name, CPU, Id | Format-Table
Start-Sleep 3
Clear-Host
}
# CPU por processo via WMI (mais preciso)
Get-WmiObject Win32_PerfFormattedData_PerfProc_Process |
Sort-Object PercentProcessorTime -Descending |
Select-Object -First 10 Name, PercentProcessorTime, IDProcess |
Format-Table -AutoSize
5. Verificar Afinidade e Prioridade
# Ver prioridade de um processo (substituir <PID>)
Get-Process -Id <PID> | Select-Object Name, Id, PriorityClass, Responding
# Baixar prioridade de um processo problemático temporariamente
(Get-Process -Id <PID>).PriorityClass = 'BelowNormal'
6. Pontos de verificação rápida — Checklist CPU
- ✅ Task Manager → Processes ordenado por CPU — qual o top processo?
- ✅ PerfMon: Processor Queue Length acima de 2 por core?
- ✅ % Interrupt Time ou % DPC Time elevados? (problema de driver)
- ✅ O pico de CPU é contínuo ou periódico? (periódico → verificar Task Scheduler)
- ✅ Em VMs: verificar CPU steal no host (Hyper-V Manager → VM → Statistics)
- ✅ Antivírus: excluir temporariamente para verificar impacto no baseline
