Windows 10, processo "Sistema" che richiede enormi quantità di RAM


83

Da quando ho eseguito l'aggiornamento a Windows 10, il mio sistema ha consumato eccessivamente RAM

inserisci qui la descrizione dell'immagine

Ho letto un po 'e determinato che probabilmente un driver perde memoria. Quindi mi sono procurato il Windows Driver Kit e ho monitorato l'utilizzo della memoria con poolmon:

inserisci qui la descrizione dell'immagine

Tuttavia, non so davvero come procedere da qui. L'articolo taggato "smNp" è il colpevole di questo problema? Come posso passare da lì all'identificazione effettiva del driver?

Ho provato alcune cose come "C: \ Windows \ System32 \ drivers> findstr / s smnp . " Ma non ha prodotto risultati. Ho anche dato un'occhiata al file pooltag.txt e questa è la descrizione che ho trovato per questo:

inserisci qui la descrizione dell'immagine

Quindi sì, qualsiasi aiuto sarebbe apprezzato. Grazie in anticipo.


1
ok, ho aggiunto le informazioni che sono riuscito a trovare. Controllali
magicandre1981,

1
Questa è una caratteristica del sistema per mantenere effettivamente più cose nella RAM usando la compressione anziché il paging su disco. @ magicandre1981 ha le informazioni giuste qui che dovrebbero essere accettate come risposta giusta.
Mani Gandham,

I 14 megabyte mostrati da poolmon sono associati al tag smNp è una quantità puramente banale. Sei preoccupato per 1,3 GB nel set di lavoro privato del processo di sistema - perché concentrarsi su 14 MB di pool non di paging (che non è affatto nel set di lavoro di processo)?
Jamie Hanrahan,

Risposte:


13

Entrando in services.msc(via Win+R) e disabilitando Superfetch risolve completamente questo. Non sono sicuro che Superfetch sia stato interrotto o sia "progettato".

Inoltre, apparentemente eliminare il file di paging avrà lo stesso effetto, ma la soluzione sopra è una scommessa più sicura .


1
Questo ha funzionato davvero. L'utilizzo della memoria per il sistema è tornato a ~ 0,1 MB anche dopo ore di utilizzo. Grazie!
Nayncore,

26
Mentre in genere un utilizzo così elevato della memoria sarebbe una bandiera rossa per una perdita di memoria, questa memoria viene utilizzata legittimamente come FUNZIONE di Windows 10 (vedere la risposta di magicandre di seguito).
Bigbio2002,

7
non è un bug e non dovrebbe essere disabilitato
phuclv,


6
Se la funzione provoca avvisi di memoria insufficiente costante, non è una buona funzionalità. Ora il mio Surface Pro con 4 GB di RAM è completamente inutilizzabile per lo sviluppo e anche su laptop con 8 GB di RAM ricevo costantemente questi avvisi. Pollice su per soluzione!
Oleg I.

94

Ho esaminato le tracce xperf di diversi utenti e qui la funzione ntoskrnl.exe!SmKmStoreHelperWorkerdel kernel inizia ad allocare memoria.

Immagine dello schermo
(Clicca sull'immagine per ingrandire)

L'ho scoperto su sysinternals .

Ne ho chiesto a Microsoft e la risposta è che questo è di progettazione. È correlato alla compressione della memoria di sistema.

Nell'annuncio di Windows 10 Build 10525, Microsoft lo ha spiegato un po ' :

In Windows 10, abbiamo aggiunto un nuovo concetto in Memory Manager chiamato archivio di compressione, che è una raccolta in memoria di pagine compresse. Ciò significa che quando Memory Manager sente la pressione della memoria, comprime le pagine inutilizzate invece di scriverle sul disco. Ciò riduce la quantità di memoria utilizzata per processo, consentendo a Windows 10 di mantenere più applicazioni nella memoria fisica alla volta. Questo aiuta anche a fornire una migliore reattività su Windows 10. L'archivio di compressione risiede nel set di lavoro del processo di sistema.Poiché il processo di sistema mantiene l'archivio in memoria, il suo set di lavoro diventa più grande esattamente quando la memoria viene resa disponibile per altri processi. Ciò è visibile in Task Manager e il motivo per cui il processo di sistema sembra consumare più memoria rispetto alle versioni precedenti.

Quindi, invece di scrivere i dati di memoria nel file di paging, li comprime. E questa memoria compressa viene mostrata nel processo di Sistema.

Microsoft ha inoltre pubblicato ulteriori dettagli nell'hub interno. Winbeta ha creato un articolo che include maggiori dettagli.

A quanto pare, la ragione di ciò è dovuta al fatto che Microsoft ha scelto di sospendere le app UWP quando non erano in primo piano, molto simili a una gestione del sistema operativo dello smartphone. Gli utenti di Windows 8 hanno capito (forse no) che se le app non fossero sullo schermo, non funzionerebbero fino a quando l'utente non torna indietro. L'approccio "tutto o niente" viene aggiornato con Windows 10 introducendo un livello tra il file di paging e la normale attività di paging. Ora, di fronte a problemi di pressione della memoria, MM determinerà quali pagine dovrebbero essere spostate nell'elenco modificato in un processo chiamato taglio.L'elenco modificato è un elenco secondario di file di paging che esegue il backup di un elenco di file di paging in standby. Un elenco di backup viene acquisito nel caso in cui la memoria venga recuperata dall'elenco di standby da un altro processo e il processo originale viene alla ricerca della sua pagina. Invece di tutto o niente, Windows 10 MM comprime le pagine inutilizzate anziché scriverle sul disco. Con meno scrittura, il risultato dovrebbe essere un minor numero di operazioni su disco - grazie alla compressione - e ora è possibile memorizzare più dati.

inserisci qui la descrizione dell'immagine

Secondo il team di Windows, " In pratica, la memoria compressa occupa circa il 40% della dimensione non compressa e, a seguito di un dispositivo tipico che esegue un carico di lavoro tipico, Windows 10 scrive le pagine sul disco solo del 50% ogni volta che le versioni precedenti di il sistema operativo. "Se tutto procede secondo i piani, gli utenti di Windows potrebbero riscontrare tempi di attesa ridotti per tutti i dispositivi e durata della vita estesa su sistemi con dischi rigidi basati su flash .

La decompressione è anche qualcosa che Windows 10 è progettato per fare bene. Windows 10 utilizza la combinazione di parallelizzabilità e letture sequenziali per produrre pagine in memoria una volta chiamate. La nuova decompressione dovrebbe tradursi in un'esperienza più rapida in quanto Windows 10 sta contemporaneamente decomprimendo i dati e leggendoli in parallelo utilizzando più CPU. Le versioni precedenti di Windows potrebbero essersi sentite lente a causa delle velocità di trasferimento tra il disco.

Microsoft ha anche rilasciato un video su channel9 che spiega la funzionalità.

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

In questo video Mehmet Iyigun ha trascorso un po 'di tempo a discutere del perché il processo di sistema in Windows 10 sta prendendo un po' più di memoria e perché è una buona cosa. Un processo che richiede più memoria suona come una cosa negativa, fino a quando non ho capito di più sulla gestione della memoria, sul paging e sui guasti della pagina hard / soft. Si scopre che il sistema operativo sta facendo alcune ottimizzazioni intelligenti che consentono ai processi di tagliare parte della memoria, ma non necessariamente caricarla sul disco. Non solo la memoria è conservata nella RAM, ma è anche compressa, rendendo più rari gli errori di pagina. I risultati dovrebbero rendere l'esperienza più scattante.

Nelle ultime build TH2, Microsoft ha aggiornato la descrizione nel task manager e ora mostra anche che il processo SYSTEM ospita compressed memory:

inserisci qui la descrizione dell'immagine

per evitare confusioni sull'uso "elevato".

Nell'aggiornamento dell'anniversario di Windows 10 che è stato rilasciato nell'agosto 2016, Microsoft ha estratto la compressione ora mostrata in uno pseudo processo chiamato Memory Compressionper non confondere più gli utenti perché SYSTEM ha un utilizzo della memoria così ampio:

inserisci qui la descrizione dell'immagine

Ma sembra che Taskmgr non mostri questo processo, solo ProcessExplorer / ProcessHacker sono in grado di mostrarlo. Taskmgr mostra solo la quantità di memoria compressa nella panoramica:

inserisci qui la descrizione dell'immagine

Passando con il mouse sul grafico della memoria utilizzata in Taskmgr, viene visualizzata una descrizione comandi che mostra la quantità di dati compressi.

inserisci qui la descrizione dell'immagine

In questa demo 388 MB vengono compressi a 122 MB, quindi 267 MB vengono salvati con la compressione.


9
@Zaibis: penso che l'idea non sia "far cadere 1 GB". 1 GB è stato prenotato da Windows e verrà utilizzato per le allocazioni. Non hai perso la memoria.
Razze di leggerezza in orbita

12
"La memoria inutilizzata è spreco di memoria" è stato a lungo il mantra di OS X. Sembra che anche Windows sia entrato in gioco.
Inganno il

1
@ magicandre1981 Cosa vuoi dire conSystem Memory compression
user2284570

2
Non posso rispondere a questo nei dettagli. Ho solo avuto l'informazione che è di progettazione, ha qualcosa a che fare con una compressione della memoria e questo sarà spiegato da un blogpost. Quando avrò nuove informazioni, aggiornerò il mio post.
magicandre1981,

2
@JosiahKeller La finestra di dialogo "memoria insufficiente" riguarda la memoria virtuale insufficiente. Non ha quasi nulla a che fare con l'uso o la disponibilità della memoria fisica (RAM). Sono contabilizzati separatamente da tutti i moderni sistemi operativi desktop.
David Schwartz,

0

Ho trovato un caso anomalo che causa un elevato utilizzo della memoria di sistema e volevo includerlo nel caso in cui queste informazioni fossero utili a chiunque.

Se si utilizzano pesantemente le snapshot del volume di Microsoft (l'istantanea del software, non l'istantanea dell'hardware), più snapshot vengono mantenuti combinati con grandi cambiamenti di dati, quindi il sistema consumerà più RAM.

Normalmente la quantità di RAM utilizzata per le istantanee di volume è piccola e non verrà notata, a meno che non si abbia un volume gigante (cioè 64 TB) con delta multi-terabyte tra le istantanee. Per impostazione predefinita, le istantanee si elimineranno semplicemente se gli I / O di scrittura diventano troppo alti, ma ci sono modi per impedirlo, permettendoti di raggiungere enormi delta.

Di seguito è riportato un caso estremo che mostra il processo di sistema di un server utilizzando 13 GB di RAM. Questo server ha solo due snapshot del volume, a distanza di 15 giorni, con circa 10 TB di dati scritti tra ogni snapshot.

Utilizzo della memoria di sistema a 13 GB

Il processo di sistema sopra era in precedenza a 24 GB di utilizzo e sono stati osservati i seguenti tre comportamenti:

  1. Dopo il riavvio e il login, il sistema si bloccherebbe per un periodo di tempo su uno schermo vuoto fino a quando non verrà visualizzato il desktop.
  2. Durante questo blocco, il pull su Task Manager (CTRL-SHIFT-ESC) ha mostrato un aumento dell'utilizzo della memoria di sistema.
  3. Durante questo blocco, il disco con gli snapshot del volume ha eseguito molte letture che non sono state visualizzate in Performance Monitor. Tuttavia, poiché il disco utilizzava iSCSI, la scheda di rete mostrava un flusso di lettura costante intorno ai 200 Mbps.

Ho sospettato di Volume Snapshot, quindi ho provato a eliminare lo snapshot più vecchio che ha immediatamente ridotto l'utilizzo della memoria del sistema da 24 GB a 13 GB.

In queste circostanze questo può essere un comportamento normale, anche se non ho confermato questo con Microsoft. Nel frattempo aggiungerò altri 32 GB di RAM a questo server per gestire l'overhead di Snapshot.

(Nota: si tratta di un server di backup ad alto volume che esegue Windows 2016 con un'unità SSD iSCSI da 64 TB collegata. Conserva in media tre snapshot di volume in qualsiasi momento, con uno nuovo creato ogni 15 giorni. Sono presenti circa 10 TB di dati scritti tra ogni istantanea).


-1

Disabilita il prefetcher nella chiave regedit: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\PrefetchParametersprobabilmente hai Enable Prefetcherun valore di 2o 3almeno modificalo in0

Successivamente è necessario disabilitare Superfetchnei servizi

  1. Cerca services.msc

  2. Trova superfetchfare clic propertiesquindi impostarlo disablede arrestare il servizio pure.

Faccio questi passaggi e quando gioco e normalmente utilizzo il PC e il systemprocesso utilizza solo 28k


12
Questa è un'idea orribile. Il prefetch / superfetch sono usati per un motivo. Se pensi di poter gestire la memoria meglio del tuo sistema operativo, ti sbagli purtroppo.
b1nary.atr0phy

Disabilitare prefetch (o "ripulire la cartella prefetch") è davvero un'idea molto sciocca. Il prefetch non fa in modo che il sistema utilizzi più RAM. Accelera il caricamento di exe e dll una volta che li avvii , e solo allora. Per quanto riguarda SuperFetch, Microsoft disabilita SuperFetch per impostazione predefinita sui sistemi con un SSD per l'unità Windows; pensano che il beneficio non ne valga la pena. Personalmente lo tengo abilitato perché ho altre unità, non SSD, su cui voglio che SF funzioni ancora.
Jamie Hanrahan,
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.