2015-08-07 04:17:19 +0000 2015-08-07 04:17:19 +0000
82
82

Windows 10, processo 'Sistema' que toma quantidades maciças de RAM

Desde que actualizei para o Windows 10, o meu sistema tem consumido RAM excessivamente

Tenho estado a ler um pouco e determinei que é provável que seja um condutor a perder memória. Por isso, comprei o Kit de Driver do Windows e utilizei a memória rastreada com poolmon:

Contudo, não sei realmente como proceder a partir daqui. O item etiquetado “smNp” é o culpado nesta edição? Como passar de lá para a identificação efectiva do condutor?

Tentei algumas coisas como “C:\Windows\System32\drivers>findstr /s smnp .” mas não retornou nenhum resultado. Também dei uma vista de olhos ao ficheiro pooltag.txt e esta é a descrição que encontrei para ele:

Portanto, sim, qualquer ajuda seria apreciada. Obrigado de antemão.

Respostas (4)

93
93
93
2015-08-07 04:20:09 +0000

Olhei para vestígios xperf de vários utilizadores e aqui a função ntoskrnl.exe!SmKmStoreHelperWorker do Kernel começa a alocar memória.

(Clique na imagem para aumentar)

descobri isto em sysinternals .

Perguntei à Microsoft sobre isto e a resposta é que isto é por desenho. Está relacionado com a compressão da Memória do Sistema.

Em o anúncio do Windows 10 Build 10525, a Microsoft explicou-o um pouco :

& > No Windows 10, acrescentámos um novo conceito no Gestor de Memória chamado Loja de Compressão, que é uma colecção in-memory de páginas comprimidas. Isto significa que quando o Memory Manager sente a pressão da memória, irá comprimir páginas não utilizadas em vez de as escrever no disco. Isto reduz a quantidade de memória utilizada por processo, permitindo ao Windows 10 manter mais aplicações na memória física de cada vez. Isto também ajuda a proporcionar uma melhor capacidade de resposta em todo o Windows 10. A loja de compressão vive no conjunto de trabalho do processo do sistema. Desde que o processo do sistema mantém a loja na memória, o seu conjunto de trabalho aumenta exactamente quando a memória está a ser disponibilizada para outros processos. Isto é visível no Gestor de Tarefas e a razão pela qual o processo do Sistema parece estar a consumir mais memória do que as versões anteriores.

Assim, em vez de escrever dados de memória no pagefile, comprime-os. E esta memória comprimida é mostrada no processo do Sistema.

Microsoft também afixou mais detalhes no núcleo interior. Winbeta criou um artigo que inclui mais detalhes.

Aparentemente, a razão para isto teve a ver com a Microsoft ter optado por suspender aplicações UWP quando estas não estavam em primeiro plano, muito semelhante à gestão de alguns sistemas operativos smartphone. Os utilizadores do Windows 8 compreenderam (talvez não) que se as aplicações não estivessem no ecrã, não funcionariam até que o utilizador voltasse para elas. A abordagem ‘tudo ou nada’ está a ser actualizada ** com o Windows 10 introduzindo uma camada entre o pagefile e a actividade normal de paginação. Agora, quando confrontado com problemas de pressão de memória, o MM irá determinar quais as páginas que devem ser movidas para a lista modificada num processo chamado trimming.** A lista modificada é uma lista secundária de pagefiles de apoio a uma lista de pagefiles em espera. Uma lista de backup é capturada no caso da memória ser recuperada da lista de espera por outro processo, e o processo original vem à procura da sua página. Em vez de tudo ou nada, o Windows 10 MM comprimirá as páginas não utilizadas em vez de as escrever em disco. Com menos escrita, o resultado deverá ser menos operações em disco - graças à compressão - e agora mais dados podem ser armazenados na memória.

De acordo com a equipa do Windows, “ Na prática, a memória comprimida ocupa cerca de 40% do tamanho não comprimido, e como resultado de um dispositivo típico a executar uma carga de trabalho típica, o Windows 10 grava páginas em disco apenas 50% das vezes que as versões anteriores do SO. ” Se tudo correr como planeado, Os utilizadores do Windows poderão estar a experimentar tempos de espera reduzidos para todos os dispositivos, bem como tempos de vida prolongados em sistemas que tenham discos rígidos baseados em flash*.

& > A descompressão é também algo que o Windows 10 foi concebido para fazer bem. O Windows 10 está a utilizar a combinação de paralelismo e leituras sequenciais para produzir páginas na memória, uma vez chamadas. A nova descompressão deverá resultar numa experiência mais rápida, uma vez que o Windows 10 está simultaneamente a descomprimir dados e a lê-los em paralelo usando múltiplas CPUs. As versões mais antigas do Windows podem ter-se sentido lentas devido às taxas de transferência entre o disco.

Microsoft também lançou um Vídeo no canal9 que explica a característica.

Memory Compression in Windows 10 RTM https://channel9.msdn.com/Blogs/Seth-Juarez/Memory-Compression-in-Windows-10-RTM

Neste vídeo Mehmet Iyigun passou algum tempo a discutir porque é que o processo do sistema no Windows 10 está a ocupar um pouco mais de memória e porque é uma coisa boa. Um processo que ocupa mais memória soa como uma coisa má - isto é, até eu compreender mais sobre gestão de memória, paginação, e falhas de páginas duras / macias. Acontece que o sistema operativo está a fazer algumas optimizações inteligentes que permitem aos seus processos cortar alguma da memória mas não necessariamente paginá-la para o disco. Não só a memória é preservada na RAM, como também é comprimida - tornando as falhas de página dura uma ocorrência mais rara. Os resultados devem permitir uma experiência mais rápida.

No último TH2 Builds, a Microsoft actualizou a descrição no gestor de tarefas e agora também mostra que o processo SYSTEM hospeda o compressed memory:

para evitar confusões sobre o uso “elevado”.

No Window 10 Anniversary Update que foi lançado em Agosto de 2016, a Microsoft extraiu a Compressão para agora mostrada num pseudo processo chamado Memory Compression para já não confundir os utilizadores porque é que o SYSTEM tem uma utilização de memória tão grande:

Mas parece que o Taskmgr não mostra este processo, apenas o ProcessExplorer/ProcessHacker é capaz de o mostrar. A Taskmgr mostra apenas a quantidade de memória comprimida na visão geral:

Se pairar sobre o gráfico da memória usada no Taskmgr, verá uma dica de ferramenta que mostra a quantidade de dados que estão comprimidos.

Nesta demonstração 388MB são comprimidos a 122MB pelo que 267MB são guardados com a compressão.

13
13
13
2015-08-09 23:24:30 +0000

Entrando em services.msc (via Win+R) e desactivando o Superfetch resolve completamente este problema. Não tenho a certeza se o Superfetch está apenas quebrado a partir de agora ou se é “por desenho”.

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

0
0
0
2019-08-31 16:21:39 +0000

Encontrei um caso anterior que causa uma elevada utilização da memória do sistema, e quis incluí-lo no caso de esta informação beneficiar alguém.

Se utiliza fortemente os instantâneos de volume da Microsoft (o instantâneo do software, não o instantâneo do hardware), quanto mais instantâneos guardar, combinados com grandes alterações de dados, então o Sistema consumirá mais memória RAM.

Normalmente a quantidade de RAM utilizada para instantâneos de volume é pequena e não será notada, a menos que tenha um volume gigante (i.e. 64 TB) com deltas multi-terabytes entre instantâneos. Por defeito, os instantâneos serão simplesmente apagados se os IO’s escritos ficarem demasiado altos, mas existem formas de o evitar, permitindo-lhe alcançar deltas massivas.

Abaixo está um caso extremo mostrando o processo do sistema de um servidor usando 13GB de RAM. Este servidor tem apenas dois instantâneos de Volume, tirados com 15 dias de intervalo, com cerca de 10 TB de dados escritos entre cada instantâneo.

O processo do Sistema acima era anteriormente de 24GB de utilização, e foram observados os três comportamentos seguintes:

  1. depois de um reinício de sessão e de voltar a iniciar sessão, o sistema ficava pendurado por um período de tempo num ecrã em branco até aparecer o ambiente de trabalho.
  2. Durante este enforcamento, puxar o Gestor de Tarefas (CTRL-SHIFT-ESC) mostrou a utilização da memória do sistema a crescer.
  3. Durante este enforcamento, o disco com os Instantâneos de Volume realizou muitas leituras que não apareceram no Monitor de Desempenho. Embora, porque o disco utilizou iSCSI, a placa de rede mostrou um fluxo de leitura constante de cerca de 200 Mbps.

suspeitei de Instantâneos de Volume, por isso tentei apagar o instantâneo mais antigo, o qual deixou imediatamente de utilizar a memória do sistema de 24 GB para 13 GB.

Nestas circunstâncias, este pode ser um comportamento normal, embora não o tenha confirmado com a Microsoft. Entretanto, acrescentarei mais 32 GB de RAM a este servidor para lidar com a sobrecarga do Snapshot.

(Nota: este é um servidor de backup de alto volume com Windows 2016 com uma unidade SSD iSCSI de 64 TB anexada. Mantém uma média de três instantâneos de volume em qualquer altura, com um novo instantâneo criado a cada 15 dias. Há cerca de 10 TB de dados escritos entre cada instantâneo).

-1
-1
-1
2015-08-20 11:08:59 +0000

Desactivar o prefetcher na chave regedit: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\PrefetchParameters provavelmente tem Enable Prefetcher a um valor de 2 ou 3 então mude-o para 0

A seguir precisa de desactivar Superfetch em serviços

  1. procurar por serviços.msc

  2. Encontre superfetch clique em properties depois defina para disabled e pare também o serviço.

faço estes passos e quando estou a jogar e normalmente uso PC e o processo system usa apenas 28k