Como explicar o uso da memória no Windows Server fora da lista de processos em execução

9

Eu tenho um Windows 2003 Server rodando um pouco lento, onde o custo de commit e o uso do arquivo de paginação aumentam e até que eu finalmente reinicio. Para corrigir isso, preciso descobrir o que está consumindo toda a memória, e é aí que está o grande mistério.

Estatísticas atuais do Gerenciador de Tarefas:

Physical Memory (K): 2096400
Commit Charge (K):   5364848
Page file usage:     5.11 GB

Tudo bem, então vamos abrir SysInternals Process Explorer e verificar o tamanho do conjunto de trabalho de tudo que está sendo executado. O maior culpado é uma instância do Tomcat usando 121,980K WS, 481,284K VM Size. Nada aí vem perto para explicar a taxa de commit de 5 GB.

Próxima etapa: pslist do SysInternals : pslist -m , divida a saída por coluna e calcular somas de coluna para os 61 processos que são relatados.

SUM (Working Set)  : 681,484 K
SUM (Private Bytes): 593,424 K

Estou fundamentalmente entendendo mal o que as ferramentas estão relatando? Eu sempre tive a impressão de que um sistema operacional iria realmente cometer muito menos memória do que a quantidade total de memória virtual mapeada por um processo, na suposição de que na verdade não usaria tanto, e que olhar para a VM aqui é um arenque vermelho.

    
por jpdaigle 30.06.2009 / 16:46

6 respostas

1

JP, Acredito que o seu comentário de que este é um servidor de teste de compilação / unidade automatizado que está executando menos que um código estável diz tudo. Meu palpite é que esse servidor precisa ser reinicializado com freqüência por causa do código instável em execução nele, provavelmente, tem vazamentos de memória que estão dando a você os sintomas que você está vendo. Os vazamentos de memória não serão listados em nenhuma das árvores de processo dos processos em execução, pois são a memória capturada por processos que não existem mais e ainda são alocados, mesmo que o processo associado a eles tenha desaparecido há muito tempo.

Obtenha uma janela de manutenção freqüente para permitir a reinicialização automática da máquina, talvez todas as noites, algumas vezes por semana ou semanalmente, dependendo da velocidade com que esse comportamento começa a exibir problemas de desempenho.

Temos servidores Oracle Application Servers no Windoze há algum tempo que precisavam ser reinicializados duas vezes ao dia. Nós expulsamos os usuários na hora do almoço, e no meio da noite todos os dias. Isso foi há alguns anos atrás, com o código de produção supostamente estável da Oracle.

    
por 01.07.2009 / 02:22
2

Desculpe colar apenas alguns links - mas estamos usando algumas técnicas para encontrar vazamentos de memória, usando logparser e powershell, então compartilharei.

link

(O site do Never Doubt Thy Debugger é excelente): link

Eu também vou fornecer um link para a excelente visão de Mark Russinovich sobre o uso da memória no Windows:

link

Além de abrir casos reais da Microsoft, o site da Equipe de desempenho também tem muitas informações boas: link

    
por 01.07.2009 / 02:39
1

A ferramenta básica para ajudar a diagnosticar isso é o perfmon. Os contadores para os quais eu olharia (para começar) são:

Memória, Bytes Comprometidos, esta é uma medida da demanda por memória virtual
Process, Working Set, _Total de memória virtual em uso "ativo"
Arquivo de paginação,% pagefile em uso
Memória, páginas / seg (isso não é necessariamente um indicador de pouca memória, embora todos pareçam assumir isso) Memória, Saída de Páginas / Seg. Quantas páginas de memória virtual foram gravadas no arquivo de paginação para liberar quadros de página de RAM para outros propósitos a cada segundo

Memória, bytes de cache
Memória, Bytes não-compartilhados de pool
Memória, Bytes Paginados da Piscina
Memória, Total de Bytes do Código do Sistema
Memória, Total de bytes do driver do sistema

quando esta soma se aproxima de 2 GB, você terá problemas de desempenho devido à arquitetura de 32 bits

Memória, MBytes disponíveis - isso mede a quantidade de RAM disponível para atender às demandas de memória virtual (novas alocações ou para restaurar uma página do arquivo de paginação).

Veja também o link

    
por 30.06.2009 / 18:06
1

Há quanto tempo esse servidor está em execução desde a última reinicialização? É um fato infeliz da vida que o Windows tem vazamentos de memória. i.e. A memória alocada nem sempre é liberada de volta ao sistema. Os sintomas são exatamente o que você está vendo. Se você não fizer isso, sugiro que você o reinicie pelo menos uma vez por semana. Muitos centros de dados reinicializam o Windows todos os dias, pois isso reduz muito as chamadas de suporte. É claro que é muito mais fácil fazer isso quando você usa clusters porque não há tempo de inatividade.

    
por 01.07.2009 / 02:01
0

Dizem que existe um sysadmin em algum lugar que realmente entende as estatísticas de memória do Windows, mas eu nunca as conheci.

No entanto, não é muito difícil encontrar um processo inadequado. Tente usar o Perfmon para examinar os vários contadores de processo, como alças ou falhas de página / s.

JR

Mais pensamentos: você tem certeza de que está realmente com pouca memória? A principal coisa é se você está recebendo paging. Se não houver paginação, você não ficará sem memória. Usando o PerfMon, dê uma olhada no contador Memória - Páginas / s.

    
por 30.06.2009 / 17:09
0

Lembre-se de que o conjunto de trabalho é o bit de memória que é realmente representado pela memória física REAL. você também tem sua carga de memória virtual eo Windows faz o compartilhamento de página de código, alguns trechos do MFC serão compartilhados entre muitos e muitos processos sem duplicar o uso de memória. Além disso, você tem o desejo incessante do Windows de manter o cache do sistema de arquivos o mais amplo possível (já vi esse balão passar para 800MB em um laptop de 2.5GB antes).

O gerenciamento de memória do Windows é muito robusto. No entanto, uma vez que o Windows inicia a paginação, as coisas ficam feias e você SEMPRE precisa deixar espaço para o cache do sistema de arquivos - sempre sempre. Eu rotineiramente tenho que desligar e reiniciar o Firefox quando meus 80 + guias controlam seu consumo de memória até 1.2gb / 1.2 + gb.

O Windows também desfoca um pouco a linha, entre as páginas que estão no cache e as páginas listadas como memória / conjunto de trabalho.

    
por 30.06.2009 / 18:07