Monitorar e analisar a Memória Virtual do Windows

Hoje surgiu uma pergunta no TechNet sobre a possibilidade de verificar a memória virtual do windows e sua utilização atual. Pelo perfmon do Windows é possivel, mas lembrei de um script que usei há um bom tempo atrás, que é bem simples, rápido e direto ao ponto.

O script é:

‘ Usage: cscript.exe Virtual_MemCheck.vbs [REMOTESRV] [THRESHOLD]
‘ [REMOTESRV] NetBIOS, FQDN or IP address to Remote server
‘ [THRESHOLD] Minimum percent Free Virtual Memory

Option Explicit
Const THRESHOLD_EXCEEDED = 1, PASS = 0, INVALID_PARAMS = -1, OBJECT_NOT_INITIALIZED = -2
Dim lstArgs, REMOTESRV, THRESHOLD, objWMIService, resultSetSWbemObject, element
Set lstArgs = WScript.Arguments
If lstArgs.Count = 2 Then
REMOTESRV = Trim( lstArgs( 0 ))
THRESHOLD = Trim( lstArgs( 1 ))
Else
WScript.Echo ” Usage: cscript.exe Virtual_MemCheck.vbs [REMOTESRV] [THRESHOLD]”
WScript.Echo vbTAB & “[REMOTESRV] NetBIOS, FQDN or IP address to Remote server”
WScript.Echo vbTAB & “[THRESHOLD] Percent Free Virtual Memory”
WScript.Quit( INVALID_PARAMS )
End If
Set objWMIService = GetObject(“winmgmts:\\” & REMOTESRV & “\root\CIMV2”)
If( IsEmpty( objWMIService ) = True ) Then
WScript.Echo( “OBJECT_NOT_INITIALIZED :: WMI ResultSet ” )
WScript.Quit( OBJECT_NOT_INITIALIZED )
End If
Set resultSetSWbemObject= objWMIService.ExecQuery(“SELECT * FROM Win32_OperatingSystem”)
For Each element In resultSetSWbemObject
WScript.Echo( “Free Virtual Memory Size in KBytes: ” & element.FreeVirtualMemory )
WScript.Echo( “Total Virtual Memory Size in KBytes: ” & element.TotalVirtualMemorySize )
WScript.Echo( “Virtual Memory Free %: ” & 100*element.FreeVirtualMemory/element.TotalVirtualMemorySize )
WScript.Echo( “Threshold %: ” & THRESHOLD )
If( CDbl( 100*element.FreeVirtualMemory/element.TotalVirtualMemorySize ) >= CDbl( THRESHOLD )) Then
WScript.Echo( “Threshold not exceeded” )
WScript.Quit( PASS )
Else
WScript.Echo( “THRESHOLD EXCEEDED” )
WScript.Quit( THRESHOLD_EXCEEDED )
End If
Next

Para executar este script VBS, basta utilizar o cscript e o parametro [server] e [threshold].

Veja:

D:\>cscript mem.vbs localhost 10
Microsoft (R) Windows Script Host Version 5.8
Copyright (C) Microsoft Corporation. All rights reserved.

Free Virtual Memory Size in KBytes: 2041476
Total Virtual Memory Size in KBytes: 4676704
Virtual Memory Free %: 43.6520250159086
Threshold %: 10
Threshold not exceeded

A sintaxe é simples, localhost é o server que quero consultar, no caso, o localhost e o 10 é a quantidade (em %) de utilização do pagefile.sys disponível – o retorno do threshold é apenas para saber se o valor informado foi ou não excedido. Se eu consultasse 50, daria como exceded.

Veja:

D:\>cscript mem.vbs localhost 50
Microsoft (R) Windows Script Host Version 5.8
Copyright (C) Microsoft Corporation. All rights reserved.

Free Virtual Memory Size in KBytes: 2048212
Total Virtual Memory Size in KBytes: 4676704
Virtual Memory Free %: 43.79605807851
Threshold %: 50
THRESHOLD EXCEEDED

A Thread do TechNet pode ser conferida aqui

[ ] ´s e até a próxima!!

Anúncios

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s