Questão Devo desabilitar o arquivo de troca se eu tiver muita RAM ou devo movê-lo para uma unidade de RAM virtual?


Imagine que eu tenha toneladas de memória RAM. Vamos dizer 64GB. Isso é muito para PCs de jogos. Agora, a localização padrão de um arquivo de paginação no Windows é na unidade principal do sistema operacional, seja HDD ou SSD, que são mais rápidos em geral, mas ainda não tão rápido quanto a RAM.

Algo me diz que desabilitar o arquivo de paginação no disco rígido ou criar uma unidade RAM virtual e deixar o arquivo de paginação estar lá poderia fazer com que o Windows mova toda a sua memória virtual para a RAM e assim aumentar o desempenho do sistema, mas não tenho muito conhecimento área, de modo que pode não ser verdade em tudo.

Eu tentei os dois, mas não consegui analisar os resultados para chegar a uma conclusão definitiva com o meu nível de conhecimento nas coisas da memória.

Isso funcionaria? Se não, por quê?


92


origem


Ter um arquivo de paginação em um disco RAM nunca realiza nada. Você retira uma certa quantidade de memória disponível e adiciona uma certa quantidade de memória virtual. Soma nula. Só não tem arquivo de paginação. - usr
Faz sentido fazer isso no Linux em alguns casos em que o disco RAM que hospeda o arquivo de troca é realmente compactado. Vejo: en.wikipedia.org/wiki/Zram. No entanto, não acho que o Windows tenha esse recurso disponível. - Matt H
A resposta é sim, mas há muitos descrentes. - Mehrdad
@ user367257 criar um disco de memória RAM para armazenar seu arquivo de página é como emprestar a seu amigo £ 10 para que ele tenha dinheiro suficiente para permitir que você peça emprestado £ 10 dele. Pode ser tecnicamente possível, mas tudo que você conseguiu é complicar desnecessariamente uma jornada para lugar nenhum. - Rob Moir
Eu faria (e faço) apenas desativá-lo para um SSD, já que você só recebe tantas gravações (mesmo que seja muito agora), com 6 GB. Isso funciona bem. - Ry-


Respostas:


Não importa quanta RAM você tenha, você quer que o sistema seja capaz de usá-lo eficientemente. Não ter nenhum arquivo de paginação em todas as forças do sistema operacional para usar a RAM ineficientemente por dois motivos. Primeiro, ele não pode tornar as páginas descartáveis, mesmo que elas não tenham sido acessadas ou modificadas em um tempo muito longo, o que força o cache de disco a ser menor. Em segundo lugar, é preciso reservar RAM física para alocar alocações que provavelmente nunca precisarão dela (por exemplo, um mapeamento de arquivo modificável e privado), levando a um caso em que você pode ter muita memória RAM livre e, no entanto, as alocações são recusadas evite comprometer demais.

Considere, por exemplo, se um programa faz um mapeamento de memória privada gravável de um arquivo de 4GB. O sistema operacional tem que reservar 4 GB de RAM para este mapeamento, porque o programa poderia modificar cada byte e não há espaço, exceto RAM, para armazená-lo. Então, imediatamente, 4GB de RAM é basicamente desperdiçado (ele pode ser usado para armazenar em cache páginas de disco limpas, mas é sobre isso).

Você precisa ter um arquivo de paginação para aproveitar ao máximo sua memória RAM, mesmo que ela nunca seja usada. Ele age como uma apólice de seguro que permite que o sistema operacional realmente use a RAM que possui, em vez de ter que reservá-lo para possibilidades que são extraordinariamente improváveis.

As pessoas que projetaram o comportamento do seu sistema operacional não são tolas. Ter um arquivo de paginação dá ao sistema operacional mais opções, e não causará problemas.

Não faz sentido tentar colocar um arquivo de paginação na RAM. E se você tiver muita RAM, é muito improvável que o arquivo de paginação seja usado (ele só precisa estar lá), portanto, não importa quão rápido o dispositivo esteja.


133



Eu estava contradizendo o voto negativo. Mas para o seu último comentário: Eu corro duas máquinas diferentes sem trocar. Está perfeitamente bem se você souber exatamente como a máquina será usada. - spudone
Suspeito que o arquivo de paginação em uma ramdrive começou como uma "solução alternativa" de culto de carga pelo fato de que algum software se recusará a iniciar se detectar que não há um arquivo de paginação. (Já me disseram que as ferramentas gráficas / de vídeo da Adobe fazem isso.) - Dan Neely
@DavidSchwartz A informação que você fornece é tecnicamente correta, e é uma boa informação para saber. Mas a conclusão de que você deve ter sempre um arquivo de página, independentemente da quantidade de memória RAM que tenha, não está correta e sustento minha afirmação de que essa não deveria ser a resposta aceita. - Jason Wheeler
Eu só não gosto de ouvir que "arquivos de paginação são mágicos, então não os desligue ou você vai se arrepender" quando eu sei que sob muitas circunstâncias comuns que você posso desligue-os e veja com segurança uma melhoria no desempenho, pois você não estará mais aumentando a E / S do disco em 100% ou mais sempre que o MMS quiser fazer alguma coisa. Tudo o que eu quero ouvir das pessoas do outro lado deste debate é "sim, há circunstâncias em que você pode desativá-las e reduzir a E / S do disco, o que pode resultar em surras". Não estou dizendo que os arquivos de paginação são sempre ruins, talvez você possa dizer que nem sempre são necessários. - Fred Hamilton
Eu percebi que o que estava me irritando sobre tudo isso é que um lado parece estar dizendo "arquivos de paginação nunca fazem nada além de bom" e o outro lado é "arquivos de paginação são terríveis" e então as pessoas ficam entrincheiradas de um lado ou do outro. A "verdade" é que, em alguns casos, elas são muito úteis e até mesmo evitam colisões e, em outros casos, não são necessárias e podem, na verdade, diminuir o desempenho. Estou feliz com isso como minha declaração final, independentemente. Viva por muito tempo e prospere, @David Schwartz. - Fred Hamilton


Você está totalmente correto em sua suposição.

Os algoritmos de gerenciamento de memória são muito complexos e, por qualquer meio, não são perfeitos. Então, a troca ocorre mesmo quando há muita RAM extra. Em alguns sistemas, como Linuxvocê pode controlar permuta, em outros você não pode. Ao trocar dados quando ainda há bastante RAM, o sistema a seu próprio modo se prepara para a situação em que pode ficar sem RAM.

Portanto, desabilitar a funcionalidade de troca pode dar a você uma melhoria no desempenho, porque você só estará usando a RAM, que é mais rápida, como você já disse.

Uma coisa a considerar (e você já mencionou isso) - você precisa ter suficiente RAM para acomodar todos os programas que você está executando, caso contrário, você está correndo o risco de executar fora da memória. Neste caso, o desempenho irá cair, alguns processos podem ser finalizados pelo sistema operacional e o sistema pode sofrer travamento / congelamento. (leia mais sobre isso Aqui)

Em algumas máquinas, especialmente aquelas que mantêm o arquivo de troca no HDD e não no SSD, o efeito de desabilitar a troca é muito perceptível. Em outros, não é tão óbvio. Mas mesmo se você não obtiver melhorias óbvias, pense nisso de outra maneira, desabilitando a troca, você economizará espaço em disco no seu SSD.

Ao desabilitar a troca, você também evitará que os algoritmos de memória façam uma operação desnecessária - movendo dados da RAM para o swap e vice-versa - no caso do SSD, isso evitará desgaste excessivo. E, em qualquer caso, isso melhorará o desempenho, eliminando operações desnecessárias.

Além disso, leia:


30



@ChrisH Você provavelmente não conseguiria carregar um banco de dados sql em um processador de texto, já que esses são executados inteiramente na RAM :-) - TylerH
Esta resposta está incorreta e contém muita desinformação. Mas a maneira simples de ver porque está errado é isso - as pessoas que projetaram o comportamento de memória do seu sistema operacional são provavelmente algumas das pessoas mais inteligentes do mundo. Por que eles projetariam um sistema tal que dar a ele mais opções (a opção de trocar se, e somente se, ele achar que é o melhor) tornaria seu desempenho pior? Apenas um idiota desenharia um sistema como esse. - David Schwartz
@ DavidSchwartz, não vejo como o fato de as pessoas que desenvolveram algoritmos de gerenciamento de memória serem inteligentes faz alguma diferença no assunto original. OP perguntou se desabilitar o swap pode melhorar o desempenho e eu expliquei que ele pode, sob certas condições e pode levar a problemas em outras condições. Respondendo sua pergunta sobre o porquê (?) - posso dizer, porque os algoritmos não são perfeitos e cabe ao usuário ajustá-los. É por isso que há um parâmetro de swappiness no Linux e é por isso que desabilitar a troca é possível. - Art Gertner
@smc Não há nada incomum no caso de uso do OP. A noção de que sistemas operacionais são não devidamente ajustado para casos de uso padrão do pântano é um absurdo completo. (Veja minha resposta para mais sobre por que você não quer fazer isso.) - David Schwartz
A suposição de que um dado algoritmo sempre tomará uma decisão desejável para o usuário é totalmente falsa. Eles tomam decisões com base em um conjunto de parâmetros que os programadores decidiram ser importantes. Isso pode estar em desacordo direto com o que um usuário precisa que aconteça. - Anaksunaman


Você pode desativar com segurança o arquivo de paginação?

Se você ficar sem memória livre, incluindo a memória virtual, o sistema não poderá continuar a garantir a execução determinística e será encerrado. Antes que isso aconteça, o sistema operacional fará várias outras coisas, como matar programas que usam muita memória. O que eu quero dizer é que a memória é sempre finita, e todos os sistemas operacionais podem lidar com isso. Portanto, limitar o total de memória disponível a 64 GB não prejudicará o Windows - muitos sistemas não podem ir além de 8 GB, mesmo com um arquivo de paginação, porque com 1 ou 2 GB de RAM, o arquivo de paginação geralmente é muito menor que 6 ou 7 GB. Deve-se notar que, contanto que você tenha uma quantidade excessiva de RAM não utilizada, a sobrecarga do SO mantendo um arquivo de paginação não será mensurável.

Faz sentido colocar o arquivo de paginação em um disco ram?

Para aumentar a memória disponível, a maioria, se não todos os sistemas operacionais avançados, usam algum tipo de arquivo de swap onde eles pegam alguma memória que está na RAM e não é acessada há algum tempo, escreva a memória no disco rígido (swapfile aka arquivo de paginação) e apague a memória da memória RAM para que haja mais memória disponível. O swapfile é usado para estender o tamanho máximo da memória além do tamanho da RAM disponível.

Portanto, usar um ramdisk (que reduz a memória disponível pelo tamanho do disco virtual) para hospedar o arquivo de troca (que aumenta a memória disponível pelo tamanho do arquivo de troca) funcionará, mas não fará muito sentido. Ele não oferecerá mais memória do que desabilitar o arquivo de paginação, ainda assim exigirá que o sistema execute algoritmos de paginação.


14



Mas, caso o arquivo de paginação esteja em uma unidade RAM virtual, o tempo usado para copiar alguns megabytes da memória RAM para o disco rígido virtual ou vice-versa será reduzido. E se o arquivo de paginação for desativado completamente, não deve haver tempo gasto com isso. Isso está correto? - user1306322
Corrigir. Copiar bytes da RAM para um arquivo de paginação que está em um ramdisk é o arquivo de paginação mais rápido possível. Mas não copiar é mais inteligente. - Peter
Swapfiles estão lá para compensar a falta de RAM. Se houver muita RAM, não há necessidade de compensar. Seu sistema operacional ainda usará o swapfile, então é mais rápido desligá-lo nesse caso.
@Mast Isso é uma simplificação grosseira. Swapfiles também estão lá para permitir o uso eficiente da RAM. - David Schwartz
@ DavidSchwartz Talvez, mas essa é a explicação que me explicou o melhor. Na maioria dos casos, uma pequena quantidade de arquivos de swap é sempre benecial sobre nenhum arquivo de swap. No entanto, não tenho recursos para comprovar isso.


Para reiterar o que os outros disseram, mover a troca para um disco RAM direto é um tanto inútil (no caso mais comum, veja abaixo). Consegue-se que em certo ponto, quando o sistema está faminto de memória livre, alguns dados são movidos da RAM para a RAM de uma maneira bastante ineficiente.

Tendo swap no HDD / SSD consegue que o sistema operacional possa limpar algumas páginas RAM completamente não utilizadas e usar o espaço liberado para, e. cache de arquivos ou outros buffers do sistema. Você pode não perceber que o sistema aloca menos desses buffers de RAM porque você não tem memória virtual disponível sem um arquivo de paginação; Então, na verdade, você pode estar diminuindo seu desempenho desativando a troca.

No entanto, um disco RAM compactado como unidade de troca, uma unidade "ZSWAP", pode ser benéfica em casos de borda (onde você pode precisar de apenas alguns MB RAM adicionais para evitar a troca para HDD), melhorando a eficiência de espaço de um segmento de RAM até certo ponto.


8



+1 por mencionar o ZSWAP. É comumente usado em algumas plataformas móveis, além de ser usado no OS X 10.9 (embora além de swap). - James_pic
Observe que "disco RAM compactado como uma unidade de troca" ainda tem o problema de não fazer nada por todos os "arquivos de paginação" que não sejam o arquivo de página real. - Jamie Hanrahan


Se você não tiver um arquivo de paginação, então, no caso de um BSOD (travamento), o Windows não poderá gravar o arquivo de despejo de memória. Isso significa que você não poderá analisar o problema usando as ferramentas apropriadas.

Ter o arquivo de paginação na RAM é quase inútil, já que pode ser perdido na falha.

Para mais informações, consulte o artigo da Microsoft. Noções básicas sobre arquivos de despejo de memória.


4





Para o Windows, da boca dos cavalos:

Alguns acham que nenhum arquivo de paginação resulta em melhor desempenho, mas, em geral, ter um arquivo de paginação significa que o Windows pode gravar páginas na lista modificada (que representam páginas que não estão sendo acessadas ativamente, mas não foram salvas em disco). arquivo de paginação, tornando a memória disponível para propósitos mais úteis (processos ou cache de arquivos). Portanto, embora possa haver algumas cargas de trabalho com melhor desempenho sem arquivo de paginação, em geral, uma significa que a memória utilizável estará mais disponível no sistema (não importa que o Windows não consiga gravar os despejos de memória do kernel sem um arquivo de paginação grande o suficiente para segurá-los).

https://blogs.technet.microsoft.com/markrussinovich/2008/11/17/pushing-the-limits-of-windows-virtual-memory/

  • memória utilizável - por isso, embora isso recomende ter memória virtual, também sugere que você precisa de quantidades realmente grandes de RAM para se beneficiar de não ter nenhum arquivo de paginação / memória virtual. Eu tenho 4GB de RAM 128GB SSD sem arquivo de página, mas eu usá-lo para navegar na web e digitar documentos do Word.

4



De minhas lições pessoais aprendidas, e algo que eu prego para todos os novos funcionários: Existem apenas 2 regras. # 1: nunca confie na Microsoft. # 2 .. você não ouviu a regra 1, então não há regra 2. - Nick


Não desative o arquivo de troca  Não é só quando você fica sem memória. Não há ganho de desempenho direto ao desativá-lo, o windows só lê quando necessário, grava o tempo todo para que esteja pronto sempre que for necessário.

Você pode reduzi-lo para cerca de 2/3 do tamanho da memória se tiver mais que cerca de 4 GB, porque armazena a imagem da memória compactada. Você pode colocá-lo em seu disco rígido mais lento que não está sendo acessado por outro disco rígido se você não tiver espaço em um SSD. Mas é benéfico ter um em algum lugar.

Veja esta resposta para mais informações sobre o porquê. https://superuser.com/a/286476/4236


3





Em teoria, colocar o arquivo de paginação na memória RAM não faz nenhum sentido, porque você está apenas esgotando o que você supostamente ganha, e o Windows é construído com base no pressuposto de que o arquivo de paginação não será usado para tais finalidades.

Na prática, porém, o design e a filosofia falhos podem chegar até mesmo ao kernel do Windows, e o gerenciamento de memória da Microsoft não é necessariamente perfeito. Muitos descobriram que colocar o arquivo de paginação em um Ramdisk de fato resulta em um aumento de desempenho, contanto que você tenha uma quantidade razoável de memória.

Eu compilei um post que mostra uma coleção de tais usuários de uma solteiro Discussão do fórum que descobriu que, apesar de ter grandes quantidades de RAM livre, o arquivo de paginação ainda está sendo usado:

http://www.overclock.net/t/1193401/why-it-is-bad-to-store-the-page-file-on-a-ram-disk/290#post_23508589


3



Obrigado por compilar esta lista. Deve ajudar a apresentar algumas evidências de que a teoria e a prática diferem nesta questão. Virtual memory − A paging file is an area on the hard disk that Windows uses as if it were RAM. Sim, como se: p - user1306322
Surpresa recompensa apreciado - obrigado! - Dan W
esta conclusão é falha. o fato de que o sistema operacional grava coisas no arquivo de paginação, embora aparentemente tenha "quantidades massivas de RAM livre", não prova nada sobre "design e filosofia defeituosos". Isso significa que você não tem informações suficientes para avaliar adequadamente as decisões do sistema operacional. Apenas para iniciantes, considere o caso em que há muitas páginas modificadas. Eles são gravados no arquivo de paginação e movidos para a lista de espera - agora eles são parte do "disponível". Você entendeu? A RAM está disponível porque seu conteúdo foi gravado no arquivo de paginação! - Jamie Hanrahan
@JamieHanrahan: Isso não explica por que as pessoas ainda têm problemas apesar de raramente usarem mais do que uma fração da RAM. Os comentários nesse segmento incluem: "Eu nunca usei mais do que a metade", "O uso do arquivo de página é de aproximadamente 2,7 GB, onde o uso da RAM é de 3,23 GB de 16 GB." Eu criei e movi meu arquivo de paginação para o RAMDisk ". - Dan W
A maioria desses comentários se deve a informações ruins. É improvável que os problemas de desempenho sejam resolvidos mantendo as coisas na RAM que não estão sendo acessadas com frequência. O arquivo de paginação não é o único arquivo envolvido na paginação; existem centenas de outros, então é improvável que fazer algo que afete apenas o arquivo de paginação (e retire GBs de RAM do resto do sistema, aumentando assim a taxa de pagefault) terá qualquer efeito "dramático". Tais relatórios geralmente não são mantidos quando testes adequadamente controlados são feitos. Você pode encontrar anedotas para apoiar praticamente qualquer crença; Eu os acho pouco convincentes. - Jamie Hanrahan


Convertendo um sistema operacional que foi projetado em seu núcleo para não usar o swap é muito mais difícil do que parece.

Macs modernos têm uma partição de recuperação - parte da unidade principal com um sistema operacional despojado que pode reparar ou restaurar o sistema principal. Nos dias de instalação do DVD eles rodaram um processo customizado, o sistema agora cria um disco RAM para a partição swap, já que não é garantido que um instalador tenha espaço em disco disponível. O SO inclui as estruturas necessárias para executar o software de manutenção incluído, que é idêntico aos utilitários disponíveis após a instalação. Muito menos trabalho para todos.

Limitar o sistema a um aplicativo por vez significa que ele nunca é usado, mas o sistema operacional espera que ele esteja lá.


2