RAM, memória virtual, pagefile e gerenciamento de memória no Windows

Aplica-se a: Windows 7 Service Pack 1, Windows Server 2012 R2
Número de KB original: 2160852

Resumo

Este artigo contém informações básicas sobre a implementação de memória virtual em versões de 32 bits do Windows.

Em sistemas operacionais modernos, como Windows, aplicativos e muitos processos de sistema sempre fazem referência à memória usando endereços de memória virtual. Os endereços de memória virtual são convertidos automaticamente em endereços reais (RAM) pelo hardware. Somente as partes principais do kernel do sistema operacional ignoram essa tradução de endereço e usam endereços de memória reais diretamente.

A memória virtual está sempre sendo usada, mesmo quando a memória necessária por todos os processos em execução não excede o volume de RAM instalado no sistema.

Processos e espaços de endereço

Todos os processos (por exemplo, executáveis de aplicativo) que estão em execução em versões de 32 bits do Windows recebem endereços de memória virtual (um espaço de endereço virtual), variando de 0 a 4.294.967.295 (2*32-1 = 4 GB), independentemente da quantidade de RAM instalada no computador.

Na configuração padrão do Windows, 2 gigabytes (GB) desse espaço de endereço virtual são designados para o uso privado de cada processo e os outros 2 GB são compartilhados entre todos os processos e o sistema operacional. Normalmente, os aplicativos (por exemplo, Bloco de Notas, Word, Excel e Acrobat Reader) usam apenas uma fração dos 2 GB de espaço de endereço privado. O sistema operacional atribui quadros de página de RAM apenas às páginas de memória virtual que estão sendo usadas.

A PAE (Extensão de Endereço Físico) é o recurso da arquitetura Intel de 32 bits que expande o endereço RAM (memória física) para 36 bits. O PAE não altera o tamanho do espaço de endereço virtual (que permanece em 4 GB), mas apenas o volume de RAM real que pode ser resolvido pelo processador.

A tradução entre o endereço de memória virtual de 32 bits usado pelo código que está em execução em um processo e o endereço RAM de 36 bits é tratada de forma automática e transparente pelo hardware do computador de acordo com tabelas de tradução mantidas pelo sistema operacional. Qualquer página de memória virtual (endereço de 32 bits) pode ser associada a qualquer página de RAM física (endereço de 36 bits).

A lista a seguir descreve a quantidade de RAM que as várias versões e edições do Windows dão suporte (a partir de maio de 2010):

Versão do Windows RAM
Windows NT 4.0 4 GB
Windows 2000 Professional 4 GB
Windows 2000 Standard Server 4 GB
Windows 2000 Advanced Server 8 GB
Windows 2000 Datacenter Server 32 GB
Windows XP Professional 4 GB
Windows Server 2003 Web Edition 2 GB
Windows Server 2003 Standard Edition 4 GB
Windows Server 2003 Edição Enterprise 32 GB
Windows Server 2003 Datacenter Edition 64 GB
Windows Vista 4 GB
Windows Server 2008 Standard 4 GB
Windows Server 2008 Enterprise 64 GB
Windows Server 2008 Datacenter 64 GB
Windows 7 4 GB

Arquivo de paginação

A RAM é um recurso limitado, enquanto para a maioria das finalidades práticas, a memória virtual é ilimitada. Pode haver muitos processos, e cada processo tem seus próprios 2 GB de espaço de endereço virtual privado. Quando a memória que está sendo usada por todos os processos existentes excede a RAM disponível, o sistema operacional move páginas (peças de 4 KB) de um ou mais espaços de endereço virtual para o disco rígido do computador. Isso libera esse quadro de RAM para outros usos. Em sistemas Windows, essas páginas páginas são armazenadas em um ou mais arquivos (Pagefile.sys arquivos) na raiz de uma partição. Pode haver um desses arquivos em cada partição de disco. O local e o tamanho do arquivo de página estão configurados em Propriedades do Sistema (clique em Avançado, clique em Desempenho e clique no botão Configurações ).

Os usuários perguntam com frequência o tamanho que devo fazer do pagefile? Não há uma única resposta para essa pergunta porque depende da quantidade de RAM instalada e da quantidade de memória virtual que essa carga de trabalho requer. Se não houver outras informações disponíveis, a recomendação típica de 1,5 vezes a RAM instalada será um bom ponto de partida. Em sistemas de servidor, normalmente você deseja ter RAM suficiente para que nunca haja uma escassez e para que o arquivo de página não seja usado. Nesses sistemas, pode não servir a nenhuma finalidade útil para manter um arquivo de página grande. Por outro lado, se o espaço em disco for abundante, manter um arquivo de página grande (por exemplo, 1,5 vezes a RAM instalada) não causará um problema, e isso também eliminará a necessidade de se preocupar com o tamanho para fazê-lo.

Desempenho, limites de arquitetura e RAM

Em qualquer sistema de computador, à medida que a carga aumenta (o número de usuários, o volume de trabalho), o desempenho diminui, mas de maneira não linear. Qualquer aumento na carga ou na demanda, além de um determinado ponto, causa uma redução significativa no desempenho. Isso significa que algum recurso está em oferta extremamente curta e se tornou um gargalo.

Em algum momento, o recurso que está em falta não pode ser aumentado. Isso significa que um limite arquitetônico foi atingido. Alguns limites de arquitetura relatados com frequência no Windows incluem o seguinte:

  • 2 GB de espaço de endereço virtual compartilhado para o sistema (kernel)
  • 2 GB de espaço de endereço virtual privado por processo (modo de usuário)
  • 660 MB de armazenamento PTE do sistema (Windows Server 2003 e anterior)
  • 470 MB de armazenamento de pool de páginas (Windows Server 2003 e anterior)
  • 256 MB de armazenamento de pool nãopagado (Windows Server 2003 e anterior)

Isso se aplica especificamente ao Windows Server 2003, mas isso também pode se aplicar ao Windows XP e ao Windows 2000. No entanto, Windows Vista, Windows Server 2008 e Windows 7 não compartilham todos esses limites arquitetônicos. Os limites de memória do usuário e do kernel (números 1 e 2 aqui) são os mesmos, mas os recursos do kernel, como PTEs e vários pools de memória, são dinâmicos. Essa nova funcionalidade permite memória paged e nãopaged. Isso também permite que PTEs e pool de sessões cresçam além dos limites que foram discutidos anteriormente, até o ponto em que todo o kernel está esgotado.

Instruções frequentemente encontradas e citadas, como as seguintes:

Com um Servidor de Terminal, os 2 GB de espaço de endereço compartilhado serão completamente usados antes de 4 GB de RAM serem usados.

Isso pode ser verdade em alguns casos. No entanto, você precisa monitorar seu sistema para saber se eles se aplicam ao seu sistema específico ou não. Em alguns casos, essas instruções são conclusões de ambientes específicos Windows NT 4.0 ou Windows 2000 e não se aplicam necessariamente ao Windows Server 2003. Foram feitas alterações significativas no Windows Server 2003 para reduzir a probabilidade de que esses limites arquitetônicos sejam de fato atingidos na prática. Por exemplo, alguns processos que estavam no kernel foram movidos para processos não kernel para reduzir a memória usada no espaço de endereço virtual compartilhado.

Monitoramento de RAM e uso de memória virtual

Monitor de Desempenho é a ferramenta principal para monitorar o desempenho do sistema e para identificar o local do gargalo. Para iniciar Monitor de Desempenho, clique em Iniciar, clique em Painel de Controle, em Ferramentas Administrativas e clique duas vezes em Monitor de Desempenho. Aqui está um resumo de alguns contadores importantes e o que eles lhe dizem:

  • Memória, Bytes Confirmados: este contador é uma medida da demanda por memória virtual.

    Isso mostra quantos bytes foram alocados por processos e aos quais o sistema operacional cometeu um quadro de página de RAM ou um slot de página no arquivo de página (ou talvez ambos). À medida que bytes confirmados crescem mais do que a RAM disponível, a paginação aumentará e o tamanho do arquivo de página que está sendo usado também aumentará. Em algum momento, a atividade de paginação começa a afetar significativamente o desempenho.

  • Process, Working Set, _Total: este contador é uma medida da memória virtual em uso ativo .

    Este contador mostra a quantidade de RAM necessária para que a memória virtual que está sendo usada para todos os processos esteja na RAM. Esse valor é sempre um múltiplo de 4.096, que é o tamanho da página usado no Windows. À medida que a demanda por memória virtual aumenta além da RAM disponível, o sistema operacional ajusta quanto da memória virtual de um processo está em seu Conjunto de Trabalho para otimizar o uso de RAM disponível e minimizar a paginação.

  • Arquivo de paginação, %pagefile em uso: este contador é uma medida de quanto do arquivo de página está realmente sendo usado.

    Use este contador para determinar se o pagefile é um tamanho apropriado. Se esse contador atingir 100, o pagefile estará cheio e as coisas pararão de funcionar. Dependendo da volatilidade de sua carga de trabalho, você provavelmente quer o arquivo de página grande o suficiente para que ele não seja mais do que 50-075 por cento usado. Se grande parte do pagefile estiver sendo usado, ter mais de um em discos físicos diferentes, poderá melhorar o desempenho.

  • Memória, Páginas/S: esse contador é uma das medidas mais incompreendidas.

    Um valor alto para este contador não implica necessariamente que o gargalo de desempenho decorre de uma escassez de RAM. O sistema operacional usa o sistema de paginação para outras finalidades além da troca de páginas devido ao excesso de comprometimento da memória.

  • Memória, Saída de Páginas/S: este contador mostra quantas páginas de memória virtual foram escritas no arquivo de página para liberar quadros de página de RAM para outras finalidades a cada segundo.

    Este é o melhor contador a ser monitorado se você suspeitar que a paginação é seu gargalo de desempenho. Mesmo que Bytes Confirmados seja maior que a RAM instalada, se a saída de páginas/s for baixa ou zero na maior parte do tempo, não haverá nenhum problema de desempenho significativo da RAM insuficiente.

  • Bytes de memória, bytes de cache, memória, bytes nãopagados do pool, memória, bytes de página do pool, memória, bytes totais de código do sistema, memória, bytes totais do driver do sistema:

    A soma desses contadores é uma medida de quanto dos 2 GB da parte compartilhada do espaço de endereço virtual de 4 GB está realmente sendo usado. Use-os para determinar se seu sistema está atingindo um dos limites de arquitetura discutidos anteriormente.

  • Memória, MBytes disponíveis: este contador 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 pagefile).

    Quando a RAM está em falta (por exemplo, o Committed Bytes é maior que a RAM instalada), o sistema operacional tentará manter uma determinada fração da RAM instalada disponível para uso imediato copiando páginas de memória virtual que não estão em uso ativo no arquivo de páginas. Portanto, esse contador não atingirá zero e não é necessariamente uma boa indicação de se seu sistema está com falta de RAM.

Referências

Extensões de janela de endereço