O que há de errado em desativar o arquivo de paginação do Windows?

15

As pessoas dizem que você sempre precisa de um arquivo de paginação e que aumentará o desempenho, mas meu Windows 7 está configurado para ser executado sem um arquivo de paginação. Eu simplesmente não entendo por que as pessoas dizem isso - Eu tenho 6 GiB de RAM, e a única vez que veio mesmo perto de ficar sem RAM foi quando eu estava compilando cromo, para o qual eu habilitado temporariamente um arquivo de página.

Eu realmente preciso de um arquivo de paginação * para aumentar a velocidade em situações típicas? Por quê?

* Estou ciente de que os despejos de memória precisam de um arquivo de paginação. Porém, eu nunca uso despejos de memória, então isso não importa.

user541686
fonte

Respostas:

8

Um arquivo de paginação nunca aumentará o desempenho, mas também não o degradará (com gerenciamento de memória adequado). A execução sem um arquivo de paginação, no entanto, tenderá apenas a aumentar a instabilidade do sistema em relação aos aplicativos que solicitam memória que não está disponível para uso.

A menos que seu sistema operacional seja particularmente ruim no gerenciamento de memória, um arquivo de paginação com 6 GiB de memória deve ser de pouca utilidade. Isso não quer dizer que não terá utilidade alguma; O IIRC MS Windows é um pouco louco quando se trata de paginar as coisas, mesmo quando há muita memória disponível. (Ora, eu nunca vou saber.)

No entanto, o que acontece quando você não possui o arquivo de paginação em uso pode ser motivo suficiente para ativá-lo: falhas graves. A maioria dos aplicativos espera receber a memória solicitada. Quando não o fazem, eles batem. (Ah, mas os bons velhos tempos de viver em alguns milhares de bytes se foram ... e, para muitos desenvolvedores, a prática de lidar com o gerenciamento de memória também.)

Se um aplicativo for criado corretamente, falhará bem. (Com sorte, não vai falhar. Mas não conte com isso.) Na maioria dos aplicativos, você terá uma falha fantástica em suas mãos. Além disso, quanto mais aplicativos você chegar perto desse limite, maior a probabilidade de você ter instabilidade em todo o sistema.

Caso de minha própria experiência. Windows XP, 4GiB, Nenhum arquivo de paginação. Perf foi ótimo. Até começarmos a chegar perto do limite de 4GiB. Aí as coisas ficaram malucas: os aplicativos falharam, os itens de menu apareceriam apenas parcialmente (ou nem apareceram), os botões não fariam nada, etc. Voltei ao arquivo de paginação, mesmo que o desempenho fosse pior - a estabilidade geral era simplesmente melhor e mais importante.

Agora, talvez você não use nenhum aplicativo ou trabalhe em aplicativos que pressionariam o 6GiB, mas posso pensar em algumas situações em que você pode se aproximar: edição de vídeo, edição de fotografia, mixagem e produção de áudio etc. - essencialmente qualquer coisa em que você esteja lidando com muitos dados (trabalhando ou fazendo streaming). Quando esses dados excederem seus recursos de memória, haverá boas chances de que seu aplicativo fique "maluco".

Kerri Shotts
fonte
Então, basta colocar (Sim / Não): é correto dizer que, se eu nunca usar mais de 2 GiB de RAM , não verei um aumento de desempenho ? Ou ainda há uma ressalva em algum lugar, mesmo com essa pré-condição?
User541686
9
Não, um arquivo de paginação nunca melhora o desempenho. Apenas melhora a estabilidade . A paginação, por definição, é uma operação em nível de disco e as operações em disco são sempre mais lentas que as operações em nível de RAM. E, é mais provável que você, mesmo com 6GiB (nunca excedendo 2GiB), ainda tenha alguns problemas de desempenho, pois o Windows continuará, frustrantemente, paginando processos não utilizados em disco. Quem pensou que era sábio, eu gostaria que eles 'confessem'!)
Kerri Shotts
OK. Talvez seja porque é o que eu queria ouvir, não sei, mas gosto da sua resposta. : P Parece bastante razoável, obrigado!
User541686
11
Não é verdade - um arquivo de paginação PODE melhorar o desempenho, porque o local dos dados não utilizados no swap pode ser usado para armazenamento em cache. Isso causou um voto negativo para você.
peterh - Restabelece Monica
11
O arquivo de paginação PODE melhorar o desempenho. Aumenta a RAM disponível para todos os tipos de caches rápidos, melhorando o desempenho de inicialização / carregamento / operação do programa. Sem o arquivo de paginação, essa preciosa RAM física seria preenchida com lixo irremovível.
Arca-kun
7

Este artigo de Mark Russinovich lhe dirá tudo o que você sempre quis saber sobre o arquivo de paginação.

Não sei se "cache" é o termo adequado a ser usado com relação ao que o arquivo de paginação faz. Um cache é um local de armazenamento temporário de dados rapidamente acessível. Um sistema operacional "falha" as coisas no arquivo de paginação quando há muita disputa por RAM física. Portanto, é um paliativo para o estouro de RAM impedir que os programas travem com força devido à falta de memória. Mas acredito que o Windows tenta colocar coisas que não foram acessadas há algum tempo no arquivo de paginação (e o Linux também pode fazer isso); nesse sentido, é um cache, mas não é realmente sua função principal.

De qualquer forma, leia o artigo. Ele fornecerá boas diretrizes sobre o que definir o seu arquivo de paginação. Como o @Seepeep Bansal diz, pode haver um jogo ocasional que exige que você tenha um como parte de uma "verificação de requisitos" para executar (mas eu não conheço nenhum).

EDIT: Este exemplo pode ajudá-lo a entender a função do arquivo de paginação:

Digamos que você tenha 512MB de RAM. Você tem vários programas abertos, incluindo um navegador minimizado que consome 250 MB de RAM e o uso total de RAM de tudo o que está sendo executado naquele momento é de 500 MB.

Então, você inicia outro programa (por exemplo, um processador de texto) que deseja alocar 150 MB de RAM. Fora da memória. No entanto, se tivermos um sistema de paginação, as páginas de memória que contêm seu navegador minimizado podem ser paginadas em disco. Então, o novo programa pode carregar.

Agora, digamos que você queira voltar ao navegador depois de um tempo. Bem, ele precisa "paginar" o que acabou de enviar para o disco. Se houver RAM livre suficiente naquele momento, isso poderá ser feito sem problemas. Se não houver, outra coisa deve ser paginada primeiro. Se houver muitos programas competindo pela CPU e houver paginação constante, as coisas ficam lentas e você tem a condição conhecida como "debulhar". Toda essa entrada e saída de paginação causa desempenho mais lento, mas evita que os programas sofram falhas "graves" devido a erros de falta de memória. Esse é o objetivo do arquivo de paginação. Muita paginação, ou seja, "debulhar" provavelmente não é melhor do que um programa que está desistindo porque não consegue mais RAM na maioria das vezes.

Agora, você pode ver como se existem algoritmos para antecipar o que pode não estar sendo usado em um determinado momento, então o sistema operacional pode "pré-paginar" coisas que não acredita que serão usadas imediatamente. Portanto, isso é responsável pelo Windows usando o arquivo de paginação em que ele existe, mesmo que tenha RAM suficiente. Ele está tentando disponibilizar o máximo de RAM possível. O Windows é como o Linux, onde a RAM livre atua como um cache de disco; portanto, se o equilíbrio for executado corretamente, poderá contribuir para o desempenho geral. Isso tudo faz parte do design do sistema operacional e por que leva 10 anos para obter um bom sistema operacional de milhares de programadores.

Portanto, para realmente responder à sua pergunta, essa é a única coisa errada ao desativar o arquivo de paginação. Voltando ao exemplo que forneci, sem o arquivo de paginação, você simplesmente não conseguiria iniciar o navegador, ou programas mal escritos que não são programados defensivamente para antecipar erros de OOM podem ser realmente estranhos.

LawrenceC
fonte
@ultrasawblade: Eu ainda não entendo: O objetivo de qualquer tipo de "cache" é impedir uma viagem ao disco . Se você estiver indo para lá de qualquer maneira, por que não pegar o arquivo de onde quer que esteja? Qual é o objetivo do arquivo de paginação?
User541686
@ultrasawblade: Além disso, sobre o artigo: Diz in general having [a page file] will mean more usable memory being available to the system,. Espere o que? Mais memória disponível? > 3 GiB de espaço RAM permanentemente não utilizado não é suficiente? (Confuso, já que raramente uso mais de 2 GiB.) #
User541686
2
Os arquivos de paginação NÃO são armazenados em cache! Se o seu ram estiver cheio e você ainda quiser ter certeza de que o sistema ainda tem mais RAM disponível, ele começará a copiar dados do RAM para o disco (de processos que parecem estar com sono), para que você ainda tenha RAM disponível para seus novos processos!
devorado elysium
2
@ultrasawblade: A objeção que tenho contra a sua edição é que o seu exemplo especifica um uso de 97% de RAM (500/512), enquanto o meu exemplo especifica um uso de 33% de RAM (2 GB de 6). Eu não estava perguntando sobre o que acontece se eu chegar perto do limite; Eu já estou bem ciente dos problemas que isso causa. Eu estava perguntando sobre o que acontece se você ainda tem um longo caminho a percorrer, onde nenhuma debulha ou algo parecido (deveria?) Ocorreria. Se você puder fazer o mesmo argumento para o meu caso (6 GiB de RAM e 2 GiB sendo usados), isso seria muito melhor; caso contrário, simplesmente não aborda minha pergunta.
User541686
3
+1 para o link Russinovitch. Aqui está a resposta. Se você deseja abrir mão de um mecanismo de segurança para evitar possíveis falhas, essa é a sua responsabilidade. O Windows funcionará perfeitamente sem o arquivo de paginação, a menos que decida não. ;)
Kara Marfia
2

Um arquivo de paginação não é apenas para armazenamento de despejos de memória, não é essencialmente feito para isso.

O arquivo de paginação existe para que ele possa armazenar dados que a RAM não precisa conter, é como um cache para itens que não precisam existir na memória, fornecendo mais RAM para outras coisas.

Você está certo de que talvez não precise de um arquivo de paginação se tiver 6 GB de RAM, mas pode precisar de um arquivo de paginação para determinados itens. Lembro que alguns jogos exigem um arquivo de paginação e também pode ser útil se houver um.

Não há mal nenhum em criar um arquivo de página de 500 MB apenas para evitar problemas se um determinado processo precisar.

Sandeep Bansal
fonte
Mas minha pergunta é: digamos que nunca uso mais de 2 GiB de RAM. A ativação do arquivo de paginação me dá um aumento de velocidade, afinal? ("Não dói" é diferente de "Sim, isso oferece um benefício".) #
User541686
Bem, com 6 GB de RAM, você não notará nada, mesmo que haja RAM disponível, o arquivo de paginação sempre será usado para outras coisas. Eu tenho 4 GB, nunca realmente vou além disso. Mas eu tenho um 1GB Pagefile só meter, como PC diárias têm espaço 500GB + HDD agora, para pelo menos 500-1000MB não será uma perda
Sandeep Bansal
@ Sandeep: Hm ... o que exatamente são essas "outras coisas"? O motivo pelo qual não ligo o arquivo de paginação é que não entendo por que o Windows usaria o disco rígido quando há tanta RAM livre, por isso estou curioso para saber quais são essas "outras coisas".
User541686
É o mesmo que Linux, por que o Linux usa espaço de troca quando tem RAM para acessar. O arquivo de paginação contém arquivos que não foram usados ​​por um período de tempo longe da RAM.
Sandeep Bansal
@ Sandeep: Eu não tenho idéia do por que o Linux faz, a mesma diferença para mim. Qual é o sentido de manter arquivos no arquivo de paginação? Se eles não estão na RAM, por que não apenas lê-los onde quer que estejam localizados no disco?
User541686
1

O primeiro passo é entender o que é um cache, ou melhor, para que os diferentes caches são usados.
A CPU possui um pequeno cache interno que permite armazenar resultados de OP, estados de sinalizador e endereços calculados. Em um núcleo dual, acredito que o cache interno tenha cerca de 1 MB. É extremamente rápido, acessível apenas pelos componentes internos da CPU e o mais afetado pelo calor em uma CPU com overclock.

O cache de nível 2 atua como um buffer de alta velocidade para transações de CPU para memória e também mantém encadeamentos de código coletados por pré-busca. Em um dual core, acredito que uma instalação típica teria 6 MB de cache lvl2. É muito rápido, apesar de mais lento que a memória cache interna, é acessível apenas ao controlador de memória e à CPU e reside em uma linha dedicada no barramento.

Um arquivo de paginação é realmente um cache, na medida em que armazena dados que podem ou não estar presentes na memória. Um sistema operacional pode usar o arquivo de paginação para várias tarefas, uma das quais é salvar o estado atual de um arquivo de dados que ainda não foi confirmado no disco. Quando um arquivo de paginação não existe, cabe ao aplicativo de terceiros fornecer essa funcionalidade internamente. O problema com esse cenário é que muitos programas não se comportam bem quando se trata de coleta de lixo e você fica com arquivos .temp espúrios no disco. Esses remanescentes não fazem parte do manifesto da instalação e podem impedir um procedimento de desinstalação e também degradar a velocidade de acesso ao disco.

Minha opinião é que um arquivo de troca normalmente é uma coisa boa de se ter. De fato, se o seu sistema é altamente preenchido com o Ram e é dedicado a 1 tarefa específica, e esse aplicativo cuida de todas essas coisas, um arquivo de troca pode não ser necessário. Um exemplo pode ser um videogame Arcade que roda na plataforma Windows; normalmente, eles são instalados apenas com os drivers necessários para os dispositivos presentes e provavelmente não sofrerão contenção de drivers. Na maioria das vezes, porém, a maioria dos aplicativos não cuida de todos os problemas em potencial que possam surgir, especialmente daqueles que incluem o impacto de outros aplicativos de terceiros e a disputa de drivers.

Embora você possa notar uma diminuição de desempenho baixa a moderada no curto prazo de adição de um arquivo de paginação, o desempenho a longo prazo deve permanecer consistente. Não ter um arquivo de paginação pode parecer mais rápido no início, mas com o tempo o desempenho diminui consideravelmente.

Steven Malm, MCP.

Steven Malm
fonte
"Quando um arquivo de paginação não existe, cabe ao aplicativo de terceiros fornecer essa funcionalidade internamente." -> Não tenho muita certeza do que você quer dizer; os programas realmente não se importam se existe ou não um arquivo de paginação.
User541686
0

Experiência pessoal

No momento, meu laptop com 8GB de RAM tem problemas para impedir a criação / uso do arquivo de paginação. Minha vida é um inferno. Recebo constantemente avisos de "Pouca memória", aplicativos falham, etc. O uso de 3 programas com 1 a 1,5 GB cada (por exemplo, navegador da web, Visual Studio com plug-ins especiais etc.) está andando sobre o gelo fino.

Outro argumento

O uso de dados do cache físico da RAM é muito rápido. Quanto mais RAM física "livre" você tiver, maior será o cache que ela poderá armazenar. Quanto mais dados inativos o sistema operacional puder mover da RAM física para o arquivo de paginação, mais RAM física será liberada para caches de dados acessados ​​com freqüência.

Suponha que você jogue algum jogo que carrega os dados de localização quando você muda de localização. Você também tem um navegador rodando, o que deixa, digamos, 2 GB para o jogo, o que é suficiente para um único local. Sem um arquivo de paginação, toda vez que você mudar de local, os dados serão carregados lentamente do disco rígido. Com um arquivo de paginação, os dados não utilizados do navegador da Web seriam enviados para o arquivo de paginação e a preciosa RAM física será usada para armazenar os dados em vários locais, resultando em uma carga de localização muito mais rápida.

Ark-kun
fonte