O cache de arquivos do Windows cai de maneira súbita

6

Eu tenho um servidor Windows 2003 de 64 bits com 48 núcleos de CPU e 128 GB de RAM executando um único aplicativo (SQL 2008 Analysis Services). O SSAS está usando atualmente cerca de 50 GB de memória.

O SSAS depende, em grande parte, do Cache de Arquivos do Windows para armazenar dados usados com freqüência (veja este artigo , por exemplo). No meu servidor, o cache de arquivos do Windows está normalmente no intervalo de 10 a 15 GB, mas ocasionalmente ele cai para 5-6 GB ( Memory\System Cache Resident Bytes ). Quando isso ocorre, todas as leituras de página do SSAS precisam ir para o disco e as consultas começam a expirar até que o cache de arquivos seja preenchido novamente.

Eu tenho um segundo servidor (apenas 24 núcleos, mas quase idênticos) que não exibe os mesmos sintomas, mesmo executando a mesma instância do SSAS, as mesmas consultas e a mesma carga (isso é uma carga ambiente equilibrado).

Pedi a um SSA detalhado -focused pergunta em dba.stackexchange.com, mas algumas perguntas sobre o comportamento do Windows:

  1. Existe uma maneira de saber por que o arquivo de banco de dados do SSAS está sendo excluído do cache?

  2. Posso pré-preencher o cache de arquivos ou gerenciá-lo ativamente de alguma forma? (Não tenho certeza de que usar um RAMDRIVE é uma opção em nosso ambiente)

Em um ponto, alteramos a configuração de otimização de rede no servidor para "Maximizar taxa de transferência de dados para compartilhamento de arquivos" para corresponder à outra caixa, mas isso não pareceu fazer uma diferença significativa.

Editar : recompensa adicionada. Se não pudermos responder "por que", talvez seja apenas uma maneira de entender melhor quais processos estão atualmente usando o cache, ou quais arquivos estão nele, ou algo que pode nos levar na direção certa.

    
por BradC 06.12.2011 / 18:25

2 respostas

3

Eu não costumo postar apenas um link, mas como você ainda não recebeu ajuda, por favor, verifique isso fora. É um artigo extremamente detalhado sobre como o gerenciador de cache funciona.

Um processo é executado a cada segundo para avaliar o que pode ser gravado no disco e liberado do cache. Você perguntou especificamente se há uma maneira de ver quais processos estão usando o cache ou quais arquivos estão nele. Meu entendimento é que todas as leituras e gravações em disco são armazenadas em cache, de forma que todos os processos que leiam ou gravem no disco "usem" o cache. Eu não encontrei nenhuma maneira de espreitar para ver o que o conteúdo é embora.

Os dados do arquivo no cache de arquivos do sistema são gravados no disco em intervalos determinados pelo sistema operacional e a memória usada anteriormente pelos dados desse arquivo é liberada - isso é chamado de liberação do cache. A política de atrasar a gravação dos dados no arquivo e mantê-los no cache até que o cache seja liberado é chamada de gravação lenta e é disparada pelo gerenciador de cache em um intervalo de tempo determinado. O tempo no qual um bloco de dados de arquivo é liberado é parcialmente baseado na quantidade de tempo que foi armazenado no cache e na quantidade de tempo desde que os dados foram acessados pela última vez em uma operação de leitura . Isso garante que os dados do arquivo que são freqüentemente lidos permanecerão acessíveis no cache de arquivos do sistema pelo período máximo de tempo. detalhes

No Server 2003, se o Gerenciador de Cache não tentar gravar dados de arquivos modificados novamente em um arquivo e a memória livre se tornar escassa, o thread de gravador modificado do gerenciador de memória gravará os dados não gravados de volta em um arquivo. O sistema não depende do gerenciador de memória para liberar os dados do arquivo de volta para o disco. Em vez disso, o Gerenciador de Cache tenta gravar os dados de volta no armazenamento não volátil em tempo hábil, usando o processo de "gravação lenta". Conforme os programas modificam os dados do arquivo, o Gerenciador de Cache controla quantos dados são modificados ou "sujos". O Gerenciador de Cache grava um oitavo dos dados modificados do cache em disco a cada segundo. detalhes

    
por 08.12.2011 / 19:01
2

Qual é o valor da configuração LimitSystemFileCacheSizeMB?

Guia de Operações do Analysis Services
link

Um utilitário interessante que fornecerá informações detalhadas sobre onde a memória do servidor está em uso é o RAMMap . Em particular, também pode haver memória em uso no Cache da StandBy de que você não está ciente.

    
por 08.12.2011 / 20:19