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

🧠 Componente: Memória RAM. Problemas de memória manifestam-se como lentidão progressiva, elevado uso de disco (paging) ou crashes súbitos. Em VMs, a memória dinâmica do hypervisor adiciona uma camada extra de diagnóstico. Este artigo cobre todos os passos — de uma leitura rápida com o Task Manager à análise do pagefile com PowerShell.

Quando suspeitar de problema de memória?

  • Sistema fica progressivamente mais lento ao longo do tempo (sem reinício)
  • Disco com atividade constante mesmo sem operações explícitas (paging para disco)
  • Aplicações ficam lentas após horas de uso mas rápidas após reinício
  • Task Manager mostra RAM “In Use” acima de 90% de forma persistente
  • Erros de “Out of memory” em aplicações

1. Verificação Rápida com PowerShell

Executar no PowerShell como Administrador para uma leitura imediata:

Get-WmiObject Win32_OperatingSystem | Select-Object `
    @{N='TotalRAM_GB'; E={[math]::Round($_.TotalVisibleMemorySize/1MB,2)}},
    @{N='FreeRAM_GB';  E={[math]::Round($_.FreePhysicalMemory/1MB,2)}},
    @{N='Used%';       E={[math]::Round((($_.TotalVisibleMemorySize - $_.FreePhysicalMemory)/$_.TotalVisibleMemorySize)*100,1)}}
🔴 Alerta: Se Used% for superior a 90% de forma persistente, a VM está em pressão de memória real e recorrerá frequentemente ao ficheiro de paginação (pagefile.sys), degradando o desempenho de disco.

2. Task Manager — Análise Visual de Memória

No separador Performance → Memory do Task Manager:

  • In Use — memória efetivamente usada por processos e kernel
  • Available — memória livre para uso imediato (standby + free)
  • Committed — memória virtual reservada; se muito superior à RAM física, há paging intenso
  • Cached — dados de disco em cache (comportamento normal e saudável)

No separador Processes: ordenar pela coluna Memory (Private Working Set) para ver os maiores consumidores de RAM.

💡 Dica: O campo Committed mostra o total de memória virtual reservada pelo sistema. Um valor de Committed de 8 GB numa VM com 4 GB de RAM significa que 4 GB estão mapeados para o pagefile — indicador claro de insuficiência de RAM.

3. Performance Monitor — Contadores de Memória

Abre com Win+R → perfmon.exe. Clica em + para adicionar os seguintes contadores:

Contador O que mede Limiar de alerta
\Memory\Available MBytes Memória disponível para novos processos < 200 MB (em VMs com 4 GB)
\Memory\Pages/sec Páginas lidas/escritas do disco por segundo (paging) > 20 de forma contínua = falta de RAM
\Memory\Page Faults/sec Hard page faults = acesso a páginas em disco Valores elevados e sustentados
\Memory\Pool Nonpaged Bytes Memória de kernel não paginável Crescimento contínuo = leak de driver
\Memory\Pool Paged Bytes Memória de kernel paginável Crescimento anormal
\Paging File(_Total)\% Usage Percentagem do pagefile em uso > 50% indica RAM insuficiente
\Process(*)\Working Set Memória física usada por cada processo Identificar processos com crescimento contínuo
🔴 Alerta crítico: Pages/sec acima de 20 de forma persistente é o indicador mais claro de que o sistema está a paginar ativamente para disco — o desempenho será gravemente degradado pois o acesso a disco é 100–1000x mais lento que o acesso à RAM.

4. Identificar Processos com Maior Consumo de RAM

# Top 15 processos por memória física (Working Set)
Get-Process | Sort-Object WorkingSet64 -Descending | Select-Object -First 15 `
    Name, Id,
    @{N='WorkingSet_MB'; E={[math]::Round($_.WorkingSet64/1MB,1)}},
    @{N='VirtualMem_MB'; E={[math]::Round($_.VM/1MB,1)}} |
    Format-Table -AutoSize

Prestar atenção a processos cujo WorkingSet_MB cresce continuamente ao longo do tempo sem ser libertado — sinal de memory leak.


5. Análise do Ficheiro de Paginação (Pagefile)

# Configuração atual do pagefile
Get-WmiObject Win32_PageFileSetting | Select-Object Name, InitialSize, MaximumSize
# Uso atual e pico histórico
Get-WmiObject Win32_PageFileUsage | Select-Object `
    Name,
    @{N='UsedMB';  E={$_.CurrentUsage}},
    @{N='PeakMB';  E={$_.PeakUsage}}
💡 Dica: Um PeakUsage muito elevado no pagefile indica que a VM opera regularmente com memória insuficiente, mesmo que no momento da verificação pareça normal. Considerar aumentar a RAM atribuída à VM ou otimizar as aplicações com maior consumo.

A configuração recomendada para ambientes de servidor é deixar o Windows gerir o pagefile automaticamente (System managed size), ou defini-lo com um mínimo de 1,5× a RAM e máximo de 3× a RAM.


6. Windows Memory Diagnostic — Teste de Integridade de RAM

Para descartar corrupção física de RAM:

  1. Win+R → mdsched.exeRestart now and check for problems
  2. O sistema reinicia e executa testes de integridade à RAM física (demora 10–20 minutos)
  3. Após o reinício, os resultados aparecem no Event Viewer → Windows Logs → System, fonte MemoryDiagnostics-Results
# Ver resultados do Memory Diagnostic no PowerShell
Get-EventLog -LogName System -Source MemoryDiagnostics-Results -Newest 5
⚠️ Nota: O Windows Memory Diagnostic é mais relevante em servidores físicos ou VMs com memória dedicada (pass-through). Em VMs com memória dinâmica (Dynamic Memory no Hyper-V), os resultados podem não refletir problemas do layer de virtualização.

7. Checklist — Diagnóstico de Memória

  • Available MBytes no PerfMon — abaixo de 200 MB?
  • Pages/sec — acima de 20 de forma contínua?
  • Committed no Task Manager — muito superior à RAM total?
  • ✅ Top processos por WorkingSet — algum cresce continuamente?
  • ✅ PeakUsage do pagefile — foi atingido o máximo configurado?
  • Pool Nonpaged Bytes — crescimento contínuo sem reinício? (leak de driver)

Este artigo foi útil?

Duarte Spínola

Deixe um Comentário