Vazamento de memória de 64 bits do Windows Server 2008 R2

12

Estou com problemas em um dos servidores do meu escritório. É um servidor Windows 2008 R2 virtualizado com 6 GB de memória RAM. Ele possui apenas o Microsoft SQL Server (memória máxima atribuída = 3 GB) e apenas um software que não consome mais de 1 GB de RAM. No entanto, a memória RAM do servidor está quase cheia e, olhando para os processos no gerenciador de tarefas, eles não parecem resumir isso. Eu instalei o RamMap, mas não consigo interpretá-lo com muita facilidade, existe algum "valor alto" que você possa identificar?

    
por Guillermo Zooby 28.11.2016 / 18:06

2 respostas

18

Bem, vejo ~ 3,2 gigabytes de memória bloqueada pelo driver, que imediatamente se destacam como suspeitas.

Esse tipo de memória, Driver Locked Memory, é uma memória bloqueada por um driver no modo kernel. Tipicamente para o propósito de transferir pequenas quantidades de dados, geralmente para curtos períodos de tempo.

Então, se você tem um pedaço grande de memória bloqueada pelo driver, por um tempo longo , geralmente é um sinal de que algo não está certo.

Vou adivinhar aqui e acho que desde que você mencionou que é um servidor virtualizado, que é o driver de balão VMware que está fazendo isso. Não tenho dados suficientes para poder dizer por que está fazendo isso, mas há muitos casos e KBs de suporte VMware, como este , que especificamente fala sobre o driver de balão erroneamente retendo grandes quantidades de memória quando não deveria ser.

Você também deve considerar a possibilidade de que o driver de balão esteja se comportando como planejado e esteja tentando fazer com que a página do seu servidor perca a memória, pois precisa desesperadamente fornecer memória a outra VM no mesmo host.

Existe ainda outra possibilidade de que não seja um driver de memória dinâmica hypervisor, mas apenas um driver de dispositivo não autorizado.

Drivers geralmente alocam memória que é "marcada" com uma tag de 3 ou 4 caracteres que dá uma dica sobre qual driver foi responsável por fazer a alocação.
poolmon.exe, parte do Windows SDK / DDK, pode ajudar a diagnosticar.

Como eu disse, acho que é o melhor que posso fazer com os dados que tenho.

    
por 28.11.2016 / 21:16
16

Bem, eu tenho todas as versões imagináveis do SQL Server no local, de 2005 a 2016, e não vi nenhum vazamento de memória tão grande quanto 100% do mem realmente usado. Veja se você tem uma memória dinâmica para sua máquina virtual ativada.

Driver Locked é uma figura em que você deve se concentrar. No seu caso específico, Driver Locked é provavelmente um dos drivers do Hyper-V, que bloqueou toda a memória não utilizada (atribuída à VM, mas não utilizada por ela), para que possa "fornecê-la" a outra VM configurada com Memória Dinâmica. ou até mesmo para hospedar o SO, o que for necessário no momento. Você pode testá-lo abrindo algum arquivo grande ou um aplicativo que consuma muita memória dentro dessa máquina virtual - a memória com DriverLocked deve diminuir à medida que outras métricas aumentam. IMHO isso não deve ser motivo de preocupação se você não superprovisionar muito da sua memória em todas as VMs.

    
por 28.11.2016 / 21:16