← Guia Completo: Diagnóstico de Desempenho em VMs Windows

💾 Componente: Disco. Em ambientes virtualizados, o disco é frequentemente o maior bottleneck. Storage partilhado (SAN, NAS, iSCSI) ou discos virtuais sobre-provisionados introduzem latências significativas. Este artigo cobre o diagnóstico completo — do Task Manager ao CHKDSK, passando pelos contadores PerfMon mais críticos.

Quando suspeitar de problema de disco?

  • Operações de leitura/escrita de ficheiros demoram muito mais que o habitual
  • Sistema lento mas CPU e RAM parecem normais — verificar iowait
  • Task Manager mostra “Disk” com latência acima de 20–50 ms
  • Cópias de ficheiros em rede ou local anormalmente lentas
  • Aplicações de base de dados com timeouts frequentes

1. Task Manager — Leitura Inicial de Disco

No separador Performance → Disk:

  • Observar velocidade de leitura e escrita em MB/s
  • Verificar o tempo de resposta (ms) — latência média das operações
  • Latência acima de 20 ms para disco de sistema ou 50 ms para discos secundários é problemática

No separador Processes: adicionar a coluna Disk I/O (clique com o botão direito no cabeçalho das colunas) para identificar os processos com maior atividade de disco.


2. Performance Monitor — Contadores Críticos de Disco

Abre com Win+R → perfmon.exe. Os contadores de disco a adicionar:

Contador O que mede Limiar de alerta
\PhysicalDisk(_Total)\Avg. Disk Queue Length Fila média de pedidos pendentes > 2 = bottleneck confirmado
\PhysicalDisk(_Total)\Avg. Disk sec/Read Latência média de leitura > 20 ms = alerta; > 50 ms = crítico
\PhysicalDisk(_Total)\Avg. Disk sec/Write Latência média de escrita > 20 ms = alerta; > 50 ms = crítico
\PhysicalDisk(_Total)\% Disk Time % do tempo em que o disco está ocupado > 80% sustentado
\PhysicalDisk(_Total)\Disk Reads/sec Operações de leitura por segundo (IOPS read) Comparar com especificação do disco
\PhysicalDisk(_Total)\Disk Writes/sec Operações de escrita por segundo (IOPS write) Comparar com especificação do disco
\PhysicalDisk(_Total)\Disk Read Bytes/sec Throughput de leitura Comparar com largura de banda máxima
\LogicalDisk(C:)\% Free Space Espaço livre no volume < 10% degrada performance NTFS
🔴 Indicador mais importante: Avg. Disk Queue Length persistentemente acima de 2 é o sinal mais claro de saturação de I/O — o disco não consegue processar os pedidos tão rápido quanto chegam. Em storage SAN/NAS, verificar latência da rede de armazenamento.

3. PowerShell — Latência em Tempo Real

# Latência e fila de I/O em tempo real (10 amostras, 2s de intervalo)
Get-Counter `
    '\PhysicalDisk(_Total)\Avg. Disk sec/Read',
    '\PhysicalDisk(_Total)\Avg. Disk sec/Write',
    '\PhysicalDisk(_Total)\Avg. Disk Queue Length' `
    -SampleInterval 2 -MaxSamples 10 |
    ForEach-Object {
        $_.CounterSamples | Select-Object Path, @{N='Value';E={[math]::Round($_.CookedValue,4)}}
    }
# Espaço em todos os volumes locais
Get-WmiObject Win32_LogicalDisk | Where-Object {$_.DriveType -eq 3} |
    Select-Object DeviceID,
        @{N='Total_GB'; E={[math]::Round($_.Size/1GB,2)}},
        @{N='Free_GB';  E={[math]::Round($_.FreeSpace/1GB,2)}},
        @{N='Free%';    E={[math]::Round($_.FreeSpace/$_.Size*100,1)}} |
    Format-Table -AutoSize

4. CHKDSK — Verificação de Integridade do Sistema de Ficheiros

Abrir CMD como Administrador:

:: Verificar erros sem corrigir (modo leitura — não requer reinício)
chkdsk C: /scan
:: Verificação completa com correção (requer reinício para partição de sistema)
chkdsk C: /f /r
# Ver resultados após reinício no PowerShell
Get-EventLog -LogName Application -Source Chkdsk -Newest 5 |
    Select-Object TimeGenerated, Message
⚠️ Atenção: O parâmetro /r verifica setores defeituosos (bad sectors) e pode demorar várias horas em discos grandes. Usar apenas quando há suspeita de danos físicos ou erros recorrentes de disco nos logs do sistema.

5. SMART — Estado de Saúde do Disco

# Verificar estado SMART via WMI
Get-WmiObject -Namespace root\wmi -Class MSStorageDriver_FailurePredictStatus |
    Select-Object InstanceName, PredictFailure, Reason

Se PredictFailure = True, o disco reporta iminência de falha — planear substituição imediata e fazer backup urgente.

Para análise SMART detalhada, usar o CrystalDiskInfo (gratuito) que apresenta todos os atributos SMART em formato legível.


6. Identificar Processos com Maior I/O — Process Monitor

  1. Descarregar Process Monitor (procmon.exe) das Sysinternals
  2. Executar como Administrador — o rastreio inicia automaticamente
  3. Filtrar: Filter → Filter → Operation → is → ReadFile → Add (repetir para WriteFile)
  4. Ordenar pela coluna Duration para identificar as operações mais lentas
  5. Menu Tools → File Summary — mostra os ficheiros com maior atividade de I/O
💡 Dica: No Process Monitor, ir a Tools → File Summary imediatamente após capturar 1-2 minutos de atividade. Identifica instantaneamente os “hot files” — os ficheiros com maior número de acessos e o processo responsável.

7. WinSAT — Benchmark de Disco

:: Executar benchmark de disco (demora ~2 minutos)
winsat disk -drive c

O resultado inclui velocidades de leitura/escrita sequencial e aleatória. Comparar com as especificações do disco virtual para identificar degradação de performance ao longo do tempo.


8. Checklist — Diagnóstico de Disco

  • ✅ Task Manager → Disk: latência acima de 20 ms?
  • ✅ PerfMon: Avg. Disk Queue Length acima de 2?
  • ✅ PerfMon: Avg. Disk sec/Read e /Write — valores em ms?
  • ✅ Espaço livre em todos os volumes — abaixo de 10%?
  • chkdsk /scan — erros de sistema de ficheiros?
  • ✅ SMART: PredictFailure = True em algum disco?
  • ✅ Process Monitor: qual processo gera mais I/O?

Este artigo foi útil?

Duarte Spínola

Deixe um Comentário