none
Stolen Server Memory x Total Server Memory RRS feed

  • Pergunta

  • Bom dia galera.

    Estou realizando um estudo sobre o gerenciamento de memoria do SQL Server em especifico 2012.

    Bom eu gostaria de saber sobre as proporções do  Stolen memory, segue um exemplo de uma instancia que administro.

    Target Server Memory = 85 GB

    Total Server Memory = 85 GB

    Database Cache Memory = 69 GB

    Stolen Server Memory = 16 GB

    Free Memory = 0

    Bom entendo que a composição do BP seja a soma do (Database Cache Memory + Stolen Server Memory + Free Memory) isto é o que esta sendo controlado pelo MAX Memory.

    A duvida é tem alguma recomendação ou medida que eu possa saber a proporção do Stolen memory sobre o Cache, como no exemplo a cima tenho mais ou menos  81% para cache e 19% para Stolen, seria uma boa proporção? Entendo que se o Stolen começar a roubar muita memoria do Cache estou tendo uma pressão de memoria, porém gostaria de saber se é uma boa metrica olhar para esses dois caras e como saber o valor ideal para os dois, sei que tem outros contadores que iram me dar mais detalhes como PLE e Cache Hit ratio, mas com base nesses dois caras posso dizer que estou sobre pressão ou posso saber se eu adicionar mais memoria irá melhorar ?

    Espero ter sido o mais claro possível na minha duvida, se alguem tiver alguma recomendação ou indicação.

    Agradeço desde já.

    Att

    Reginaldo Silva

    quinta-feira, 13 de agosto de 2015 13:03

Respostas

  • Olá Reginaldo,

    Infelizmente não existe formula para determinar esses fatores, a variação é muito grande para cada ambiente, o que você pode fazer é trabalhar em um ambiente de testes para estressar esse seu ambiente e buscar por padrões de problemas de memória... 

    A variação é tão grande, para você ter uma ideia, que hoje nem se fala mais em um valor recomendado para PLE... A recomendação antiga para sistemas 32bits era de acima de 300 milissegundos e nem se quer existe uma recomendação atualizada para isso. Se ainda hoje, com a quantidade de memória disponível, você não conseguir manter o servidor acima disso, pode representar um probleminha sim. O importante é se manter dentro do que é recomendado

    Quanto a pressão de memória, sugiro fazer como falei, tente estressar o ambiente e busque por padrões de pressão de memória ou erros relacionados no log de erros do SQL Server, teste diferentes padrões de Max Server e Min Server memory, verifique se existe paginação e etc... Pelos dados que você compartilhou eu não diria que isso se trata de memory pressure a menos que tenha algum erro ou lentidão!

    • Sugerido como Resposta Leoferreira quinta-feira, 13 de agosto de 2015 17:17
    quinta-feira, 13 de agosto de 2015 17:14

Todas as Respostas

  • Olá Reginaldo,

    Infelizmente não existe formula para determinar esses fatores, a variação é muito grande para cada ambiente, o que você pode fazer é trabalhar em um ambiente de testes para estressar esse seu ambiente e buscar por padrões de problemas de memória... 

    A variação é tão grande, para você ter uma ideia, que hoje nem se fala mais em um valor recomendado para PLE... A recomendação antiga para sistemas 32bits era de acima de 300 milissegundos e nem se quer existe uma recomendação atualizada para isso. Se ainda hoje, com a quantidade de memória disponível, você não conseguir manter o servidor acima disso, pode representar um probleminha sim. O importante é se manter dentro do que é recomendado

    Quanto a pressão de memória, sugiro fazer como falei, tente estressar o ambiente e busque por padrões de pressão de memória ou erros relacionados no log de erros do SQL Server, teste diferentes padrões de Max Server e Min Server memory, verifique se existe paginação e etc... Pelos dados que você compartilhou eu não diria que isso se trata de memory pressure a menos que tenha algum erro ou lentidão!

    • Sugerido como Resposta Leoferreira quinta-feira, 13 de agosto de 2015 17:17
    quinta-feira, 13 de agosto de 2015 17:14
  • Boa tarde Leo,

    Muito obrigado pela sua atenção;

    Sim acredito que nesse exemplo que passei a instancia operava sem nenhum pressão de memoria, eu realmente gostaria de saber se existia alguma recomendação para estes contadores.

    Referente ao PLE eu li um artigo do Paul Randal onde ele explicava bem essa situação.

    http://www.sqlskills.com/blogs/paul/page-life-expectancy-isnt-what-you-think/

    Bom vou tentar montar um ambiente de testes para realizar esse stress e analisar esses fatores.

    Estou na luta para entender o Memory manager do SQL Server, aproveitando estou buscando algo sobre os non-BufferPool, sabe se existe alguma maneira de medir esse cara ou algum artigo que explique bem sobre ele, até onde eu sei ele são processos que consomem memoria fora do BufferBool ele não é controlado pelo Max memory como DLLs, threads,Linked Servers... gostaria de saber o quanto esse cara consome a mais.

    Obrigado desde já.

    Att

    Reginaldo Silva

    quinta-feira, 13 de agosto de 2015 18:12
  • Olá Reginaldo,

    Não tem nem o que discutir quanto ao artigo do sqlskills, se "O CARA" falou então está certo haha.

    Sobre documentos para você se aprofundar eu até tenho alguns bons mas estão espalhados entre favoritos e arquivos e vai me tomar muito tempo para encontrar... De uma olhada nesse link acho que vai te ajudar:

    SQLOS's memory manager and SQL Server's Buffer Pool


    sexta-feira, 14 de agosto de 2015 14:17