Eu tenho 16 GB de RAM do sistema. Na inicialização, sem aplicativos abertos, exceto o gerenciador de tarefas do Windows está usando cerca de 3 GB de RAM. Eu olhei na guia processos, mas nada parece estar fora do comum. Como posso descobrir por que meu Windows está usando tanta memória RAM?
todos os processos de todos os usuários
Lendo no poolmon, parece que meu driver de banda larga sem fio está usando cerca de 0,4 GB de RAM. Mesmo se eu removê-lo, ainda estaria usando 2,6 GB na inicialização, o que ainda é demais.
Depois de reinstalar o driver sem fio associado ao vazamento de memória. Eu tenho uma nova captura de tela e gostaria de confirmar que foi realmente um vazamento de memória.
Respostas:
Você tem um vazamento de memória causado por um driver. Veja o alto valor da memória não-paginável do kernel. No seu caso, esse valor é superior a 3,7 GB. Você pode usar o poolmon para ver qual driver está causando o alto uso.
Instale o Windows WDK , execute poolmon, classifique-o Papós o tipo de pool, para que não seja paginado no topo e Bapós bytes, para ver a marca que consome mais memória. Execute o poolmon indo para a pasta em que o WDK está instalado, vá em Ferramentas (ou C: \ Arquivos de Programas (x86) \ Windows Kits \ 10 \ Tools \ x64) e clique em poolmon.exe.
Agora veja qual pooltag usa mais memória, como mostrado aqui:
Agora abra um prompt do cmd e execute o comando findstr. Para fazer isso, abra o prompt do cmd e digite "cd C: \ Windows \ System32 \ drivers", sem aspas. Em seguida, digite "findstr / s __ . ", Onde __ é a tag (nome mais à esquerda em poolmon). Faça isso para ver qual driver usa essa tag:
Agora, vá para a pasta drivers (C: \ Windows \ System32 \ drivers) e clique com o botão direito do mouse no driver em questão (intmsd.sys no exemplo da imagem acima). Clique em Propriedades, vá para a guia Detalhes para encontrar o Nome do Produto. Procure uma atualização para esse produto.
Se a tag pool mostrar apenas drivers do Windows ou estiver listada no pooltag.txt (
"C:\Program Files (x86)\Windows Kits\8.1\Debuggers\x64\triage\pooltag.txt"
)você usa o xperf para rastrear o que causa o uso . Instale o WPT a partir do Windows SDK , abra um cmd.exe como administrador e execute:
capture 30 -60s do crescimento. Abra o ETL com WPA.exe, adicione os gráficos de pool ao painel de análise.
Coloque a coluna pooltag em primeiro lugar e adicione a coluna stack. Agora carregue os símbolos dentro do WPA.exe e expanda a pilha da tag que você viu no poolmon.
Agora encontre outros drivers de terceiros que você pode ver na pilha. Aqui, a
Thre
tag (Thread) é usada pelo AVKCl.exe do G-Data. Procure atualizações de driver / programa para corrigi-lo.fonte
Bem, primeira coisa, antes de entrar em uma resposta mais detalhada. Na sua primeira captura de tela, seu pool não paginado (um tipo de uso de memória do kernel) é de 1,3 GB. Isso me parece extraordinariamente alto, especialmente por apenas 30 minutos após a inicialização. Acho que pude ver o NP Pool ficando tão alto depois de uma quantidade prolongada de uso ou com um programa que vazava como uma peneira. Por outro lado, meu pool de NP geralmente tem entre 100 e 200 megabytes e meu pool de paginação pode chegar a 400 ou 500 (e isso ocorre depois de meu sistema funcionar sem reinicialização por semanas).
Você pode ativar algumas colunas adicionais no Gerenciador de Tarefas clicando com o botão direito do mouse nos cabeçalhos das colunas e escolhendo selecionar colunas. Você deve adicionar
Working Set (private)
,Working Set (shared)
,Commit
, eNP Pool
. Eu examinava todos os seus processos de todos os usuários e veria se algum deles tem um NP Pool com mais de 256 KB. Se você vir algum, especialmente qualquer um que seja consideravelmente mais alto, isso pode ser a fonte do problema, ou pelo menos parte dele.Seu conjunto de trabalho total, a quantidade de memória física em uso por um processo, é a combinação dos conjuntos de trabalho privados e compartilhados (WS). Privado geralmente é maior para a maioria dos processos, no entanto, pode haver alguns que usam uma quantidade maior de WS compartilhados. Os dois normalmente devem somar ao total de WS. Confirmar é a quantidade do seu conjunto de trabalho que foi confirmada no armazenamento de backup (na maioria dos casos, o arquivo de paginação do Windows). Os aplicativos em segundo plano geralmente têm uma Confirmação maior que o WS, indicando que grande parte do pool paginável foi trocado de memória e em seu arquivo de paginação (o que é bastante normal para aplicativos de desktop minimizados e não utilizados por um tempo).
O pool não paginado é uma memória que não pode e nunca será trocada da memória física ... que é efetivamente seu uso mínimo permanente de memória física. A memória do NP Pool geralmente contém código de programa e seções críticas que devem estar na memória física para se comportar corretamente ou com segurança, pilhas especiais etc. Entre 60 processos, se todos eles tiverem 256KB de memória do NP Pool, seu uso mínimo absoluto de memória física seria em torno de 15.360 KB. Na maioria dos casos, um ou dois aplicativos podem ter um pool de 256 KB de NP, enquanto a maioria possui menos, geralmente consideravelmente menos (ou nenhum). É altamente improvável que o sistema pagine a totalidade de todos os processos definidos, portanto, nunca espere que o uso da memória seja tão baixo.
Finalmente, o objetivo de ter mais memória é evitar a necessidade de paginar os dados de e para o espaço de memória estendido (troca, arquivo de paginação) em um disco físico. A paginação é um processo que envolve mover blocos de memória física alocada, empurrar alguns para o disco e trazer outros para a memória física do disco. A paginação é, para mantê-lo simples, altamente indesejável. Não é "ruim" por si só, mas pode ser um empecilho real para o desempenho quando ocorre com muita frequência. O ponto final de aumentar a RAM física total em um sistema é permitir que mais processos mantenham mais sua confirmação na memória física (conjunto de trabalho maior). Consumir memória não é um problema e, quando mais processos de execução usam mais memória, o desempenho total do sistema e o desempenho do processo ativo geralmente são mais altos,
O Windows gerencia a memória para você e automaticamente pagina os dados para dentro e para fora da memória de e para o arquivo de página (swap) para você. Se você executar um processo que precisa de 9 GB de memória e seu sistema já estiver usando 4 GB (de 12 GB), o sistema descobrirá automaticamente quais processos não precisam de acesso imediato a todo o conjunto de trabalho e paginará alguns ou todos do pool paginável para trocar para liberar 1 GB extra. Se o seu grande processo eventualmente precisar de mais memória, o Windows reduzirá ainda mais o conjunto de trabalho de outros processos até que tenha espaço livre suficiente para alocar o bloco recém-solicitado. Seu grande processo pode eventualmente consumir toda a memória disponível, exceto o NP Pool e talvez alguma sobrecarga mínima adicional para a execução periódica de processos que não estão permitindo que o Windows libere mais do seu conjunto de trabalho (i. e eles têm falhas de página pendentes que o Windows trocaria de memória física, mas, como estão sendo solicitadas, não podem ser movidas.)
Se um processo precisar de mais memória do que é permitido acessar (processos de 32 bits geralmente podem acessar 2Gb e alguns pouco menos de 4Gb com técnicas aprimoradas, enquanto processos de 64 bits geralmente podem acessar cerca de 48Gb de memória, cada um), as janelas às vezes tentam virtualizar sua memória com espaço de troca. Se um aplicativo de 32 bits quiser usar seu espaço máximo permitido de 2 GB, mas apenas 1,2 GB estiverem disponíveis, o Windows reservará 2 GB completos no arquivo de paginação e moverá os próprios dados do processo para dentro e para fora do arquivo de paginação, conforme necessário. suporta o uso de memória do aplicativo. O uso total de "memória" nesse caso pode parecer maior que a memória física disponível, ao passar pelo Total Commit. A Confirmação total geralmente atinge o tamanho máximo do arquivo de paginação total, que quando gerenciado pelo sistema, geralmente é de 2 a 3 vezes a quantidade de memória física. No seu caso,
Um ponto final. Você disse em sua resposta que tinha 16 GB de RAM, enquanto o Gerenciador de Tarefas vê apenas 12 GB de RAM. Uma de duas coisas aqui. Seu sistema realmente tem apenas 12 GB de RAM ou um dos seus sticks não está sendo registrado corretamente. Se um bastão de memória ram (suponho 4x bastões de 4Gb), pode ser ruim, pode não estar totalmente encaixado corretamente na sua placa-mãe ou sua placa-mãe pode ter um problema de detecção de memória.
Para verificar se é o último, atualize o BIOS da placa-mãe para a versão mais recente. Eu tive um problema semelhante ... meus seis bastões de ram DDR3 de canal tripple (6x 2Gb) eram bons com base em testes individuais de cada um ... mas minha placa-mãe decidiu aleatoriamente não contar um ou dois deles de vez em quando, muitas vezes me deixando com apenas 8 GB de RAM. Uma atualização do BIOS corrigiu o problema e agora tenho acesso confiável a todos os 12 GB de memória.
fonte
Está usando muita memória RAM, porque foi projetado para isso. Não há absolutamente nenhum custo associado ao uso da RAM. De fato, a RAM usada é melhor que a RAM livre, porque o sistema operacional não precisa fazer nada para usá-lo. O uso de RAM livre exige que seja usado, o que exige esforço.
Se você está pensando "Quero minha RAM livre agora para poder usá-la mais tarde", esqueça. A RAM não precisa estar livre agora para uso posterior. Você pode usá-lo agora e depois. Não há trocas aqui - não há absolutamente nenhuma desvantagem em usar a RAM.
A RAM é mantida usada e alternada diretamente de um uso para outro sem ter que passar pelo esforço de liberá-lo, apenas para usá-lo novamente. Os sistemas operacionais modernos deixam a RAM livre apenas quando não têm outra opção.
fonte
“Why is Windows using RAM?”
: a questão é“Why do the RAM usage numbers not add up; why is one part reporting a higher usage than another part?”
Este post deve ser um comentário, na melhor das hipóteses, porque não aborda a questão real ou mesmo tenta respondê-la; ele apenas concorda com um pouco de conselho, e péssimo conselho, já que, se o OP o ignorasse conforme sugerido, o vazamento de memória não seria descoberto.Um motivo não mencionado acima é o Hyper-V.
Consegui identificá-lo com o excelente utilitário RamMap :
A captura de tela é de depois. Antes de a memória "Driver Locked" ter mais de 6 GB, mais de 80% da RAM dessa máquina específica. Eu tive que entrar no Gerenciador Hyper-V e desativar a "Memória dinâmica". Curiosamente, mesmo após a reativação, a memória "Driver Locked" permaneceu baixa - só posso presumir que instâncias anteriores a aumentaram e que o Hyper-V não reduz automaticamente sua memória alocada:
fonte