Windows 10, processo de 'Sistema' que consome grandes quantidades de RAM


83

Desde que atualizei para o Windows 10, meu sistema consumiu RAM excessivamente

insira a descrição da imagem aqui

Eu tenho lido um pouco e determinado que é provável que um driver esteja vazando memória. Então, comprei o Windows Driver Kit e acompanhei o uso da memória com o poolmon:

insira a descrição da imagem aqui

No entanto, eu realmente não sei como proceder a partir daqui. O item marcado com "smNp" é o culpado nesta edição? Como passo a partir daí para realmente identificar o motorista?

Eu tentei algumas coisas como "C: \ Windows \ System32 \ drivers> findstr / s smnp . " Mas não retornou resultados. Também dei uma olhada no arquivo pooltag.txt e esta é a descrição que encontrei para ele:

insira a descrição da imagem aqui

Então, sim, qualquer ajuda seria apreciada. Desde já, obrigado.


1
ok, eu adicionei as informações que consegui encontrar. Vê-los
magicandre1981

1
Esse é um recurso do sistema para realmente manter mais coisas na RAM usando a compactação em vez de paginar no disco. @ magicandre1981 tem as informações corretas aqui, que devem ser aceitas como a resposta certa.
Mani Gandham

Os 14 megabytes mostrados pelo poolmon estão associados à tag smNp e é uma quantia puramente trivial. Você está preocupado com 1,3 GB no conjunto de trabalho privado do processo do sistema - por que se concentrar em 14 MB de pool não paginado (que não está no conjunto de trabalho de nenhum processo)?
precisa

Respostas:


13

Ao entrar no services.msc(via Win+R) e desativar o Superfetch, isso é completamente resolvido. Não tenho certeza se o Superfetch está quebrado apenas a partir de agora ou é "por design".

Além disso, aparentemente, livrar-se do arquivo de paginação terá o mesmo efeito, mas a solução acima é uma aposta mais segura .


1
Isso realmente funcionou. O uso da memória do sistema voltou a ~ 0,1 MB, mesmo após horas de uso. Obrigado!
Nayncore

26
Embora normalmente esse alto uso de memória seja uma bandeira vermelha para um vazamento de memória, essa memória está sendo usada legitimamente como RECURSO do Windows 10 (consulte a resposta de magicandre abaixo).
Bigbio2002

7
não é um bug e não deve ser desativado
phuclv


6
Se o recurso causar constantes avisos de pouca memória, não é um bom recurso. Agora, o meu Surface Pro com 4 GB de RAM é completamente inutilizável para desenvolvimento e, mesmo em laptops com 8 GB de RAM, recebo constantemente esses avisos. Polegar para cima para a solução!
Oleg I.

94

Examinei os rastreamentos xperf de vários usuários e aqui a função ntoskrnl.exe!SmKmStoreHelperWorkerdo Kernel começa a alocar memória.

Captura de tela
(Clique na imagem para ampliar)

Eu descobri isso em sysinternals .

Eu perguntei à Microsoft sobre isso e a resposta é que isso ocorre por design. Está relacionado à compactação da memória do sistema.

No anúncio do Windows 10 Build 10525, a Microsoft explicou um pouco :

No Windows 10, adicionamos um novo conceito no Gerenciador de Memória chamado armazenamento de compactação, que é uma coleção de páginas compactadas na memória. Isso significa que, quando o Gerenciador de Memória sente pressão na memória, ele comprime as páginas não utilizadas em vez de gravá-las no disco. Isso reduz a quantidade de memória usada por processo, permitindo que o Windows 10 mantenha mais aplicativos na memória física por vez. Isso também ajuda a fornecer melhor capacidade de resposta no Windows 10. O armazenamento de compactação fica no conjunto de trabalho do processo do sistema.Como o processo do sistema mantém o armazenamento na memória, seu conjunto de trabalho aumenta exatamente quando a memória está sendo disponibilizada para outros processos. Isso é visível no Gerenciador de tarefas e o motivo pelo qual o processo do sistema parece estar consumindo mais memória que as versões anteriores.

Então, em vez de gravar dados da memória no arquivo de paginação, ele os comprime. E essa memória compactada é mostrada no processo do sistema.

A Microsoft também postou mais detalhes no hub interno. Winbeta criou um artigo que inclui mais detalhes.

Aparentemente, o motivo disso aconteceu com a Microsoft optar por suspender os aplicativos UWP quando eles não estavam em primeiro plano, muito parecidos com o gerenciamento de alguns SOs de smartphones. Os usuários do Windows 8 entendiam (talvez não) que, se os aplicativos não estivessem na tela, eles não seriam executados até que o usuário voltasse para eles. A abordagem 'tudo ou nada' está sendo atualizada com o Windows 10, introduzindo uma camada entre o arquivo de paginação e a atividade de paginação normal. Agora, diante de problemas de pressão de memória, o MM determinará quais páginas devem ser movidas para a lista modificada em um processo chamado recorte.A lista modificada é uma lista secundária de arquivos de páginas que fazem backup de uma lista de arquivos de páginas em espera. Uma lista de backup é capturada caso a memória seja recuperada da lista de espera por outro processo, e o processo original procura sua página. Em vez de tudo ou nada, o Windows 10 MM compactará páginas não usadas em vez de gravá-las no disco. Com menos gravação, o resultado deve ser menos operações de disco - graças à compactação - e agora mais dados podem ser armazenados na memória.

insira a descrição da imagem aqui

De acordo com a equipe do Windows, “ Na prática, a memória compactada ocupa cerca de 40% do tamanho não compactado e, como resultado de um dispositivo típico executando uma carga de trabalho típica, o Windows 10 grava as páginas em disco apenas 50% com a mesma frequência que as versões anteriores do Windows. o sistema operacional. ”Se tudo correr conforme o planejado, os usuários do Windows poderão ter tempos de espera reduzidos para todos os dispositivos, além de um tempo de vida útil prolongado em sistemas que possuem discos rígidos baseados em flash .

Descompactação também é algo que o Windows 10 foi projetado para fazer bem. O Windows 10 está usando a combinação de parallelizability e leituras seqüenciais para produzir páginas na memória uma vez chamadas. A nova descompactação deve resultar em uma experiência mais rápida, pois o Windows 10 descomprime simultaneamente os dados e os lê em paralelo usando várias CPUs. As versões mais antigas do Windows podem parecer lentas por causa das taxas de transferência entre o disco.

A Microsoft também lançou um vídeo no canal9, que explica o recurso.

Compactação de memória no Windows 10 RTM
https://channel9.msdn.com/Blogs/Seth-Juarez/Memory-Compression-in-Windows-10-RTM

Neste vídeo, Mehmet Iyigun passou algum tempo discutindo por que o processo do sistema no Windows 10 está consumindo um pouco mais de memória e por que é uma coisa boa. Um processo que consome mais memória parece ruim - ou seja, até eu entender mais sobre gerenciamento de memória, paginação e falhas de página física / eletrônica. Acontece que o sistema operacional está fazendo algumas otimizações inteligentes que permitem que seus processos reduzam parte da memória, mas não necessariamente paginem em disco. A memória não apenas é preservada na RAM, mas também é compactada - tornando as falhas de página mais difíceis uma ocorrência mais rara. Os resultados devem proporcionar uma experiência mais rápida.

Nas versões TH2 mais recentes, a Microsoft atualizou a descrição no gerenciador de tarefas e agora também mostra que o processo SYSTEM hospeda o compressed memory:

insira a descrição da imagem aqui

para evitar confusões sobre o uso "alto".

Na atualização de aniversário do Windows 10, lançada em agosto de 2016, a Microsoft extraiu a compactação para agora mostrada em um pseudo processo chamado Memory Compressionpara não confundir mais os usuários por que o SYSTEM tem um uso de memória tão grande:

insira a descrição da imagem aqui

Mas parece que o Taskmgr não mostra esse processo, apenas o ProcessExplorer / ProcessHacker é capaz de mostrá-lo. O Taskmgr mostra apenas a quantidade de memória compactada na visão geral:

insira a descrição da imagem aqui

Se você passar o mouse sobre o gráfico de memória usado no Taskmgr, verá uma dica de ferramenta que mostra a quantidade de dados compactados.

insira a descrição da imagem aqui

Nesta demonstração, 388 MB são compactados para 122 MB, e 267 MB são salvos com a compactação.


9
@Zaibis: Eu acho que a idéia é que você não está "perdendo 1 GB". 1 GB foi reservado pelo Windows e será usado para alocações. Você não perdeu a memória.
Lightness Races em órbita em

12
"Memória não utilizada é memória desperdiçada" há muito tempo é o mantra do OS X. Parece que o Windows também aderiu.
Deceze 7/08

1
@ magicandre1981 O que você quer dizer comSystem Memory compression
user2284570

2
Eu não posso responder isso em detalhes. Eu só obtive as informações de design, tem algo a ver com uma compactação de memória e isso será explicado por um post do blog. Quando receber novas informações, atualizarei minha postagem.
precisa saber é o seguinte

2
@JosiahKeller A caixa de diálogo "pouca memória" é sobre pouca memória virtual. Não tem quase nada a ver com o uso ou a disponibilidade de memória física (RAM). Eles são contabilizados separadamente por todos os sistemas operacionais de desktop modernos.
David Schwartz

0

Encontrei um caso externo que causa alto uso de memória do sistema e queria incluí-lo caso essas informações beneficiem alguém.

Se você utiliza fortemente os Instantâneos de Volume da Microsoft (o instantâneo de software, não o instantâneo de hardware), mais instantâneos você mantém combinados com grandes alterações de dados, o Sistema consumirá mais RAM.

Normalmente, a quantidade de RAM usada para os Snapshots de volume é pequena e não será notada, a menos que você tenha um volume gigante (ou seja, 64 TB) com deltas de vários terabytes entre os snapshots. Por padrão, os instantâneos simplesmente se excluem se as E / S de gravação ficarem muito altas, mas existem maneiras de evitar isso, permitindo alcançar deltas maciços.

Abaixo está um caso extremo que mostra o processo do sistema de um servidor usando 13 GB de RAM. Este servidor possui apenas dois instantâneos de volume, separados por 15 dias, com cerca de 10 TB de dados gravados entre cada instantâneo.

Uso de memória do sistema em 13GB

O processo do sistema acima estava com 24 GB de uso e os três comportamentos a seguir foram observados:

  1. Após uma reinicialização e o login novamente, o sistema ficaria suspenso por um período de tempo em uma tela em branco até que a área de trabalho fosse exibida.
  2. Durante esse travamento, puxar o Gerenciador de tarefas (CTRL-SHIFT-ESC) mostrou o uso crescente de memória do sistema.
  3. Durante essa paralisação, o disco com os instantâneos de volume executou várias leituras que não foram exibidas no Monitor de desempenho. Porém, como o disco utilizava o iSCSI, a placa de rede mostrava um fluxo constante de leitura em torno de 200 Mbps.

Eu suspeitava de Snapshots de volume, então tentei excluir o snapshot mais antigo, que instantaneamente reduziu o uso de memória do sistema de 24 GB para 13 GB.

Nessas circunstâncias, esse pode ser um comportamento normal, embora eu não tenha confirmado isso com a Microsoft. Enquanto isso, adicionarei 32 GB de RAM adicional a este servidor para lidar com a sobrecarga do instantâneo.

(Nota: este é um servidor de backup de alto volume executando o Windows 2016 com uma unidade iSCSI de 64 TB SSD conectada. Ele mantém uma média de três instantâneos de volume a qualquer momento, com um novo criado a cada 15 dias. Há cerca de 10 TB de dados gravados entre cada instantâneo).


-1

Desative o pré-buscador na chave regedit: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\PrefetchParametersvocê provavelmente possui Enable Prefetcherum valor igual 2ou superior 3a0

Em seguida, você precisa desativar os Superfetchserviços

  1. Pesquisar services.msc

  2. Localize superfetchclique properties, defina-o como disablede interrompa o serviço também.

Realizo essas etapas e quando jogo e normalmente uso PC, o systemprocesso usa apenas 28k


12
Essa é uma ideia horrível. A pré-busca / super busca são usadas por um motivo. Se você acha que pode gerenciar a memória melhor que o seu sistema operacional, está enganado.
b1nary.atr0phy

Desabilitar a pré-busca (ou "limpar sua pasta de pré-busca") é realmente uma idéia muito boba. A pré-busca não faz com que o sistema use mais RAM. Ele acelera o carregamento de exe e dll quando você os inicia e só então. No SuperFetch, a Microsoft desabilita o SuperFetch por padrão em sistemas com um SSD para a unidade do Windows; eles sentem que o benefício não vale a pena. Pessoalmente, mantenho-o ativado porque tenho outras unidades, não SSDs, nas quais quero que o SF ainda funcione.
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.