Por que as configurações padrão no Windows de 64 bits ainda implicam em um arquivo de paginação grande?

Por que as configurações padrão no Windows de 64 bits ainda implicam em um arquivo de paginação grande?

Minha pergunta é baseada na observação de que, desde a introdução do Windows de 64 bits, muito mais pessoas ao meu redor parecem cair em travamentos de seus sistemas relacionados a arquivos de paginação. Por exemplo, algo simples como zeros(2e5)no MATLABalocanão apenas 1.600 kB de zeros, mas 160 GB. Graças ao espaço de endereço de 64 bits, essa quantidade pode ser endereçada, mas muitas vezes não na RAM. (Eu poderia citar muitos exemplos como este, todos reduzidos à alocação de memória.) Como resultado, o Windows recorre ao arquivo de paginação e armazena 160 GB de zeros no disco. Somente depois disso (ou de um desligamento forçado) seu sistema voltará a responder.

No Windows de 32 bits, esse problema foi amplamente evitado pelo espaço de endereço de no máximo 4 GB.

Então, por que a Microsoft ainda configura um arquivo de paginação grande por padrão? De acordo com minha observação, o tamanho padrão é maior com RAM maior, o que realmente não faz sentido, a menos que você tenha uma unidade muito grande e rápida, como um SSD terrivelmente caro. Costumo desativar arquivos de página em instalações do Windows de 64 bits por esse motivo. Ou não deveria? Quais são as razões a favor ou contra fazer isso?

Responder1

O Windows não faz alocação lenta de memória como o Linux faz e a quantidade de memória alocável depende do arquivo de paginação.

No Linux, presume-se que qualquer alocação "esparsa" de memória não será totalmente utilizada e, portanto, permite que os programas superaloquem continuamente a memória até que ela esteja fisicamente esgotada. Caso os programas realmente atendam à memória comprometida, mas não haja RAM ou troca suficiente para atender à demanda, ele começará a eliminar processos.

O Windows faz o oposto e assume que toda a memória alocada será eventualmente usada e, portanto, todas as reservas serão respeitadas até que a memória física + o tamanho do arquivo de paginação sejam atingidos. Se um programa for capaz de alocar memória, ele poderá usá-la. Se não for capaz de alocar memória, atingiu o limite de RAM e tamanho do arquivo de paginação.

Ao desabilitar o arquivo de paginação, um programa que aloca memória que não está usando (ou seja, assume um arquivo de paginação) pode fazer com que você fique sem memória quando ainda tiver algum "livre".

Se quiser usar toda a RAM em um sistema Windows, você deve deixar o sistema funcionar conforme planejado, fornecendo-lhe um arquivo de paginação.

Responder2

O arquivo de paginação oferece dois benefícios principais para o sistema operacional, nenhum dos quais é significativamente influenciado por um sistema operacional de 64 bits.

  1. O arquivo de paginação aumenta o limite de confirmação.

Quando um aplicativo aloca memória, um sistema operacional Windows promete ou se compromete a ter armazenamento suficiente disponível para ele, mesmo no pior cenário. Este armazenamento pode estar na RAM ou no arquivo de paginação. O limite de confirmação é definido como o tamanho da RAM mais o tamanho do arquivo de paginação menos uma pequena sobrecarga. Sem arquivo de paginação, o limite de commit será um pouco menor que o tamanho da RAM. O gerenciador de memória controla o total de memória alocada para garantir que nunca exceda o limite de confirmação.

Sem arquivo de paginação, o limite de commit é um limite rígido que não pode ser aumentado enquanto o sistema operacional está em execução. Com a configuração padrão do arquivo de paginação, o limite de commit não é apenas muito maior, mas é um limite flexível que pode ser aumentado expandindo o arquivo de paginação quando necessário.

Atingir o limite de commit no Windows é uma coisa ruim. A maioria dos aplicativos não lida muito bem com essa eventualidade e o próprio sistema operacional muitas vezes não consegue tolerar isso.

  1. O arquivo de paginação otimiza o uso de RAM.

A qualquer momento, é provável que um computador contenha uma grande quantidade de dados que não são acessados ​​há muito tempo e que, na verdade, podem nunca ser acessados ​​durante a sessão. É claro que o gerenciador de memória não tem como saber a importância desses dados, por isso deve mantê-los em algum lugar.

Armazenar todos esses dados raramente usados ​​em RAM de alta velocidade é um sério uso indevido desse precioso recurso. Se a RAM não tivesse essa carga, haveria mais espaço disponível para uso de aplicativos e para fins de cache. O cache é realmente importante em um sistema operacional moderno e é um dos principais contribuintes para um bom desempenho.

O arquivo de paginação fornece um local onde o gerenciador de memória pode descarregar esses dados raramente usados ​​e liberar a RAM dessa tarefa. É verdade que haverá um custo para fazer isso, mas lembre-se de que raramente são dados usados, portanto não devem ser sérios. E o gerenciador de memória possui inúmeras otimizações para minimizar esse custo.

Mas em vez de pensar nisso como um custo, considere-o um investimento em desempenho. Assim como fazer investimentos sábios com dinheiro é uma coisa boa, o gerenciador de memória investe um pouco de tempo no uso do arquivo de paginação na expectativa de que ele trará grandes dividendos mais tarde. Geralmente funciona.

Esta não é uma ideia nova. Ele tem sido usado no Windows e no Linux há muitos anos e em grandes sistemas de computador muito antes disso. É um princípio testado e comprovado que foi otimizado ao longo das décadas.

Resumindo, deixe o Windows gerenciar o arquivo de paginação como desejar. Os designers sabem o que estão fazendo. Infelizmente, a Microsoft não fez um bom trabalho ao comunicar isso aos usuários e há muitos equívocos. Muito do que você lê na Internet sobre o arquivo de paginação contém, pelo menos, erros graves.

informação relacionada