A taxa de confirmação está 100% cheia, mas a memória física é de apenas 60% ao usar nenhum arquivo de paginação


25

Desativei o arquivo de paginação no meu sistema (o disco rígido é muito lento, não é possível comprar um novo imediatamente, não é possível mover o arquivo de paginação para outra partição). Quando vejo o Resource Monitor, usando aplicativos que exigem memória, o sistema mostra que a carga de confirmação está quase 100% cheia. De fato, se eu continuar exigindo mais memória, os programas começam a falhar quando a taxa de confirmação atinge efetivamente 100%.

Enquanto isso, o sistema diz que estou usando apenas 50-60% de memória física e tenho cerca de 1 GB de memória disponível (livre + em espera).

Se a taxa de confirmação é a memória total realmente solicitada, por que o sistema diz que tanta memória está livre? A memória física não está sendo usada pelo Windows? O gráfico de memória está errado? Estou esquecendo de algo?

Gráfico de confirmação de carga x gráfico de memória física Gerenciador de tarefas


2
Outra boa resposta sobre o assunto está aqui: brandonlive.com/2010/02/21/measuring-memory-usage-in-windows-7 .
cnst

Muito bom artigo. Isso me ajudou a entender muito melhor esse problema. Por que você não o publica como resposta?
Jason Oviedo

2
Por favor, não desative as pessoas do seu arquivo de paginação. Esta é uma idéia idiota
Milney

@Milney Eu concordo, normalmente não se deve desativar o arquivo de paginação. No momento da pergunta, fazia sentido para mim, pois o disco estava muito lento, tanto que estava prejudicando meu sistema. Na verdade, foi bastante útil, além de fazer essa pergunta, a capacidade de resposta geral do sistema melhorou muitas vezes.
Jason Oviedo

@JasonOviedo Esse não deve ser o caso e indica que algo está muito errado. Dar mais opções ao sistema NÃO deve torná-lo mais lento. O sistema não precisa usar o arquivo de paginação apenas porque ele possui um. (O que significa que esta é provavelmente uma pergunta XY A pergunta certa é precisamente por isso que o arquivo de paginação fez o seu sistema mais lento..)
David Schwartz

Respostas:


26

Ficar fora do limite de confirmação enquanto você ainda tem muita RAM disponível não é incomum. Nem o limite de confirmação nem a cobrança de confirmação estão diretamente relacionados à RAM disponível ou disponível.

O limite de confirmação = tamanho do arquivo de paginação atual + tamanho da RAM.

Como você não possui um arquivo de paginação, o limite de confirmação é menor do que seria se você tivesse um arquivo de paginação. Não importa quanto da RAM é grátis . Para o limite de confirmação, apenas a quantidade de RAM instalada é importante. Você pode ficar sem o limite de confirmação mesmo com 90% da sua RAM livre ou disponível.

A taxa de confirmação é uma contagem de memória virtual, não física. Suponha que meu programa solicite 2 GB confirmados, mas ele acessa apenas 0,5 GB. Os 1,5 GB restantes nunca são afetados, nunca são atribuídos à RAM; portanto, o uso da RAM não reflete os 2 GB, apenas 0,5 GB.

Ainda assim, "confirmação do sistema" é aumentada em 2 GB porque o sistema "confirmou" que haverá um local para armazenar meus 2 GB, caso eu precise realmente de tudo. O fato de que em qualquer execução do programa não necessariamente tentarei usar tudo isso não ajuda. Eu pedi 2 GB e o retorno bem-sucedido dessa ligação me diz que o sistema operacional "comprometeu" - ou seja, prometeu - que eu posso usar tanto espaço de endereço virtual. O sistema operacional não pode fazer essa promessa, a menos que haja algum lugar para manter tudo.

Então: coloque seu arquivo de paginação de volta, adicione mais RAM ou execute menos coisas ao mesmo tempo. Ou alguma combinação dos três. Essas são as suas únicas opções para evitar erros de "pouca memória" e "falta de memória".

Veja também minhas respostas aqui (mais) e aqui (muito mais).


3
Especificamente, antes que o Windows aloque memória, ele quer garantir que pode cumprir essas alocações quando elas forem usadas. Mesmo que as alocações não sejam totalmente usadas, o Windows se recusará a alocar mais se não puder fazer essa garantia. Um arquivo de paginação, usado ou não, fornece armazenamento adicional de backup.
23414 Bob

4

Como ilustra o teste de alocação de memória no artigo http://brandonlive.com/2010/02/21/measuring-memory-usage-in-windows-7/ , o Windows é um tipo de sistema que falharia em uma grande alocação de memória se essa alocação, juntamente com todas as alocações anteriores (o conceito que a Microsoft chama de "confirmação"), colocaria o total "acima" acima da soma da memória física e da soma de todos os arquivos de paginação (troca).

Considere que uma alocação por si só não usa nenhuma memória real (nem física nem swap), antes que uma leitura ou gravação ocorra no espaço de endereço virtual do processo para a alocação mencionada acima. Por exemplo, uma alocação de 2 GB por si só afetaria os números "Confirmar" (na conversa do Windows 7), deixando a "Memória Física" em paz (até que a leitura / gravação dentro da alocação mencionada ocorra).

No que diz respeito ao design do sistema operacional, a abordagem alternativa seria sempre permitir a alocação de qualquer tamanho (a menos que a memória disponível já esteja completamente esgotada) e, em seguida, permitir que os aplicativos falhem na leitura / gravação. Consulte /cs/42877/when-theres-no-memory-should-malloc-or-read-write-fail para obter mais detalhes.


2
Sim. O argumento para a abordagem do Windows: é razoável esperar que os programadores verifiquem o status de um malloc (ou, no Win32, VirtualAlloc). Depois que a chamada for bem-sucedida, o programa pode confiar que o vas alocado é utilizável e permanecerá assim até um correspondente gratuito ou VirtualFree. Por outro lado, as leituras e gravações comuns da memória (ou seja, desreferenciamento de ponteiros) podem gerar exceções de acesso à memória. Mas nenhum programador espera ter que verificar o status após cada desreferência de ponteiro. Eles não retornam um status de qualquer maneira, portanto, isso teria que ser feito com um manipulador de exceções. Feio.
Jamie Hanrahan

2

A memória disponível não é o que você pensa que seria. Na verdade, não é usado, é realmente um cache de arquivos de processos finalizados recentemente ou processos aparados que foram forçados a renunciar alguma memória a outros processos. Eles poderiam ser chamados de volta para o objetivo original. veja para mais detalhes.

http://support.microsoft.com/kb/312628

Como não ter um arquivo de paginação, isso é muito ruim. O Windows degrada mal sem um. Lembre-se de que até arquivos executáveis ​​são usados ​​como arquivos de troca quando não há arquivo de paginação. Mesmo se a unidade estiver lenta, é melhor ter um arquivo de paginação até obter de 8 a 16 GB de memória. Algumas pessoas pensam que mesmo o Windows 7 pode funcionar sem um então.

Dou regularmente um impulso à máquina antiga fazendo algumas coisas. Limpe o disco rígido o máximo possível. Copie qualquer coisa que você possa remover temporariamente da unidade para um backup. Remova os aplicativos que você não precisa. Remover aplicativos podem reinstalar.

Quando tudo isso é feito, desfragmenta seu disco rígido. Nesse ponto, recrie seu arquivo de paginação. Será o mais próximo possível da frente da unidade. Crie um tamanho fixo cerca de 1,5 vezes a memória. Essa é a minha regra, geralmente eu tenho tamanhos entre 1 e 3 de memória. Isso dará um ligeiro aumento de velocidade em relação aos locais habituais em que seria colocado.

Eu uso o desfragmentador auslogic, é gratuito (anúncios para mais ferramentas). Há outros que fazem isso também. Confira os desfragmentadores em portableapps.com. Otimiza o disco colocando arquivos acessados ​​recentemente perto da parte frontal da unidade para um acesso mais rápido. Ele mostra onde o arquivo de paginação está localizado, para que você possa ver se o moveu para os 25% superiores da unidade.

Depois disso, reinstale os aplicativos e copie seus dados novamente.

Eu diria que você recebe 10 ou 20% de aumento. Mas o principal valor é que muita hesitação desaparece para uma experiência mais suave.


3
Usando alguns testes, fica claro para mim que, quando o disco está muito lento, não ter um arquivo de paginação acelera o sistema. Eu posso dizer a diferença de muitos segundos em tarefas simples como alternar entre aplicativos.
Jason Oviedo

@ Mark Você está enganado. A grande maioria dos sistemas Windows é executada com um arquivo de paginação (porque é assim que o Windows é executado por padrão, por um motivo bom e suficiente) e quase todos eles usam discos de velocidade semelhante. E quase nenhum deles mostra esses problemas. O problema não é "o arquivo de paginação", é que você não tem RAM suficiente. Observe que a eliminação do arquivo de paginação não elimina a paginação de e para o disco - apenas elimina uma das centenas de arquivos normalmente envolvidos na paginação.
Jamie Hanrahan
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.