DBCC MEMORYSTATUS (Parte II)

Continuando o artigo sobre o DBCC MEMORYSTATUS, comentaremos sobre o trecho que fala sobre os contadores globais de memória da máquina e do processo do SQL Server.

Process/System Counts:

 Process/System Counts                    Value                
---------------------------------------- -------------------- 
Available Physical Memory                          3808894976 
Available Virtual Memory                        8726174752768 
Available Paging File                             72376823808 
Working Set                                         569122816 
Percent of Committed Memory in WS                         100 
Page Faults                                           2837379 
System physical memory high                                 1 
System physical memory low                                  0 
Process physical memory low                                 0 
Process virtual memory low                                  0 

Identificamos a quantidade de memória disponível através dos contadores “AVAILABLE …”:

  • Available Physical Memory – Quantidade de memória RAM livre na máquina. Esse contador é extremamente importante e deve se manter constante.
  • Available Virtual Memory – Memória que pode ser reservada dentro do processo do SQL Server. Na plataforma 32-bits, a reserva de memória virtual era limitada a 2GB ou 3GB. Na plataforma 64-bits, esse valor sobe para 7 ou 8TB. Usualmente encontram-se valores entre 100-300kb nas máquinas 32-bits, e ignora-se esse valor nas máquinas 64-bits.
  • Available Paging File – Espaço disponível para alocação de “Committed Memory”, que inclui o arquivo de Page file disponível somada a memória RAM. Normalmente esse valor não é uma limitação para o SQL Server, mas pode impactar os processos do Sistema Operacional. Esse valor jamais deve chegar em zero, caso contrário, qualquer componente do Windows (inclusive o Cluster e a Kernel) pode falhar por falta de memória.

Um fator muito importante para se avaliar é a quantidade de memória alocada x memória RAM, que devem ser valores muito próximos. Esse fator está indicado por “Percent of Committed Memory in Working Set (WS)” e sempre que possível deve ser 100%. Se forem encontrados valores em torno de 50, isso indica que 50% da memória alocada para o SQL Server está em RAM e o demais em Page File, que é uma situação ruim.

SQL Server monitora continuamente o ambiente interno e externo através dos “sinais” chamados:

  • System physical memory high – Sistema Operacional apresenta muita memória disponível que pode ser utilizada pelo SQL Server
  • System physical memory low – Sistema necessita memória RAM e solicita que o SQL Server diminua o consumo do recurso
  • Process physical memory low – Os componentes internos do SQL Server necessitam rebalanceamento de memória
  • Process virtual memory low – O processo do SQL Server apresenta pouca memória virtual e futuras reservas podem falhar

A partir do SQL Server 2008, essas informações estão disponíveis em DMV.

[Nov/9] Agradeço aos comentários do Rodrigo por corrigir um erro do artigo: resultado de “Available Paging File” corresponde ao Committed Memory, e não exatamente ao arquivo do Page File. O conceito de Committed memory engloba tanto a memória RAM como o Page File, sendo igual a soma de ambos.