Qual è la causa di un elevato utilizzo della CPU di "sistema e memoria compressa" in Windows 10?


39

C'è un'osservazione da fare per Windows 10 sul mio laptop con memoria 24G disponibile e 2.5G usati. Non c'è "pressione della memoria". Altre domande hanno esaminato il consumo di memoria (che non è il problema qui). In tutte le domande correlate qui e altrove, non sono stato in grado di trovare una spiegazione adeguata al problema di questo utilizzo eccezionale della CPU nell'ultimo mese o due dopo uno degli aggiornamenti di Windows 10.

Posso accettare che ci sia valore in questo servizio o processo, ma per funzionare continuamente e utilizzare risorse aggiuntive della CPU e, di conseguenza, utilizzare la batteria in modo meno efficiente, questo è il problema che sto cercando di risolvere.

In alcuni articoli di questo sito, mi è stato suggerito di disattivare SuperFetch e impostare una voce del Registro di sistema per PrefetchParameters su 0. Ho fatto entrambe le operazioni ed eseguito un riavvio.

Riavvio della macchina, disattivo lo screen saver e avvio Task Manager. Dopo alcuni minuti, il servizio etichettato come "Sistema e memoria compressa" inizia a prendere costantemente il 5% della mia CPU. Il mio utilizzo della CPU di base è forse dell'1%, il che mantiene la ventola bassa. Ma quando il servizio "sistema e memoria compressa" funziona al 5%, le ventole aumentano. E continua a correre.

Sillyness. Perché quel servizio deve funzionare in modo coerente senza la pressione della memoria? Eventuali meccanismi aggiuntivi che posso provare per spegnerlo o determinare cosa sta effettivamente facendo? Ci sono voci di file di log da qualche parte? O uno strumento diagnostico approfondito?

come-disabilitare-windows-10-memory-compressione - qui non ci sono risposte reali

finestre-10-system-processo-tenendo massiccio-quantità-di-ram

17993-windows-10-memory-compressione

Desktop-build-10525-e-windows-10-memory

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

finestre-10-build-1511-surriscaldamento-cpu-fan-sempre

Registratore di prestazioni di Windows : ora è necessario un collegamento per informazioni su come interpretare le informazioni

manutenzione dello scrub


1
Sì, non ho mai capito perché Windows utilizza il file di paging quando c'è molta memoria, disabilitare il file di paging potrebbe risolvere il tuo problema, vorrei saperlo.
Moab,


@Moab: la percezione che Windows "usi il file di paging quando c'è molta memoria" proviene da un'etichetta errata nel task manager di Windows XP - hanno etichettato i grafici "utilizzo PF" quando avrebbe dovuto essere "commit charge". Se si utilizza PerfMon per esaminare l'utilizzo effettivo del file di paging, generalmente lo si troverà molto più piccolo del previsto.
Jamie Hanrahan,

2
acquisire una traccia dell'utilizzo della CPU. Installa WPT dall'SDK Win10: dev.windows.com/en-us/downloads/windows-10-sdk, esegui WPRUI.exe, seleziona CPU, Disco, VirtualAlloc, ResidentSet e acquisisci 1-2 minuti di utilizzo del SISTEMA e salva in un file ETL. Comprimi l'ETL + la cartella NGENPDB in un file 7z / RAR, carica il file compresso su OneDrive, crea un link di condivisione e pubblica qui il link di condivisione
magicandre1981

@ magicandre1981: grazie per aver offerto una possibile metodologia. Il file può essere trovato su oneunified.net/files/rpb.20160102.WPR.7z . Se vedi qualcosa, saresti in grado di pubblicare la tua metodologia? Sono sicuro che molti altri post in giro potrebbero fare uso della tecnica. ... ancora grazie.
Raymond Burkholder,

Risposte:


26

L'analisi del file ETL con WPA mostra che l'utilizzo della CPU non deriva dalla compressione della memoria di sistema. Viene da 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

Questa è una funzione per testare la memoria per errori riempiendo / leggendo alcuni schemi ( ntoskrnl.exe!RtlpGenericRandomPatternWorker).

Questo è in base alla progettazione e si verifica quando l'attività di manutenzione inattiva inizia quando il dispositivo è inattivo.


Grazie per questo. Questo fa luce sull'attività. Ora che hai menzionato la parola inattivo, puoi fare due commenti. 1) Il file ETI che hai valutato è stato creato mentre ero attivo sulla console e la CPU era tra il 10% e il 15% circa per "sistema e memoria compressa" e alla fine è terminata. Così sono stato in grado di catturare qualche tipo di attività. E l'hai valutato per manutenzione inattiva. 2) nel prossimo commento ....
Raymond Burkholder

10
Per la chiusura, su Win 10, sono andato a: Start-> Pannello di controllo-> Strumenti di amministrazione-> Utilità di pianificazione Libreria Utilità di pianificazione-> Microsoft-> ​​Windows-> MemoryDiagnostic Ci sono due elementi pubblicitari. L'esecuzione dell'attività può dipendere da eventi di registro. Non sono sicuro che debbano esistere o che si attivino all'entrata nel registro. Ho disabilitato RunFullMemoryDiagnosticEntry. Non vedo più l'utilizzo dal 5% al ​​12% dopo qualche minuto di ritardo. Nelle proprietà dell'attività, nella scheda impostazioni, potrebbe essere possibile regolare le cose in modo che non vengano eseguite molto spesso. .... test per un'altra volta.
Raymond Burkholder,

2
bello sapere che risolve il problema.
magicandre1981,

1
Per aggiungere al commento, avevo 2 compiti definiti: RunFullMemoryDiagnostic e ProcessMemoryDiagnosticEvents, il più importante è il secondo. Aveva 4 trigger abilitati: "Log: Sistema, Origine: Popup applicazione", "Log: Applicazione, Fonte: Errore applicazione" e due rimanenti. La disabilitazione dei 2 trigger ha risolto il mio problema, il problema era che alcune app che sto sviluppando scrivono errori nel registro eventi e questo causa controlli della memoria. Due trigger rimanenti sono completamente correlati al sistema, quindi è meglio non disabilitarli
zihotki,

3
ok un troll l'ha votato. Sì, xperf / WPR / WPA è roba da esperti di livello 500, quindi non per te troll idiota non istruito facepalm
magicandre1981,

9

Innanzitutto, ri. Utilizzo della CPU: il processo "Sistema e memoria compressa" (non è un servizio) svolge molte funzioni. Solo perché lo vedi usando il tempo della CPU non significa che sta facendo un lavoro per comprimere il contenuto della memoria. Per scoprirlo, utilizzare Process Explorer per trovare il nome (i) delle funzioni del thread nel processo che sta (stanno) utilizzando il tempo della CPU. Per fare ciò, dovrai configurare i simboli in Process Explorer, come descritto in questa risposta .

La memoria che viene compressa è la memoria che era

  • parte dell'insieme di lavoro privato di un processo (cioè condiviso con qualsiasi altro processo); e
  • modificato mentre era in quel processo; e
  • successivamente perso dal processo a causa della sostituzione della pagina e inserito nell'elenco Pagine modificate. (Questo algoritmo non è stato sostanzialmente modificato per Windows 10. Non si ottengono più sostituzioni di pagine rispetto al passato.)

Ora ... se non si dispone di un file di paging, rimarrà nell'elenco delle pagine modificate (fino al termine del processo). (Nota: la disabilitazione del file di paging non modificherà il comportamento finora descritto.)

Se si dispone di un file di paging (che è, ovviamente, altamente raccomandato), il comportamento differisce tra Windows 10 e le versioni precedenti.

  • Prima di Windows 10, sarebbe stato presto scritto nel file di paging e le pagine fisiche sarebbero state spostate nell'elenco delle pagine di standby. Questo viene fatto da un thread "modificatore di pagine modificato" nel processo di sistema.

  • Con Windows 10, viene prima compresso (occupando circa la metà dello spazio di una volta) e nascosto nello spazio degli indirizzi in modalità utente del processo di sistema (ora chiamato "memoria di sistema e compressa"). Se necessario per liberare memoria, può essere quindi scritto nel file di paging e rilasciato per altri usi. (Notare che i vantaggi della compressione dello spazio si applicano anche allo spazio del file di paging e al tempo di I / O.)

Quindi, davvero, questa è una buona cosa. Per quanto molta memoria aggiuntiva venga utilizzata dal processo di sistema, bene, prima di Windows 10, circa il doppio di quello sarebbe stato nell'elenco delle pagine modificate o nell'elenco di standby. Certamente non ci vorrà più spazio del solito.

Puoi (secondo i miei test recenti) disabilitare questo meccanismo eliminando il tuo file di paging, ma ciò non influirà sul comportamento di sostituzione della pagina; le pagine private modificate espulse dai processi saranno semplicemente inammissibili dall'essere liberate per altri usi e invece di essere nel processo di sistema la memoria (circa il doppio di essa) siederà semplicemente sull'MPL.


In Process Explorer, senza simboli di debug caricati, ottengo qualcosa: ntoskrnl.exe! CcCopyWriteWontFlush + 0xb50 Se aggiungo simboli ne usciranno altri dettagli? Vi sono 12 casi, uno dei quali afferma il 12,5% di CPU. Appartiene al processo di sistema.
Raymond Burkholder,

@RaymondBurkholder Potresti ottenere maggiori informazioni guardando lo stack dei thread.
Daniel B,

@DanielB: sì, quello era dalla scheda Thread nel pop-up dall'esame delle proprietà del processo di sistema al PID 4 in Process Explorer. Chiarimento: il pulsante Stack non mostra nulla, ma il pulsante Modulo indica che proviene dal file ntkmlmp.exe del 22-11-2015. Quale penso sia la data approssimativa che è iniziata questa cosa in più di CPU.
Raymond Burkholder,

Questa è solo la data in cui un ultimo aggiornamento di Windows ha interessato questo file. È un componente di sistema, dopo tutto.
Daniel B,

@RaymondBurkholder Il display "StartAddress" senza simboli configurati non è utile. Quando vedi un nome di simbolo (come "CcCopyWriteWontFlush") più un offset ("+ 0xb50"), il nome del simbolo è quasi certamente sbagliato. Ciò che si desidera è ad esempio ntoskrnl.exe! ExpWorkerThread, senza offset visualizzato. Oh ... vedrai degli offset per i moduli per i quali MS non fornisce simboli - quasi sempre si tratta di driver di terze parti. Sono visualizzati come moduleName + offset, come nvhda64v.sys + 0x30ac. Non possiamo ottenere simboli per questi, ma il solo nome del modulo è spesso utile nei casi di debug.
Jamie Hanrahan,

3

Potrebbe essere il software "Killer Network Manager". Se lo disinstalli, il problema scompare, ma anche la rete in quanto disinstalla anche i driver della scheda di rete. La buona notizia è che c'è una soluzione.

Per prima cosa, vai a http://www.killernetworking.com/support/driver-downloads/item/killer-suite e scarica la nuova versione, ma non installarla ancora. Basta salvarlo e sapere dove si trova il file.

Quindi, disinstallare la versione corrente tramite il pannello di controllo. Dovrai riavviare il computer. Una volta eseguito il backup del computer, eseguire il nuovo programma di installazione del software. La nuova versione rilasciata a gennaio 2016 non sembra avere lo stesso problema.

Penso che la vecchia versione del software abbia una perdita di memoria che causa questo problema.

Solo un FYI, il software "Killer Network Manager" fa parte delle schede di rete E2200 / E2400 cablate Wireless-AC / Wireless-N di Qualcomms Aethos. Senza il software, non hai internet.


Senza il driver non hai internet. È possibile ottenere il driver senza tutti i guff inutile e bloatware che il produttore pensa che vi serve. La parte inferiore della pagina che hai linkato ti dà un link per il download solo da driver di killernetworking.com/support/driver-downloads/standard-drivers
Mokubai

2

Ho avuto un problema simile dopo un recente aggiornamento a Windows 10. Il mio mouse improvvisamente iniziava a bloccarsi, ovvero a strappi mentre lo spostavo sullo schermo, il che rendeva molto difficile l'uso.

Ho verificato l'utilizzo della CPU in Task Manager e ho notato che il problema si verificava quando il processo "Sistema e memoria compressa" iniziava a consumare dal 5-15% della CPU. Ho eseguito Process Explorer e controllato i thread e come Raymond ho notato che il colpevole principale era CcWriteCopyWontFlush con un offset di 0xb50. Un po 'di Google mi ha portato a questa pagina. Ho provato a installare i simboli di Windows come alcuni hanno suggerito qui, ma non mi ha mai aiutato a risolvere l'offset.

Anche il problema era sporadico. Lavorerei per alcune ore e poi inizierei ad apparire per alcuni minuti, acceso e spento, facendomi impazzire. Il riavvio lo avrebbe curato per un po 'e poi sarebbe tornato.

Dalle risposte qui ho deciso di dare la caccia ai driver sul mio PC, quindi ho iniziato con Device Manager ed è qui che ho ottenuto la mia risposta. Quando si è verificato il problema, la finestra di Gestione dispositivi si spegne e si aggiorna costantemente, come ogni secondo o due. Era essenzialmente illeggibile. Altro Google ha suggerito un dispositivo USB esterno per il collegamento e la riconnessione. L'ho collegato al mio telefono Samsung che carico ogni giorno dal mio PC tramite un cavo collegato a una porta USB. Uso anche il PC e MyPhoneExplorer per sincronizzare il mio telefono con Outlook, quindi ho un paio di unità mappate sulla RAM interna ed esterna del mio telefono, usando i driver Samsung per PC. Ho potuto vedere queste unità apparire e scomparire frequentemente in Gestione dispositivi.

Il mio telefono è un Galaxy S2 e ha circa 4 anni e ho avuto problemi di connessione sulla porta microUSB per oltre un anno. Ciò potrebbe spiegare la natura sporadica del problema o potrebbero essere i pessimi driver per PC Samsung per il mio telefono. Se fosse solo il cavo non so perché il riavvio risolva il problema per un po ', quindi è ancora un po' un mistero, ma almeno conosco la fonte e posso risolverlo.

Disconnettere il mio telefono è il modo più semplice per risolvere il problema e sto per abbandonarlo comunque dal momento che è così vecchio. Quindi mi chiedo se Raymond avesse anche un driver di dispositivo Samsung con un software simile in esecuzione sul suo PC. Raymond, se stai ancora effettuando il check-in, fammi sapere.

Come ho già detto, il cavo è scaduto da un po 'di tempo, poiché ben prima dell'aggiornamento da Windows 7 a Windows 10, e il software Samsung è sempre stato orribile, ma in Windows 7 il difetto non ha influenzato la mia altra operazione del PC. In Windows 10, ha reso il mouse così a scatti, che è diventato quasi inutilizzabile. Ho avuto un periodo estremamente difficile nel tentativo di atterrare su un bersaglio, e penso che anche la tastiera sia stata colpita dalla mancata pressione dei tasti. È strano come questi fattori si colleghino e non so cosa suggerire a Microsoft riguardo al miglioramento di Windows 10, ma ora sento che Windows 10 è un po '"delicato". Usare con cautela.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.