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

Windows 10, processo 'Sistema' che prende quantità massicce di RAM

Da quando ho aggiornato a Windows 10, il mio sistema sta consumando eccessivamente la RAM

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

Tuttavia, non so davvero come procedere da qui. L'elemento etichettato “smNp” è il colpevole di questo problema? Come faccio a passare da lì all'identificazione effettiva del driver?

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

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

Risposte (4)

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

Ho guardato le tracce xperf di diversi utenti e qui la funzione ntoskrnl.exe!SmKmStoreHelperWorker del Kernel inizia ad allocare la memoria.

(Clicca sull'immagine per ingrandirla)

Ho scoperto questo su sysinternals .

Ho chiesto a Microsoft e la risposta è che questo è stato progettato. È legato alla compressione della memoria di sistema.

In l'annuncio di Windows 10 Build 10525, Microsoft lo ha spiegato un po’ :

In Windows 10, abbiamo aggiunto un nuovo concetto nel Memory Manager chiamato negozio di compressione, che è una collezione in-memoria di pagine compresse. Questo significa che quando Memory Manager sente la pressione della memoria, comprime le pagine inutilizzate invece di scriverle sul disco. Questo riduce la quantità di memoria usata per processo, permettendo a Windows 10 di mantenere più applicazioni nella memoria fisica alla volta. Questo aiuta anche a fornire una migliore reattività in tutto Windows 10. L'archivio di compressione vive nel set di lavoro del processo di sistema. **Poiché il processo di sistema tiene il negozio in memoria, il suo set di lavoro cresce esattamente quando la memoria viene resa disponibile per altri processi. Questo è visibile in Task Manager e la ragione per cui il processo System sembra consumare più memoria rispetto alle versioni precedenti.

Così invece di scrivere i dati di memoria nel pagefile li comprime. E questa memoria compressa viene mostrata nel processo System.

Microsoft ha anche pubblicato maggiori dettagli nell'hub interno. Winbeta ha creato un articolo che include più dettagli.

A quanto pare, la ragione di ciò ha avuto a che fare con la scelta di Microsoft di sospendere le app UWP quando non erano in primo piano, molto simile ad alcune gestioni del sistema operativo degli smartphone. Gli utenti di Windows 8 hanno capito (forse no) che se le app non erano sullo schermo, non sarebbero state eseguite fino a quando l'utente non fosse passato di nuovo ad esse. L'approccio ‘tutto o niente’ viene aggiornato con Windows 10 che introduce uno strato tra il pagefile e la normale attività di paginazione. Ora, di fronte a problemi di pressione della memoria, MM determinerà quali pagine dovrebbero essere spostate nell'elenco modificato in un processo chiamato trimming. L'elenco modificato è un elenco secondario di pagefile che fa da backup ad un elenco di pagefile di riserva. Una lista di backup viene catturata nel caso in cui la memoria venga recuperata dalla lista di riserva da un altro processo, e il processo originale venga a cercare la sua pagina. Invece di tutto o niente, Windows 10 MM comprime le pagine inutilizzate piuttosto che scriverle sul disco. Con meno scrittura, il risultato dovrebbe essere un minor numero di operazioni su disco - grazie alla compressione - e ora più dati possono essere conservati in memoria.

Secondo il team di Windows, “ In pratica, la memoria compressa occupa circa il 40% della dimensione non compressa, e come risultato di un dispositivo tipico che esegue un carico di lavoro tipico, Windows 10 scrive le pagine su disco solo il 50% più spesso delle versioni precedenti del sistema operativo. ” Se tutto va secondo i piani, gli utenti di Windows potrebbero sperimentare tempi di attesa ridotti per tutti i dispositivi così come una maggiore durata di vita sui sistemi che hanno dischi rigidi basati su flash.

La decompressione è anche qualcosa che Windows 10 è progettato per fare bene. Windows 10 sta usando la combinazione di parallelizzabilità e letture sequenziali per produrre pagine in memoria una volta chiamate. La nuova decompressione dovrebbe risultare in un'esperienza più veloce in quanto Windows 10 sta decomprimendo simultaneamente i dati e li legge in parallelo utilizzando più CPU. Le vecchie versioni di Windows potrebbero essere state lente a causa della velocità di trasferimento tra i dischi.

Microsoft ha anche rilasciato un video sul canale9 che spiega la caratteristica.

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 passato un po’ di tempo a discutere perché il processo di sistema in Windows 10 sta prendendo un po’ più di memoria e perché è una cosa buona. Un processo che prende più memoria sembra una brutta cosa - questo fino a quando non ho capito di più sulla gestione della memoria, la paginazione e gli errori di pagina hard / soft. Si è scoperto che il sistema operativo sta facendo alcune ottimizzazioni intelligenti che permettono ai processi di tagliare un po’ di memoria ma non necessariamente di paginarla su disco. Non solo la memoria è conservata nella RAM, ma è anche compressa - rendendo gli hard page fault un evento più raro. Il risultato dovrebbe essere un'esperienza più veloce.

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

per evitare confusioni sull'uso “elevato”.

Nel Window 10 Anniversary Update che è stato rilasciato nell'agosto 2016, Microsoft ha estratto la compressione in ora mostrato in uno pseudo processo chiamato Memory Compression per non confondere più gli utenti sul perché SYSTEM ha un utilizzo di memoria così grande:

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

Se passi il mouse sul grafico della memoria usata in Taskmgr vedi un tooltip che mostra la quantità di dati che sono compressi.

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

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

Andando in services.msc (tramite Win+R) e disabilitando il Superfetch si risolve completamente. Non sono sicuro se il Superfetch è semplicemente rotto a partire da ora o è “per progettazione”.

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

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

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

Se si utilizza pesantemente il Volume Snapshots di Microsoft (lo snapshot software, non lo snapshot hardware), più snapshots si tengono combinati con grandi modifiche di dati, allora 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 abbiate un volume gigante (es. 64 TB) con delta di molti terabyte tra le istantanee. Per impostazione predefinita, le istantanee si cancellano semplicemente se gli IO di scrittura diventano troppo alti, ma ci sono modi per impedirlo, permettendo di raggiungere delta massicci.

Qui sotto c'è un caso estremo che mostra il processo di sistema di un server che usa 13GB di RAM. Questo server ha solo due istantanee di volume, prese a 15 giorni di distanza l'una dall'altra, con circa 10 TB di dati scritti tra ogni istantanea.

Il processo System di cui sopra era precedentemente a 24GB di utilizzo, e sono stati osservati i seguenti tre comportamenti:

  1. Dopo un riavvio e un nuovo accesso, il sistema si blocca per un periodo di tempo su una schermata vuota finché non appare il desktop.
  2. Durante questo blocco, tirando su Task Manager (CTRL-SHIFT-ESC) si vedeva crescere l'utilizzo della memoria di sistema.
  3. Durante questo blocco, il disco con le istantanee di volume eseguiva molte letture che non venivano visualizzate in Performance Monitor. Tuttavia, poiché il disco utilizzava iSCSI, la scheda di rete mostrava un flusso di lettura costante intorno ai 200 Mbps.

Sospettavo delle istantanee di volume, così ho provato a cancellare l'istantanea più vecchia che ha immediatamente fatto scendere l'utilizzo della memoria del sistema da 24 GB a 13 GB.

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

(Nota: questo è un server di backup ad alto volume che esegue Windows 2016 con un'unità SSD iSCSI da 64 TB collegata. Mantiene una media di tre istantanee di volume in qualsiasi momento, con una nuova creata ogni 15 giorni. Ci sono circa 10 TB di dati scritti tra ogni snapshot).

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

Disabilitate il prefetcher nella chiave regedit: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\PrefetchParameters probabilmente avete Enable Prefetcher ad un valore di 2 o 3 quindi cambiatelo in 0

Poi dovete disabilitare Superfetch nei servizi

  1. Cercate services.msc

  2. Trova superfetch clicca su properties poi impostalo su disabled e ferma anche il servizio.

Faccio questi passi e quando gioco e uso normalmente il PC e il processo system usa solo 28k