
Estou no Windows 7 x64 com Intel i7 de 4 núcleos e 8 GB de RAM, mas ultimamente parece que a "RAM" do meu computador está localizada apenas no disco rígido.
Aqui está o que o gerenciador de tarefas mostra:
A quantidade total de memória usada pelos processos da lista é de aproximadamente 1 GB. E o que está acontecendo no meu computador há alguns dias é que um programa (Cataloger.exe) processa continuamente grandes quantidades de arquivos (cerca de 5 a 10 MB cada), abrindo-os e lendo-os repetidamente para fins de catalogação. Mas não cresce muito na memória e fica mais ou menos nesse tamanho, 100 MB. No entanto, a quantidade de dados que processa em, digamos, 30 minutos pode ser medida em gigabytes.
Então, meu palpite é que o cache de arquivos do Windows tem algo a ver com isso. E depois de algumas pesquisas sobre o assunto, me deparei com este programa, chamado RamMap, que exibe informações detalhadas sobre a RAM de um computador. Aqui está a captura de tela:
Então, para mim, parece que o Windows mantém na RAM enormes quantidades de dados que não são mais necessários, redirecionando quaisquer solicitações de alocação de RAM para o arquivo de paginação no disco rígido. Mesmo quando fecho o Cataloger.exe, o RamMap informa que o tamanho do arquivo mapeado é praticamente o mesmo por um longo tempo. E não é apenas este programa específico. Anteriormente, notei que uma desaceleração semelhante ocorreu após algumas operações massivas de arquivos com outros programas. Portanto, não é realmente um comportamento excepcional do Cataloger.exe e o problema se manifestou muitas vezes no passado.
Seja o que for, torna o computador umas 50 vezes mais lento. Abrir uma nova guia no Chrome leva de 20 a 30 segundos, mas abrir um novo programa pode levar até um minuto. Devido à lentidão, alguns programas até travam.
Então, o que você acha, o problema está oculto no cache de arquivos ou em outro lugar? Como faço para resolver isso?
Responder1
Isso é normal e tudo está funcionando corretamente. O Windows não mantém arquivos em cache na memória em vez de outros dados - Arquivos em cache significam que, em determinado momento, o Windowstivepara carregá-los na memória ou lê-los do disco, e algo de maior prioridade não apareceu desde então. Assim que você voltar a usar o computador e os programas solicitarem memória, o Windows removerá com prazer os arquivos em cache para liberar espaço.
Se você olhar para o RAMMap, notará que a maioria desses arquivos em cache estão alocados em "Standby" - isso significa que eles estão sendo mantidos na memória porque o Windows precisou deles no passado, pode precisar deles novamente e ficará feliz em descartá-los. se outra coisana verdadeprecisa do espaço.
Basicamente, o que você está vendo aqui é que seu programa solicita o carregamento de um grande arquivo de dados, então o Windows o carrega na memória. Gerenciar memória é um processo muito complexo, e o que o Windows está fazendo nos bastidores aqui é fazer um julgamento: ele analisa os processos atuais e vê que o Chrome está ocupando, digamos, 5 GB de memória (muitas guias!), mas que a maior parte dessa memória não foi tocada na última hora. Neste ponto, ele tem uma escolha: pode deixar o Chrome na memória e não armazenar os arquivos em cache. Isso significa que o processo do Catalogador pode levar horas em vez de minutos para processar um arquivo, especialmente se ele estiver pulando muito no arquivo; ou pode paginar as guias do Chrome e carregar o arquivo do Catalogador na memória e concluir esse processo rapidamente.
Agora, você sentirá dor quando o Windows precisar paginar o Chrome de volta à memória, mas o Windows não fará isso até que você solicite (ou seja, traga o Chrome de volta para o primeiro plano e selecione uma guia que foi paginada), e o que em última análise, precisa ser avaliado por você se a dor disso é maior ou menor que a dor da tarefa do Catalogador ter que esperar pela memória. Você pode tentar executar o programa como um serviço e dizer ao Windows para otimizar a capacidade de resposta ou tentar diminuir a prioridade do processo, mas tenho certeza que o que você vai querer é que o processo do Catalogador termine o mais rápido possível - Enquanto está maximizando a E/S do seu disco, todo o seu sistema ficará incrivelmente lento. Tudo o que requer E/S de disco será colocado em uma fila (até mesmo a navegação na web - ele também usa um cache!). Os programas abrirão lentamente, novas guias abrirão rapidamente, mas usá-los para alguma coisa será lento.
Se o programa estiver lendo sequencialmente arquivo após arquivo e depois não tocá-los novamente, concordo que o Windows não precisa armazenar os arquivos em cache. O problema aqui é que o Windows não sabe disso, porque ninguém está dizendo que não precisa ser armazenado em cache.
Se você tiver acesso ao código-fonte do programa Cataloger (ou puder solicitar modificações nele), ele poderá ser configurado para abrir arquivos com FILE_FLAG_NO_BUFFERING
, o que fará com que o Windows ignore o cache de disco para arquivos abertos pelo programa desta maneira. .
Se isso não for uma opção, a menos que o processo do Catalogadortempara ser executado em seu sistema, eu daria uma olhada para ver se há um computador sobressalente que não esteja sendo usado e se ele pode ser configurado como uma máquina dedicada para catalogar esses arquivos. Se ainda não houver, simplesmente aumentar sua RAM pode ser outra opção; os preços da memória são bastante baratos hoje em dia, e os desenvolvedores sabem disso - a maioria das coisas é otimizada para velocidade e capacidade de resposta ao custo da memória. 8 GB não é o que costumava ser.
Outra opção é mover todos os arquivos usados para um disco rígido separado e desativar especificamente o cache de disco dessa unidade.
Responder2
Eu tive exatamente o mesmo problema, é um processo chamado "intellimem.exe", eu apaguei e KABOM! de 80% de memória RAM e arquivo de paginação a nenhum arquivo de paginação e 20% de uso de memória RAM! e não tenho problemas.