Como eu posso otimizar a Memória Virtual (arquivo de paginação) do Windows 200, XP ou 2003?
A otimização da memória é um assunto importante das responsabilidades de um administrador de sistemas. Bastante memória não machuca ninguém, mas isso é algo que nem sempre temos disponível. Essa página traz algumas dicas sobre o gerenciamento de memória para Windows 2000, Windows XP e Windows Server 2003.
Cuidado: antes de começar a trabalhar com essas dicas, você deve ler a minha página Antes de começar (em inglês).
Obrigado ao leitor Perris Calderon por apontar alguns erros nessa página (03/02/2003).
Partes dessa página contêm informações obtidas do excelente artigo de MS MVP Alex Nichol sobre memória virtual do XP encontrado AQUI. Outras informações foram coletadas de um blog escrito por Mike Lee, AQUI.
O que é Memória Virtual?
Num computador 32-bits, os endereços das memórias possuem o tamanho de 32 bits e são armazenados em números binários (base 2). Existem aproximadamente 4 bilhões de números binários de 32-bits possíveis (2^32 = 4.294.967.296). Por causa disso, existe um limite de 4GB para memórias endereçáveis num computador de 32-bits.
Uma instrução de um programa num Intel 386 ou mais atual pode endereçar até 4GB de memória, usando todos os seus 32-bits. Cada processo é designado com um espaço de 4GB de memória virtual para seu endereço, independente da quantidade de memória física. Cada processo é isolado do resto e possui seu próprio espaço de 4Gb para seu endereço. Isso significa que o limite de 4GB para endereços se aplica para cada aplicativo, e não para todos os aplicativos juntos.
Normalmente, isso é muito mais que a memória RAM de uma máquina. A quantidade de memória física no computador não está relacionada à quantidade de espaço para o endereçamento na memória. Se um computador possui 256MB de memória física, ainda existem 4GB de espaço para o endereçamento na memória, e se um computador possui 8GB de memória física, ainda existem 4GB de espaço para o endereçamento na memória.
Aplicativos não possuem acesso direto à memória física. Quando um aplicativo solicita mais memória, o Windows mapeia um pouco de memória física (contanto que esse pouco esteja disponível) para o espaço de endereçamento do processo.
O hardware oferece suporte ao funcionamento dos programas de acordo com o quanto eles precisam de todo o espaço de 4GB como memória virtual, as partes dos programas e dados que estão ativos no momento são carregados na memória RAM (memória RAM = memória física de acesso aleatório). O Windows mantêm diversas tabelas que possuem o registro disso tudo, e os aplicativos só têm conhecimento dos endereços da memória virtual.
O processador então traduz (”mapeia”) os endereços virtuais a partir de uma instrução para os equivalentes físicos corretos, realizando isso durante a execução do programa (on-the-fly) quando a instrução é executada. O processador gerencia o mapeamento em termos de páginas de 4KB cada - um tamanho que possui implicações ao gerenciar a memória virtual pelo sistema.
Por que eu preciso otimizar o arquivo de paginação?
Otimizar o arquivo de paginação (em inglês, pagefile) quando a memória RAM disponível está acabando é sempre uma boa idéia. Quando toda a memória RAM do computador está em uso, o Windows começa a usar o disco rígido como se fosse memória RAM adicional. É por isso que temos o arquivo de paginação (também chamado de swap file). Devido à memória RAM ser muito mais rápida que o disco rígido, sempre que o computador começa a usar o arquivo de paginação para aliviar a pressão na memória, a performance acaba diminuindo drasticamente.
Uma das coisas mais eficientes que você pode fazer para melhorar o desempenho é assegurar que existe memória RAM disponível para evitar o uso freqüente do arquivo de paginação para armazenar os dados necessários.
Isso significa que na realidade o limite para a memória usada por todos os aplicativos é a quantidade de memória RAM mais o tamanho máximo do arquivo de paginação.
De quanto espaço na memória virtual você precisa? Isso depende de quanta memória RAM você tem e de que programas você usa. A regra é de 1,5 vezes a quantidade de memória do sistema, a não ser que você precise carregar muito o sistema.
A Memória Virtual pode ser desligada numa máquina muito grande?
A rigor, a memória virtual está sempre em operação e não pode ser “desligada”. O que essa frase quer dizer é “configure o sistema para que ele não use espaço para o arquivo de paginação”.
Isso iria jogar fora muita memória RAM. Isso acontece porque quando os programas solicitam espaço na memória virtual, eles podem solicitar espaço demais, além do que eles realmente usam - o total pode facilmente chegar a centenas de megabytes. Esses endereços precisam ser designados em algum lugar pelo sistema. Se existe espaço disponível no arquivo de paginação, o sistema pode designar os endereços nele - se não existe, eles precisam ser designados na memória RAM, bloqueando-a para qualquer outro uso.
Você tem alguma dica de otimização específica?
Aqui estão algumas regras básicas que você deve seguir:
- Primeiro e mais importante - Adicione mais memória RAM. Não, você NÃO precisa colocar 4GB de memória RAM, mas se seu computador constantemente usa X MB de memória, então tenha certeza de que você tem pelo menos X MB de memória RAM disponível para ele, e preferencialmente mais. Não faz sentido sobrecarregar o computador com aplicativos gráficos e limitá-lo a 256MB de memória RAM. Enquanto os aplicativos provavelmente irão funcionar, seu desempenho será bastante reduzido. Colocar memória RAM suficiente irá assegurar que toda a memória usada será mesmo usada da memória RAM, e não da memória virtual.
- Mova o arquivo de paginação para fora do disco que possui o seu sistema e as partições de boot para outro disco rígido rápido dedicado para a tarefa. Se você realmente colocar o arquivo de paginação em outro lugar, você deve deixar um pedaço dela no C: - um tamanho mínimo de 2MB e um máximo de 50MB são apropriados - para que ele possa ser usado em emergências. Sem isso, o sistema pode ignorar as configurações e não criar o arquivo de paginação (e reclamar do fato) ou criar um muito grande no disco C:.
- Formate em NTFS a partição onde o arquivo de paginação está e faça isso definindo um tamanho de cluster de 4KB (que é o valor padrão de uma partição NTFS).
- O tamanho inicial deve ser pelo menos 1,5 vezes maior que a quantidade de memória RAM. Esse tamanho N??O deve ser menor que a quantidade de memória RAM que você tem no sistema.
- O tamanho inicial deve ser igual ao tamanho máximo. Apesar de isso fazer com que o arquivo de paginação ocupe mais espaço no disco, nós não queremos que ele seja pequeno no início, e depois cresça constantemente no disco. Gravar grandes arquivos (e o arquivo de paginação é de fato grande) no disco irá causar muita atividade do disco rígido, ocasionando uma degradação do desempenho. Além disso, como o arquivo de paginação só aumenta em incrementos, você provavelmente irá causar a fragmentação do mesmo, sobrecarregando ainda mais o disco rígido.
- Não coloque vários arquivos de paginação em partições diferentes do mesmo disco rígido.
- Se você tem um RAID-0, use-o para armazenar o arquivo de paginação.
- Evite colocar o arquivo de paginação numa unidade tolerante a falhas, como um volume “espelhado” (RAID-1) ou um volume RAID-5. O arquivo de paginação não precisa de tolerância a falhas, e alguns desses sistemas sofrem de gravação lenta de dados porque eles realizam a gravação desses dados em vários locais diferentes.
- Se você usa Windows XP e a Troca Rápida de Usuário, existem algumas considerações especiais: Quando um usuário não está ativo, deverá existir espaço disponível no arquivo de paginação para armazenar temporariamente o seu trabalho. Assim, o arquivo de paginação precisará ser maior. Só experimentando em uma situação real irá dizer o quão grande deverá ser o arquivo de paginação, mas um bom começo pode ser um tamanho inicial igual à metade da quantidade de memória RAM utilizada por cada usuário logado.
Se você tem um disco rígido extra (dê preferência a um rápido) ou se você tem espaço de sobra no disco rígido no seu sistema (novamente, dê preferência a um disco rápido, e NÃO ao disco em que está a partição do SISTEMA ou dos DADOS) eu sugiro que você o use unicamente para armazenar o arquivo de paginação. Lembre-se de que usar outra partição no mesmo disco rígido do SISTEMA ou dos DADOS não irá aumentar o desempenho do sistema. Para isso você irá precisar de um disco rígido em separado que seja rápido, preferencialmente conectado a um controlador diferente.
Você também pode melhorar o desempenho espalhando o arquivo de paginação através de vários discos rígidos. Não se preocupe com as velocidades relativas dos discos, o Windows 2000/XP/2003 automaticamente seleciona a unidade mais rápida para armazenar a memória virtual.
Ao criar arquivos de paginação, não confunda discos rígidos com partições. Você não deve criar arquivos de paginação em múltiplas partições no mesmo disco rígido. Esse setup diminuirá o desempenho do sistema significantemente porque quando o Windows NT grava dados nos arquivos de paginação, o braço que faz a gravação no disco é forçado a se movimentar pelo disco ao invés de permanecer estático sobre a área do arquivo de paginação. Para aqueles com discos IDE, é recomendável colocar o arquivo de paginação em canais IDE separados.
Digamos que nós temos 512 MB de RAM e nós decidimos criar um arquivo de paginação de 768 MB.
No Windows 2000 vá para Meu Computador, clique com o botão direito sobre ele e selecione Propriedades, vá para a aba Avançado, clique em Opções de desempenho, depois clique em Alterar. Agora você pode ver e ajustar os parâmetros que você precisa:
Note como o Windows 2000/XP/2003 coloca o arquivo de paginação na partição do boot (eu sei que na imagem diz “sistema”, mesmo assim eles indicam ele como sendo a partição de “boot”. Neste caso são ambos), aquele em que o SO está instalado (neste caso, C:\). O Windows 2000/XP/2003 ainda ajusta o tamanho inicial do arquivo de paginação como sendo 1,5 vezes o tamanho da memória física (RAM) instalada. O tamanho máximo é de 3 vezes a sua memória RAM. O Windows NT usa um cálculo diferente aqui.
Você pode ajustar suas configurações nas caixas inicial e máximo, e clicar em Definir. Você terá que reiniciar para que as mudanças tenham efeito. Note que você precisará especificar a mesma quantidade para ambos os valores. Isso evitará o arquivo de paginação de se redimensionar, se fragmentar, e eventualmente diminuir seu desempenho.
Você também pode dividir o arquivo de paginação através os seus discos rígidos (não partições!) para aumentar seu desempenho. Selecione o disco na lista de unidades, digite os tamanhos nas caixas inicial e máximo, e clique em Definir. Repita o procedimento para todas as unidades necessárias.
No Windows XP vá para Meu Computador, clique com o botão direito sobre ele e selecione Propriedades, vá para a aba Avançado, clique em Configurações na seção Desempenho.
Novamente, clique na aba Avançado e depois clique em Alterar na seção Memória virtual.
Agora você pode ver e alterar os parâmetros que você precisa.
Em Unidade [rótulo do volume], clique na unidade que contém o arquivo de paginação que você quer alterar.
Em Tamanho do arquivo de paginação para a unidade selecionada, clique em Tamanho personalizado, digite um novo tamanho para o arquivo de paginação em megabytes (MB) na caixa Tamanho inicial (MB) ou na caixa Tamanho máximo (MB), e clique em Alterar.
Se você diminuir o tamanho do tamanho inicial ou máximo do arquivo de paginação, você deve reiniciar o computador para verificar o efeito dessas mudanças. Quando você aumenta o tamanho do arquivo de paginação, tipicamente não é necessário reiniciar o computador.
Qual o tamanho que o meu arquivo de paginação deve ser?
Para deixar o Windows gerenciar o melhor tamanho para o arquivo de paginação, clique em Tamanho gerenciado pelo sistema. O tamanho mínimo recomendado é equivalente a 1,5 vezes a quantidade de memória RAM no sistema, e de 3 vezes para o tamanho máximo. Por exemplo, se você tem 256MB de memória RAM, o tamanho mínimo seria 384, e o tamanho máximo seria 1152.
Para um desempenho maior, não ajuste um tamanho inicial menor que o mínimo recomendado em Tamanho total do arquivo de paginação para todas as unidades. O tamanho recomendado é equivalente a 1,5 vezes a quantidade de memória RAM no sistema. Em geral, você deve deixar o arquivo de paginação no seu tamanho recomendado, embora você possa aumentar seu tamanho caso você use programas que precisam de muita memória.
Para deletar o arquivo de paginação, ajuste o tamanho inicial e o máximo para zero, ou clique em Sem arquivo de paginação. A Microsoft não recomenda desabilitar ou deletar o arquivo de paginação.
Para determinar o tamanho apropriado para o seu arquivo de paginação você deve monitorar o sistema e verificar quanta memória RAM e memória virtual ele usa. Monitore o sistema por cerca de uma semana (você pode ignorar isso ou diminuir a duração do monitoramento se você sabe exatamente quanta memória virtual você precisa) e verifique qual foi a maior quantidade de memória que o seu sistema usou. Se você percebeu que ela nunca chegou perto da quantidade máxima de memória RAM que você tem instalada ??? não se preocupe. O seu arquivo de paginação está virtualmente sendo ignorado (isso não é exatamente correto, porque o sistema usa o arquivo de paginação para algumas operações internas e ele precisa usá-lo em torno de 5%-10% em sistemas normais). Se, por outro lado, você perceber que o sistema usa mais memória do que ele fisicamente possui, isso significa que ele usa o arquivo de paginação.
Quanta Memória Virtual o seu sistema usa?
Você precisa primeiro saber quanta memória você está usando, e quanta está no seu disco.
Usando o Monitor do Sistema
Uma maneira precisa é monitorando o contador % uso máximo na ferramenta Monitor do Sistema (o uso máximo da instância do arquivo de paginação está em porcentagem).
Abra o console Desempenho nas Ferramentas administrativas. Clique em Monitor do sistema e depois clique no sinal de MAIS (+).
Na janela Adicionar contadores selecione Arquivo de paginação na lista Objeto de desempenho.
Quando você clicar nesse objeto, selecione o contador % uso e clique em Adicionar.
Olhe para o gráfico. Veja se ele está estático ou aumentando de tamanho (você pode obter esses dados por um período de tempo maior - uma semana ou mais - usando os Logs do contador no submenu Logs e alertas de desempenho do console Desempenho). Observe o contador Médio.
Usando o Gerenciador de tarefas
Outra maneira (mais rápida) é usar o Gerenciador de tarefas.
Abra o Gerenciador de tarefas e vá para a aba Desempenho.
Veja a seção Memória física. Veja o Total: 785904 K (essa é a quantidade de memória RAM instalada).
Quanta memória RAM está disponível? 372924 K - mais de metade da memória RAM instalada. Por enquanto está tudo ok.
Com quanta memória o sistema está comprometido (utilizando)? Veja a seção Carga comprometida, em Total: 429604 K.
Qual foi a maior quantidade de memória que o seu sistema já comprometeu desde a última inicialização? Veja em Pico: 453168 K. Isso significa que você está perto do pico, e mesmo que o sistema tenha chegado perto de 450000 K, ele ainda está longe de utilizar toda a memória RAM. Por enquanto está tudo ok.
O MS MVP Bill James possui uma ferramenta conveniente, WinXP-2K_Pagefile, para monitorar o uso real do arquivo de paginação, e pode ser baixado aqui. Uma versão compilada em Visual Basic pode ser mais conveniente para alguns usuários, ela está disponível no site do Doug Knox. Um valor verificado por vários dias do Peak Usage é uma boa base para ajustar o Tamanho inicial economicamente.
Agora, já que o nosso sistema ajustou automaticamente o arquivo de paginação para 1,5 vezes a quantidade de memória RAM, você está usando 1152 MB ou espaço no disco rígido num arquivo de paginação que não está nem sendo usado (Lembra-se? Você está longe de usar TODA a sua memória RAM…). Parece muito espaço para ser jogado fora. Você pode diminuir com segurança o tamanho do arquivo de paginação para em torno de 700 MB, e você pode provavelmente nunca mais irá tocar nele. O único ponto negativo é a perda da habilidade de criar um arquivo de “dump” caso o sistema trave…
Outra imagem, agora num Windows XP:
Aqui o Pico foi de 758064 K, que é QUASE toda a memória RAM que você tem. Não existe como dizer se isso foi um evento incomum, ou se foi algo que acontece sempre (aqui você precisa de uma base para dizer algo). Você só tem certeza de que agora está tudo ok porque você está usando somente 192992 K de memória de 785904 K que você possui. Mas se você perceber que aquele pico é algo que sempre acontece com você, você deve ajustar o seu arquivo de paginação para um mínimo de 1,5 vezes a memória RAM (que é o valor padrão).
A propósito, você também pode verificar a quantidade atual de memória usada no canto inferior direito do Gerenciador de tarefas, onde diz Confirmar carga: 188M / 1426M.
A próxima imagem é de um Windows Server 2003 que está passando por problemas:
Se esse fosse o SEU computador, você poderia estar tendo problemas no seu sistema. Aqui você está usando 530MB de 934MB de memória que você tem (memória RAM + arquivo de paginação). Isso significa que o seu sistema está usando o arquivo de paginação para funcionar. Nesse caso você deve colocar mais memória RAM o mais rápido possível, ou pelo menos configurar o arquivo de paginação para um valor ótimo.
Existe mais algumas dicas para otimizar o uso e a localização do arquivo de paginação?
Sim. Ainda existem algumas opções.
Valores do registro
Mesmo quando você define os valores apropriadamente, alguns sistemas não salvam as configurações. Se isso acontecer, siga os seguintes passos:
- Inicie o regedt32.exe (e não regedit.exe);
- Vá para HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ Session Manager \ Memory Management;
- Duplo-clique em PagingFiles. A entrada aparecerá assim: D:\pagefile.sys 700 700;
- O primeiro valor é a localização; o segundo é o valor mínimo; e o terceiro é o valor máximo;
- Verifique se os valores estão corretos e clique em OK;
- Reinicie o computador.
Alterando remotamente o tamanho e a localização do arquivo de paginação
Você também pode alterar o valor do arquivo de paginação remotamente manipulando os valores do registro.
Informações sobre o arquivo de paginação são armazenados no registro como um multi_string (então você PRECISA usar o regedt32.exe) e podem ser alterados localmente assim:
- Inicie o editor do registro (regedt32.exe);
- Vá para HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ Session Manager \ Memory Management;
- Duplo-clique em PagingFiles;
- Existe uma linha para cada arquivo de paginação, o formato é: <local><tamanho inicial><tamanho máximo> (por exemplo, C:\pagefile.sys 700 700);
- Clique em OK;
- Feche o editor de registro;
- Reinicie o computador.
Para alterar em outra máquina você deve usar o utilitário REG.EXE mas o comando abaixo irá substituir o arquivo de paginação atual e NÃO irá verificar se você possui espaço no disco rígido suficiente, então você pode querer criar um script que realize essa verificação. Tenha certeza de que o computador foi reinicializado depois das mudanças.
C:\> reg update “HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\PagingFiles”=”<local> <tamanho inicial> <tamanho máximo>” \\<remote machine>
Por exemplo:
C:\> reg update “HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\PagingFiles”=”C:\pagefile.sys 700 700″ \\london.nwtraders.msft
Fragmentação do arquivo de paginação
Se o arquivo de paginação se fragmentar o desempenho do sistema irá diminuir. A System Internals lançou o PageDefrag, um utilitário gratuito que mostra a fragmentação do arquivo de paginação e oferece a opção de desfragmentar o arquivo na inicialização do sistema.
O utilitário pode ser baixado AQUI.
Assim que você baixar, descompacte o arquivo e execute o pagedfrg.exe. Abaixo está um exemplo de saída:
Configurações das Diretivas de grupo
Existem algumas configurações das Diretivas de grupo disponíveis para uso.
Criar um arquivo de permuta
Ferramentas administrativas \ Diretiva de segurança local \ Configurações de segurança \ Diretivas locais \ Atribuição de direitos de usuário
Essa opção determina quais usuários e grupos podem criar e alterar o tamanho do arquivo de paginação. Você pode criar um arquivo de paginação especificando o tamanho do arquivo para uma dada unidade nas Propriedades do Sistema, seção Desempenho.
Padrão: Administradores.
Desligamento: limpar arquivo de paginação de memória virtual
Ferramentas administrativas \ Diretiva de segurança local \ Configurações de segurança \ Diretivas locais \ Opções de segurança
Essa opção determina se o arquivo de paginação da memória virtual será limpa quando o sistema desligar. Num sistema em operação, o arquivo de paginação é aberto exclusivamente para operar o sistema, e ele é bem protegido. Apesar disso, os sistemas que são configurados para permitir a inicialização em outros sistemas operacionais podem precisar que o arquivo de paginação do sistema seja limpo quando este desligar. Isso assegura que informações importantes da memória dos processos que vão para o arquivo de paginação não estejam disponíveis para um usuário não-autorizado que consiga ter acesso direto ao arquivo de paginação.
Quando a diretiva está habilitada, ela faz com que o arquivo de paginação do sistema seja limpo durante o desligamento do computador. Se você habilitar essa opção de segurança, o arquivo de hibernação (hiberfil.sys) também é zerado quando a hibernação está desabilitada num sistema de computador portátil.
Padrão: Desabilitado.
Problemas com a Memória Virtual
Às vezes acontece de o sistema reclamar de “falta de memória” ao tentar carregar um programa, ou reclamar do espaço para a memória virtual estar baixa. Causas possíveis para isso são:
- O valor do tamanho máximo do arquivo de paginação está muito baixo, ou não existe espaço livre no disco para que o arquivo aumente de tamanho até esse valor;
- O arquivo de paginação se tornou corrupto, possivelmente devido a um desligamento ruim. Nas configurações da memória virtual, ajuste a opção para não ter arquivo de paginação, saia, desligue a máquina e reinicie. Delete o arquivo PAGEFILE.SYS (em cada unidades caso exista mais fora o C:), ajuste o arquivo de paginação novamente e reinicie para usá-lo normalmente;
- O arquivo de paginação foi colocado em uma unidade diferente sem deixar a quantidade mínima no C:;
- Existem problemas com softwares de terceiros. Em particular, se a mensagem acontece durante o desligamento, suspeite de um problema com o Live update do Symantec Norton, para o qual existe um conserto postado AQUI (em inglês).
Se isso acontece durante a inicialização e a máquina tem um chipset da Intel, a mensagem pode estar sendo causada por uma versão antiga (anterior à 2.1) do Application Accelerator (Acelerador de Aplicativos) da Intel. Desinstale esse programa e procure uma versão atual dele no site da Intel.
- É possível que existam problemas com drivers de discos rígidos IDE; no Gerenciador de dispositivos, remova os Controladores IDE ATA/ATAPI (Canal IDE primário) e reinicie para que o Plug and Play reinstale os drivers;
- Em NTFS, as permissões para a pasta raiz da unidade onde está o arquivo de paginação devem dar controle total ao sistema. Senão, é provável que exista uma mensagem durante a inicialização dizendo que o sistema é incapaz de criar o arquivo de paginação.
Links (em inglês)
- Configuring Page Files for Optimization and Recovery - 197379.
- How to Configure Paging Files for Optimization and Recovery in Windows XP - 314482.
- HOW TO: Move the Paging File in Windows XP - 307886.
- HOW TO: Set Performance Options in Windows XP - 308417.
- HOW TO: Configure Recovery Techniques in Windows XP - 307973.
Note: this article it was write by Daniel Petri, in English, and translated to the portuguese by Bruno Koga, especially to WinAjuda’s site, with authorization of the author. Original article.
0 comentários:
Postar um comentário