Usando o Process Explorer para mostrar limites de Paged e Non Paged Pool

O Kernel do Windows possui duas areas onde os drivers são armazenados de vital importância para a estabilidade e performance do sistema operacional.

Estas areas são chamadas de PAGED POOL (pode ser armazenado no pagefile), e Non Paged Pool estes ficando exclusivamente na memoria RAM.

Dependendo de alguns fatores do hardware, memoria RAM disponivel e chaves de registro (“Memory Management”), são definidos os tamanhos limites dos POOLs.

Você deve ficar sempre atento a utilização de sua memoria em kernel,observando o valor atual e o limite, quando o valor atual alcançar o limite, o sistema operacional ficara instavel e você recebera erros ao realizar diversas operações basicas.

O Process Explorer (Ferramenta da Microsoft/SysInternals), disponivel em https://live.sysinternals.com, facilita verificar os valores limites. Mas para isto é necessário uma configuração a qual explicarei abaixo. Ao baixar a ferramenta e executar (não é necessário instalação), acionando CTRL+I, uma tela System Information aparece, mas os limites dos pools, não aparecem, veja abaixo:

image

Para resolver este comportamento e fazer com que o Process Explorer consiga exibir os valores, é necessário configurar os símbolos, clicando em Options / Configure Symbols. É necessário alterar as duas linhas disponíveis, veja abaixo:

image

A primeira linha solicita a localização da DLL DBGHelp (por padrão ela é C:\windows\system32\dbghelp.dll), para seja possivel o Process Explorer automaticamente baixar da internet o arquivo de simbolo, é necessario alterar o valor da DBGHelp, pela versão que acompanha o pacote WINDBG (neste exemplo C:\debuggers\dbghelp.dll) , disponivel no site da Microsoft. Na linha do Symbols path: digite SRV*C:\symbols*https://msdl.microsoft.com/downloads/symbols

PRONTO ! Agora você pode observar o limite e o valor corrente, veja novamente o System Information (CTRL+I).

image

Referência para limites máximos de Paged e Non-Paged Pool, lembre-se o valor limite é calculado no momento do boot.

image

Caso você não tenha conexão internet no servidor, continue lendo:

Os passos acima se fazem necessario igualmente, mas devido a você não ter acesso a internet, é necessario usar um utilitario do pacote WINDBG para gerar um arquivo TXT com o arquivo de simbolo necessario, e então em outro computador com acesso a internet você pode utiliza-lo para baixar e enfim levar o arquivo de simbolo para o servidor que nao possui conexão com a internet.

1. Baixe o Windbg

2. Instale o Windbg em c:\debuggers (ou outra pasta qualquer)

3. Execute no servidor: C:\debuggers\symchk.exe /om c:\Lista.txt /if c:\windows\system32\ntoskrnl.exe (Para sistemas com processador unico)

          Ou: c:\debuggers\symchk.exe /om c:\Lista.txt /if C:\WINDOWS\system32\dllcache\ntkrpamp.exe (Para sistemas multi-processor)

4. Execute em uma estação com Internet: C:\debuggers\symchk.exe /im c:\Lista.txt /s SRV*c:\Symbols*https://msdl.microsoft.com/download/symbols

5. Copie o diretorio C:\symbols da estação para o servidor com o Process Explorer e pronto ! Agora você também pode ver os valores limites do POOL.