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

0

Minha pergunta é baseada na observação de que, desde a introdução do Windows de 64 bits, muito mais pessoas ao meu redor parecem se apaixonar por bloqueios relacionados a arquivos de páginas de seus sistemas. Por exemplo, algo simples como zeros(2e5) no MATLAB aloca não apenas 1600 kB de zeros, mas 160 GB. Graças ao espaço de endereço de 64 bits, essa quantidade pode ser resolvida, mas muitas vezes não é im RAM. (Eu poderia citar muitos exemplos como esse que reduzem à alocação de memória.) Como resultado, o Windows usa o arquivo de paginação e armazena 160 GB de zeros no disco. Somente depois disso (ou de um desligamento forçado) o seu sistema torna-se responsivo novamente.

No Windows de 32 bits, esse problema foi amplamente impedido 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 a 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, muito rápida, como um SSD extremamente caro. Eu tenho a tendência de desativar arquivos de paginação 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 isso?

    
por bers 08.06.2018 / 14:19

2 respostas

3

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

No Linux, existe a suposição de que qualquer alocação "esparsa" de memória não será totalmente utilizada e, portanto, permite que os programas sobrecarreguem continuamente a memória até que ela fique fisicamente esgotada. No caso em que os programas realmente atendem a sua memória comprometida, mas não há memória RAM suficiente ou troca para atender a demanda, ele começará a matar processos.

O Windows faz o oposto e supõe que toda a memória alocada eventualmente será usada e, portanto, todas as reservas serão respeitadas até que a memória física eo tamanho do arquivo de paginação sejam atendidos. Se um programa conseguir alocar memória, ele poderá usá-lo. Se não for possível alocar memória, atingiu o limite de RAM e o tamanho do arquivo de paginação.

Ao desabilitar o arquivo de paginação, um programa que aloca memória que não está usando (isto é, assume um arquivo de paginação) pode fazer com que você acabe quando ainda tem algum "livre".

Se você quiser fazer uso de toda a sua RAM em um sistema Windows, você deve deixar o sistema funcionar como deveria, dando a ele um arquivo de paginação.

    
por 08.06.2018 / 14:38
1

O arquivo de paginação fornece 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 possível. Esse 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 confirmação será um pouco menor que o tamanho da RAM. O gerenciador de memória controla o total de memória alocada para garantir que isso nunca exceda o limite de confirmação.

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

Acertar o limite de commit no Windows é uma coisa ruim. A maioria das aplicações não lida muito bem com essa eventualidade e o próprio SO muitas vezes não consegue tolerá-lo.

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

A qualquer momento, é provável que um computador contenha uma grande quantidade de dados que não tenham sido acessados por um longo tempo e, de fato, nunca possam ser acessados durante a sessão. O gerenciador de memória, é claro, não tem como saber o quão importante é esse dado, então ele deve mantê-lo em algum lugar.

Armazenar todos esses dados raramente usados em RAM de alta velocidade é um uso incorreto desse precioso recurso. Se a RAM não tivesse esse ônus, haveria mais disponibilidade para uso do aplicativo e para fins de armazenamento em 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 aliviar a RAM deste dever. É verdade que haverá um custo em fazer isso, mas lembre-se que raramente são usados dados, por isso não deve ser grave. E o gerenciador de memória tem várias otimizações para minimizar esse custo.

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

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

Em resumo, 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. Uma grande parte do que você lê na Internet sobre o arquivo de paginação, no mínimo, contém erros graves.

    
por 08.06.2018 / 19:50