Recentemente, migrei uma caixa física do SQL Server (2012) para o ESX (5.1) simplesmente para facilitar a administração. É e será o único convidado no servidor. Como esperado, houve um impacto marginal no desempenho que, na maioria das vezes, só é perceptível na inicialização. Aqui está o meu problema.
Percebi que, na virtualização, o buffer pool leva a memória muito, muito mais devagar do que sua contraparte física.
Na instalação física, em 2 dias em execução, o servidor SQL alocou todos os 120 GB de memória alocada (memória máxima do servidor). No entanto, com praticamente a mesma configuração em execução no hipervisor (também dei ao hóspede reserva total da memória), demorou 7 semanas para atingir 50 GB. Isso também foi dolorosamente lento, algo como um aumento de Gb por dia, o que se traduziu em alguns dias de consultas lentas.
Portanto, embora eu tenha visto isso em várias caixas de convidados e atribuído à pressão da memória, estou confuso sobre o motivo pelo qual isso está acontecendo em uma única caixa de convidados. Eu sei que o vmware irá compactar e desduplicar a memória, no entanto, a maior parte disso são dados exclusivos.
Então minha pergunta é:
1) Por que exatamente isso está acontecendo? Estou interessado no mecanismo exato que está causando isso.
2) Existe um método para iniciar o servidor SQL com alocação de memória total? Lembro-me de algo como um traceflag para isso, mas não consegui encontrar nada para 64 bits. E isso é necessário?
Desde já, obrigado.
Outra coisa que notei nos primeiros dias após uma reinicialização é que o PLE fica muito baixo na faixa de 500 - 900, isso aumenta conforme o buffer pool cresce.