Qual é a causa de um alto uso da CPU de 'sistema e memória compactada' no Windows 10?


38

Há uma observação a ser feita para o Windows 10 no meu laptop rodando com 24G de memória disponível e 2.5G usado. Não há pressão de memória. Outras questões analisaram o consumo de memória (que não é o problema aqui). Em todas as questões relacionadas aqui e em outros lugares, não consegui encontrar uma explicação adequada para a questão da utilização excessiva da CPU nos últimos dois meses após uma das atualizações do Windows 10.

Posso aceitar que haja valor nesse serviço ou processo, mas que seja executado continuamente e que use recursos adicionais de CPU e, como conseqüência, use menos energia da bateria, esse é o problema que estou tentando resolver.

Em alguns artigos deste site, foi sugerido que eu desligue SuperFetch e configure uma entrada de registro para PrefetchParameters como 0. Fiz os dois e executei uma reinicialização.

Eu reinicio a máquina, desativo o protetor de tela e inicio o gerenciador de tarefas. Depois de alguns minutos, o serviço rotulado como 'Sistema e memória compactada' começa a receber 5% da minha cpu, de forma consistente. Minha utilização de cpu base é talvez 1%, o que mantém o ventilador baixo. Mas quando o serviço 'sistema e memória compactada' é executado nos 5%, os fãs aumentam. E apenas continua correndo.

Sillyness Por que esse serviço precisa estar funcionando consistentemente como aquele sem pressão de memória? Quaisquer mecanismos adicionais que eu possa tentar desligá-lo ou determinar o que ele está realmente fazendo? Existem entradas de arquivo de registros em algum lugar? Ou uma ferramenta de diagnóstico aprofundada?

how-to-disable-windows-10-memory-compression - sem respostas reais aqui

windows-10-system-process-taking-maciço-quantidades-de-ram

17993-windows-10-memory-compression

desktop-build-10525-e-windows-10-memória

www.techish.net/system-and-compressed-memory/

windows-10-build-1511-superaquecimento-cpu-fan-sempre

Gravador de Desempenho do Windows - agora precisa de um link para informações sobre como interpretar as informações

manutenção de esfrega


1
Sim, eu nunca entendi porque o Windows usa o arquivo de paginação quando há muita memória, desabilitando o arquivo de paginação pode resolver o seu problema, eu gostaria de saber.
Moab


@Moab: A percepção de que o Windows "usa o arquivo de paginação quando há bastante memória" vem de um rótulo errado no gerenciador de tarefas do Windows XP - eles rotularam os gráficos "uso de PF" quando deveria ter sido "carga de confirmação". Se você usuário PerfMon para examinar o uso real do arquivo de paginação, você geralmente o achará muito menor que o esperado.
Jamie Hanrahan

2
capturar um rastreamento do uso da CPU. Instale o WPT do Win10 SDK: dev.windows.com/en-us/downloads/windows-10-sdk, execute o WPRUI.exe, selecione CPU, disco, VirtualAlloc, ResidentSet e capture 1-2 minutos do uso do SYSTEM e salve em um arquivo ETL. Compacte a pasta ETL + NGENPDB em um arquivo 7z / RAR, carregue o arquivo compactado no OneDrive, crie um link de compartilhamento e poste o link de compartilhamento aqui
magicandre1981

@ magicandre1981: obrigado por oferecer uma metodologia possível. O arquivo pode ser encontrado em oneunified.net/files/rpb.20160102.WPR.7z . Se você ver algo, você poderia postar sua metodologia? Tenho certeza que muitos outros posts poderiam fazer uso da técnica. ... de novo thanx.
Raymond Burkholder

Respostas:


26

Analisando o arquivo ETL com o WPA mostra que o uso da CPU não vem da compactação da memória do sistema. Vem de ntoskrnl.exe!MiScrubMemoryWorker:

Line #, DPC/ISR, Process, Stack Tag, Stack, Count, TimeStamp (s), % Weight
8, , , ,    |    |    |- ntoskrnl.exe!MiScrubMemoryWorker, 79667, , 12,45
9, , , ,    |    |    |    ntoskrnl.exe!MiScrubNode, 79667, , 12,45
10, , , ,   |    |    |    ntoskrnl.exe!MiScrubNodeLargePages, 79667, , 12,45
11, , , ,   |    |    |    ntoskrnl.exe!MiScrubNodeLargePageList, 79667, , 12,45
12, , , ,   |    |    |    |- ntoskrnl.exe!MiScrubPage, 79663, , 12,45
13, , , ,   |    |    |    |    |- ntoskrnl.exe!RtlScrubMemory, 79653, , 12,45
14, , , ,   |    |    |    |    |    |- ntoskrnl.exe!RtlpGenericRandomPatternWorker, 38549, , 6,02

Esta é uma função para testar erros de memória preenchendo / lendo alguns padrões ( ntoskrnl.exe!RtlpGenericRandomPatternWorker ).

Isso ocorre por design e acontece quando a tarefa de manutenção inativa é ativada quando o dispositivo está ocioso.


Obrigado por isso. Isso lança alguma luz sobre a atividade. Agora que você mencionou a palavra inativa, dois comentários podem ser feitos. 1) O arquivo ETI que você avaliou foi feito enquanto eu estava ativo no console, e o cpu estava em torno de 10% a 15% para 'sistema e memória compactada' e finalmente terminou. Então eu consegui capturar algum tipo de atividade. E você avaliou a manutenção ociosa. 2) no próximo comentário ....
Raymond Burkholder

9
Para encerramento, no Win 10, eu fui para: Start- & gt; Painel de Controle- & gt; Ferramentas Administrativas- & gt; Agendador de Tarefas Agendador de Tarefas Library- & gt; Microsoft- & gt; Windows- & gt; MemoryDiagnostic Existem dois itens de linha. A execução da tarefa pode depender de eventos de log. Não tenho certeza se eles apenas precisam existir, ou se eles são acionados após a entrada no log. Eu desativei o RunFullMemoryDiagnosticEntry. Eu não vejo mais a utilização de 5% a 12% após alguns minutos de atraso. Nas propriedades da tarefa, na guia configurações, em pode ser possível ajustar as coisas para não ser executado com muita freqüência. ... testando por outro tempo.
Raymond Burkholder

2
bom saber que isso resolve o problema.
magicandre1981

1
Para adicionar ao comentário, eu tinha 2 tarefas definidas - RunFullMemoryDiagnostic e ProcessMemoryDiagnosticEvents, o mais importante é o segundo. Tinha 4 gatilhos habilitados - "Log: Sistema, Fonte: Aplicação Popup", "Log: Aplicação, Fonte: Erro de Aplicação" e dois restantes. Desativar os dois gatilhos resolveu meu problema, o problema foi que alguns aplicativos que estou desenvolvendo gravam em erros de log de eventos e isso causa verificações de memória. Dois gatilhos restantes são completamente relacionados ao sistema, então é melhor não desativá-los
zihotki

3
ok um troll downvoted isso. Sim, xperf / WPR / WPA é especialista em nível 500, então você não é um idiota sem educação facepalm
magicandre1981

9

Primeiro, re. Uso da CPU: O processo "Sistema e memória compactada" (não é um serviço) executa muitas funções. Só porque você vê isso usando o tempo da CPU não significa que está fazendo um trabalho de compactação do conteúdo da memória. Para descobrir, use o Process Explorer para encontrar o (s) nome (s) da (s) função (ões) de thread no processo que está (em) usando o tempo da CPU. Você precisará configurar símbolos no Process Explorer para fazer isso, conforme descrito nesta resposta .

A memória que está sendo compactada é a memória que estava

  • parte do conjunto de trabalho privado de um processo (isto é, compartilhado com qualquer outro processo); e
  • modificada enquanto estava nesse processo; e
  • posteriormente perdido do processo devido a substituição de página e colocado na lista de páginas Modificada. (Esse algoritmo não foi substancialmente alterado para o Windows 10. Você não está recebendo mais substituição de página do que costumava fazer.)

Agora ... se você não tiver um arquivo de paginação, ele permanecerá na lista de páginas modificada (até que o processo termine). (Por favor, note: Desabilitar seu arquivo de paginação não alterará o comportamento descrito até agora.)

Se você tiver um arquivo de paginação (que é altamente recomendável), o comportamento será diferente entre o Windows 10 e versões anteriores.

  • Antes do Windows 10, ele logo seria gravado no arquivo de paginação e as páginas físicas seriam movidas para a lista de páginas em espera. Isso é feito por um thread "escritor de páginas modificadas" no processo do sistema.

  • Com o Windows 10, ele é primeiro compactado (ocupando cerca de metade do espaço utilizado) e armazenado no espaço de endereço do modo de usuário do processo System (agora chamado de "System and compacted memory"). Se necessário, para liberar memória, ela pode ser gravada no arquivo de paginação e liberada para outro uso. (Observe que os benefícios da compactação de espaço se aplicam ao espaço do arquivo de paginação e ao tempo de E / S também.)

Então, realmente, isso é uma coisa boa. Por mais memória adicional que você veja usada pelo processo do Sistema, bem, antes do Windows 10, cerca de duas vezes isso teria sido na lista de páginas modificada ou na lista de espera. Certamente não vai demorar mais do que costumava.

Você pode (por meus testes recentes) desativar esse mecanismo, livrando-se do seu arquivo de paginação, mas isso não afetará o comportamento de substituição de página; As páginas privadas modificadas removidas dos processos serão simplesmente inelegíveis para serem liberadas para outro uso e, em vez de estarem no processo do Sistema, a memória (cerca de duas vezes maior) ficará apenas na MPL.


No explorer de processo, sem os símbolos de depuração carregados, eu obtenho algo: ntoskrnl.exe! CcCopyWriteWontFlush + 0xb50 Será que mais detalhes sairão disso se eu adicionar símbolos? Existem 12 casos, com um reivindicando 12,5% de CPU. Pertence ao processo do sistema.
Raymond Burkholder

@RaymondBurkholder Você pode obter mais informações observando a pilha de threads.
Daniel B

@ DanielB: sim, isso foi da guia Threads no pop-up de olhar para as propriedades do processo System no PID 4 no Process Explorer. Esclarecimento: o botão da pilha não mostra nada, mas o botão Módulo indica que é do arquivo ntkmlmp.exe datado de 22/11/2015. Qual eu acho é a data aproximada esta coisa extra cpu começou.
Raymond Burkholder

Essa é apenas a data em que uma atualização do Windows afetou o arquivo pela última vez. É um componente do sistema, afinal.
Daniel B

@RaymondBurkholder A exibição "StartAddress" sem símbolos configurados simplesmente não é útil. Quando você vê um nome de símbolo (como "CcCopyWriteWontFlush") mais um deslocamento ("+ 0xb50"), o nome do símbolo é quase certamente errado. O que você quer é, e. ntoskrnl.exe! ExpWorkerThread, sem deslocamento exibido. Ah ... você verá compensações para módulos para os quais o MS não fornece símbolos - quase sempre esses são drivers de terceiros. Eles são exibidos como moduleName + deslocamento, como nvhda64v.sys + 0x30ac. Não podemos obter símbolos para eles, mas o nome do módulo sozinho é útil em casos de depuração.
Jamie Hanrahan

3

Pode ser o software "Killer Network Manager". Se você desinstalá-lo, o problema desaparece, mas a rede também desinstala os drivers do adaptador de rede. O bom é que há uma correção.

Primeiro, vá para http://www.killernetworking.com/support/driver-downloads/item/killer-suite e baixe a nova versão, mas não a instale ainda. Basta salvá-lo e saber onde o arquivo está localizado.

Em seguida, desinstale a versão atual através do painel de controle. Você precisará reiniciar o computador. Depois que o computador fizer o backup, execute o novo instalador do software. A nova versão lançada em janeiro de 2016 não parece ter o mesmo problema.

Eu acho que a versão antiga do software tem um vazamento de memória causando esse problema.

Apenas um FYI, o software "Killer Network Manager" faz parte das placas de rede Qualcomms Aethos Killer Wireless-AC / Wireless-N e E2200 / E2400 com fio. Sem o software, você não tem internet.


Sem o motorista você não tem internet. Você posso obter o driver sem todo o inútil guff e bloatware que o fabricante acha que você precisa. A parte inferior da página vinculada fornece um link de download apenas para o driver killernetworking.com/support/driver-downloads/standard-drivers
Mokubai

2

Eu tive um problema semelhante depois de atualizar recentemente para o Windows 10. Meu mouse iria de repente começar a parar, ou seja, empurrando quando eu o movi pela tela, o que tornava muito difícil de usar.

Verifiquei o uso da CPU no Gerenciador de Tarefas e observei que o problema ocorreu quando o processo "Sistema e Memória Compactada" começou a consumir de 5 a 15% da CPU. Eu corri Process Explorer e verifiquei os threads e como Raymond notei que o principal culpado era CcWriteCopyWontFlush com um deslocamento de 0xb50. Um pouco de pesquisando me levou a esta página. Eu tentei instalar os símbolos do Windows, como alguns sugeriram aqui, mas nunca me ajudou a resolver o deslocamento.

O problema também era esporádico. Eu trabalharia por algumas horas e então começaria a aparecer por alguns minutos, ligando e desligando, deixando-me louco. A reinicialização curaria por um tempo e depois retornaria.

A partir das respostas aqui eu decidi caçar os drivers no meu PC, então eu comecei com o Gerenciador de dispositivos e é aí que eu tenho a minha resposta. Quando o problema ocorreu, a janela do Gerenciador de Dispositivos ficava constantemente em branco e era atualizada, como a cada segundo ou dois. Foi essencialmente ilegível. Mais Googling sugeriu um dispositivo USB externo conectando e reconectando. Eu amarrei-o ao meu telefone Samsung, que carrego do meu PC todos os dias através de um cabo conectado a uma porta USB. Eu também uso o PC e MyPhoneExplorer para sincronizar meu telefone com o Outlook, então eu tenho um par de unidades mapeadas para RAM interna e externa do meu telefone, usando drivers da Samsung para o PC. Eu podia ver essas unidades aparecem e desaparecem com freqüência no Gerenciador de dispositivos.

Meu celular é um Galaxy S2 e tem cerca de 4 anos e eu tive problemas de conexão na porta microUSB por mais de um ano. Isso pode explicar a natureza esporádica do problema, ou podem ser os drivers ruins da Samsung para o meu telefone. Se fosse apenas o cabo, eu não sei porque a reinicialização cura o problema por um tempo, então ainda é um mistério, mas pelo menos eu conheço a fonte e posso consertá-la.

Desconectar meu telefone é a maneira mais fácil de resolver o problema, e estou prestes a abandoná-lo de qualquer maneira, já que é muito antigo. Então, eu estou querendo saber se Raymond também tinha um driver de dispositivo Samsung com software semelhante em execução em seu PC. Raymond, se você ainda estiver checando, me avise.

Como eu mencionei, o cabo tem sido péssimo por um tempo, desde bem antes da atualização do Windows 7 para o Windows 10, e o software da Samsung sempre foi horrível, mas no Windows 7 a descamação não afetou minha outra operação do PC. No Windows 10, o mouse ficou tão irregular que ficou quase inutilizável. Eu tive um tempo extremamente difícil tentando pousar em um alvo, e acho que o teclado também estava sendo afetado também com as teclas pressionadas sendo perdidas. É estranho como esses fatores se inter-relacionam e não sei o que sugerir à Microsoft sobre como melhorar o Windows 10, mas agora sinto que o Windows 10 é um pouco "delicado". Use com cuidado.

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.