Questão Como impedir o Windows 8 de cache de arquivos grandes?


Editar

Os arquivos de vídeo que eu falo não tinham relação com o LoL (jogo). Eles eram arquivos separados que eu baixei pessoalmente. Dos 8GB que foram usados, o jogo caiu, o jogo estava usando menos de 500MB. O Chrome estava usando 1 GB. Os serviços do sistema usavam menos de 500 MB e tudo o mais que eu tenho em execução era inferior a 1 GB. Meu consumo médio de memória está em torno de 2,5 GB - 3 GB para todos os programas / jogos.

Editar

O 6GB sendo usado foi depois que eu fechei o jogo e todos os outros aplicativos. Quando o jogo caiu, todos os 8GB estavam sendo usados (não em espera ou livre / não disponível para ser usado quando necessário) com 5GB sendo armazenados em cache arquivos de vídeo MKV que não estavam em standby / free. O jogo foi capaz de travar com "falta de memória" porque eu tenho minha memória virtual (arquivo de swap) desabilitada (o problema não era o jogo ser capaz de travar, mas porque esses grandes arquivos de vídeo MKV estavam sentados em todo o pool de memória forçando o jogo a falhar).

TL; DR

O Windows 8 armazenava em cache uma tonelada de arquivos MKV grandes como memória ativa (não em espera). Esses MKVs não estavam abertos em nenhum programa e isso foi depois de várias reinicializações sem abrir os MKVs. O uso do RAM MAP para liberar todos os "conjuntos de trabalho" limpou todos os MKVs do cache de RAM e reduziu meu uso de RAM de 6 GB para 2 GB.

Como evito isso?

INTRO

Estou executando o Windows 8 de 64 bits com 8 GB de RAM.

Eu não uso muitos programas. Os únicos programas "pesados" que uso são o Chrome, o League of Legends e talvez o Malwarebytes. Não um lote inteiro.

No entanto, meu jogo continuava caindo fora da memória erros. Eu estava ficando realmente intrigado com isso porque eu conhecer Eu não estava usando 8GB de RAM com o que eu estava fazendo.

Então eu olho para o gerenciador de tarefas e adicionando a maioria das coisas na minha cabeça eu tenho cerca de 2GB usado por relatórios de monitor de recursos 6GB sendo usado (sem programas "pesados" ativos). Realmente intrigado agora.

Obtenha mais detalhes com Ram Map programa. Isso me diz que arquivos mapeados está usando 4GB não é um incômodo para mim, se é tudo em espera ou pronto para ser lançado a qualquer hora. Mas não foi ... todos os 4GB foram ativo não em espera.

Então eu cavei mais fundo e fui para arquivo lister e listou pela memória ativa e encontrou o culpado ...


1


origem


Você tem seu arquivo de troca desativado? - Scott Chamberlain
Pode ser um vazamento de memória do driver. - Bigbio2002
Eu tenho meu swap desativado porque eu sei que não uso programas suficientes para abordar 8GB. Na verdade, depois que eu redefinir o pool de memória estou apenas no máximo 3GB com todos os principais programas que eu costumo usar sendo aberto. - Kenny Parker
postar os dados salvos do RAMMap (arquivo rmp): blogs.technet.com/b/askperf/archive/2010/08/13/… - magicandre1981
faça o upload dos dados do RAMMap. Eu preciso olhar para eles para ajudá-lo. - magicandre1981


Respostas:


Tanto o Chrome quanto o jogo não foram projetados para serem executados em um sistema sem um arquivo de troca, ele pressupõe que haverá um arquivo de troca e usará muito mais memória do que "o mínimo necessário" para executar para ajudar a melhorar o desempenho.

Suas opções são entrar em contato com os desenvolvedores de League of Legends e Chrome pedindo-lhes que reescrevam seu software para ser amigável ao arquivo não-swap (o que causaria um pior desempenho do software, porque eles precisariam gastar mais ciclos de CPU na memória gerenciamento) ou começar a usar um arquivo de troca.

Note, enquanto nos dias de Windows XP e anterior, desabilitar o seu arquivo de troca iria realmente dar um aumento de desempenho devido a uma falha no gerenciador de memória ser muito agressivo, não é mais verdade hoje. Não há motivo para não ter um arquivo de troca em uma versão moderna do Windows.


2



Eu acho que preciso esclarecer isso ainda mais. Eu verifiquei os nomes dos arquivos em "resumo do arquivo" no rammap. Os arquivos não tinham nada a ver com o LoL. Eles eram arquivos de vídeo que eu baixei pessoalmente. - Kenny Parker
A resposta ainda é a mesma, o jogo não é projetado para rodar em um sistema sem arquivo de troca. Suas duas opções ainda são as mesmas. - Scott Chamberlain
Eu joguei este jogo por anos sem nenhum arquivo de troca. Ele só caiu quando o meu uso de RAM foi de 100% pela primeira vez nesses anos. Eu sinto que todo mundo está tentando evitar a questão real. Eu fiz tantas edições e esclarecimentos para uma pergunta tão simples. - Kenny Parker


Os programas do Windows não ficam "sem memória" porque estão sem memória RAM. Eles estão sem memória endereçável. Na prática, isso acontece apenas com processos de 32 bits, já que eles podem endereçar apenas 4 GB (232) na melhor das hipóteses, e muitas vezes apenas 2 GB (231).

Além disso, a RAM usada para armazenar arquivos em cache está disponível para os programas quando eles precisam. O Windows ainda tinha 2GB livres, então é claro que não jogou fora arquivos em cache. Por que isso? Melhor usar memória livre, quando um programa perguntar. (Mas o seu programa provavelmente não poderia pedir mais do que 2GB)

Observe que isso corrige um bug nas versões anteriores do Windows (até o XP), que erroneamente liberavam a memória cache mesmo quando havia outra memória livre disponível. Você parece querer esse bug de volta.


1



Eles podem ficar sem memória se o espaço endereçável for maior que a memória virtual total disponível (o que pode acontecer facilmente se você tiver um arquivo de troca desativado) - Scott Chamberlain
@ScottChamberlain: Bem, isso está configurando seu sistema para problemas, portanto não é a configuração padrão. Também não é mencionado na questão, e com 2GB de memória RAM não importa de qualquer maneira. - MSalters
Sim, eu tive meu swap desativado. É por isso que o programa foi realmente capaz de travar com um erro de "falta de memória". O problema não era porque estava travando, mas porque esses arquivos de vídeo MKV estavam sentados em toda a minha memória RAM tornando inutilizável para outros programas (esses arquivos de vídeo em cache não estavam em modo de espera, eles eram parte de memória ativa dos "arquivos mapeados" ). Eu também editei minha pergunta para refletir isso agora. - Kenny Parker
A RAM ativa usada pelos arquivos em cache ainda pode ser usada por outros processos. O Windows reduzirá o conjunto de trabalho do cache de arquivos (e os conjuntos de trabalho de qualquer outro processo) se algo precisar de muita RAM (evidenciado por uma alta taxa de pagefault). Isso não é problema seu. O problema é que seu limite de confirmação é muito baixo para os programas que você está tentando executar. Veja minha resposta. - Jamie Hanrahan


Você está trabalhando sob um equívoco fundamental.

A mensagem que você está vendo não tem nada a ver com RAM, e não seria ajudada mesmo se todos esses arquivos mapeados não fossem mapeados, mesmo que toda a sua RAM estivesse livre.

Refere-se à memória virtual, ou mais precisamente, commit charge, que não pode ser maior que o limite de commit. O limite de confirmação é o tamanho da RAM (não apenas "RAM livre"! Toda a RAM) mais o tamanho atual do seu arquivo de paginação.

Seu jogo aparentemente está pedindo uma enorme alocação de espaço de endereço virtual. Seu sistema não possui commit suficiente disponível para satisfazer o pedido, então o jogo falha.

Note que após o jogo travar, você não será capaz de ver porque o problema ocorreu. A taxa de confirmação será igual ou inferior ao limite de confirmação. (Sempre é.) Como a solicitação de alocação do jogo falhou, ela não é refletida na taxa de confirmação atual. Não há maneira fácil de saber quanto o jogo estava pedindo.

Quanto ao motivo pelo qual você costumava executar o jogo sem arquivo de paginação, a pergunta não é "quem está usando a RAM", mas "quem está usando a taxa de commit". n.b .: Os arquivos mapeados pelo cache de arquivos não contribuem para o commit da cobrança. Nem é claro, a lista de páginas em espera.

A cura é adicionar RAM ou ativar seu arquivo de paginação.

Mais detalhes aqui: http://azius.com/blog/pagefile-yes1/ - segunda parte. Mas a primeira parte ajuda a entender a segunda parte.


1





Divisores MKV como LAV e Haali mapeiam o arquivo MKV para a memória "standby". Divx Media Foundation O divisor MKV mapeia o arquivo MKV para a memória "ativa" por algum motivo, consumindo uma grande quantidade de RAM, não permitindo que ele seja realocado conforme necessário.

Acredito que o divisor MKV da Divx Media Foundation está fazendo isso incorretamente e o divisor precisa ser instruído a mapear para a memória de espera como os outros divisores de MKV.

Eu tenho alguns screenshots com RAMMAP detalhando como o splitter mapeia a memória de forma diferente:

https://superuser.com/questions/778562/standby-memory-mapping-divx-media-foundation-splitter-mkv-playback-on-media

Se não houver uma maneira de corrigir esse mapeamento "ativo", provavelmente vou morder a bala e atualizar para 16 GB de RAM.


0



Um programa não pode mapear nada para o modo de espera. Essa é uma ação tomada pelo SuperFetch. Nem um programa pode mapear qualquer coisa diretamente para a RAM ativa. Os arquivos são mapeados para o espaço de endereço virtual. O pager no sistema operacional traz as páginas dos arquivos para a RAM à medida que são acessadas e as expulsa de "ativas", pois não são mais necessárias ou quando o arquivo não é mapeado. - Jamie Hanrahan
Obrigado Jamie. Acredito que este problema não seria com o divisor do DivX Media Foundation, já que ele só pode mapear para o espaço de endereço virtual. O problema existiria no funcionamento do pager no sistema operacional, trazendo os arquivos para a memória RAM ativa ao usar o divisor do Divx Media Foundation. Gostaria de saber se existe uma maneira de desativar o pager do mapeamento de arquivos MKV para RAM ativa ao usar o Divx Media Foundation Splitter. - MathewCNichols
Umm ... Como você propõe o trabalho do divisor nos dados no arquivo MKV se os dados não forem trazidos para a "RAM ativa"? A CPU não pode manipular nada que não esteja na RAM. Tudo o que pode fazer com dados em um arquivo é lê-lo na RAM ou gravá-lo da RAM no arquivo. - Jamie Hanrahan
Ah, e ... LAV e Haali não "mapeiam o arquivo MKV para a memória standby". Eles trazem o conteúdo do arquivo para o espaço de endereço virtual e o paginador do SO o traz para a RAM quando é acessado. Ele fica em espera quando o programa é feito com essas páginas, ou quando o SuperFetch diz "ah, você pode precisar desse arquivo novamente, eu vou deixar ele dentro / colocar na memória Standby". Mas as páginas em espera são tão disponíveis para uso imediato quanto "Livre". Eles não representam qualquer tipo de perda de RAM disponível. E eles não têm nada a ver com a mensagem "sem memória". - Jamie Hanrahan