Windows 10, processus 'Système' prenant d'énormes quantités de RAM

83

Depuis la mise à niveau vers Windows 10, mon système consomme excessivement de RAM.

entrez la description de l'image ici

J'ai lu un peu et déterminé qu'il est probable qu'un pilote perd de la mémoire. Je me suis donc procuré le kit de pilotes Windows et suivi l'utilisation de la mémoire avec poolmon:

entrez la description de l'image ici

Cependant, je ne sais pas vraiment comment procéder à partir d’ici. L'élément étiqueté "smNp" est-il le coupable de ce problème? Comment puis-je partir de là pour identifier le conducteur?

J'ai essayé des trucs comme "C: \ Windows \ System32 \ drivers> findstr / s smnp . " Mais cela n'a donné aucun résultat. J'ai aussi jeté un œil au fichier pooltag.txt et voici la description que j'ai trouvée:

entrez la description de l'image ici

Alors oui, toute aide serait la bienvenue. Merci d'avance.

Nayncore
la source
1
ok, j'ai ajouté les informations que j'ai pu trouver. Vérifiez-les
magicandre1981
1
Il s'agit d'une fonctionnalité du système permettant de conserver davantage d'éléments dans la RAM en utilisant la compression plutôt que la pagination sur le disque. @ magicandre1981 a la bonne information ici qui devrait être acceptée comme la bonne réponse.
Mani Gandham
Les 14 mégaoctets que poolmon montre associés à la balise smNp représentent une quantité purement triviale. Vous êtes inquiet au sujet de 1,3 Go dans l'ensemble de travail privé du processus système - pourquoi vous concentrer sur 14 Mo de pool non paginé (qui ne fait partie d'aucun ensemble de travail de processus)?
Jamie Hanrahan

Réponses:

14

En passant par services.msc(via Win+R) et en désactivant Superfetch, cela résout complètement le problème. Je ne suis pas sûr si Superfetch est juste cassé à partir de maintenant ou c'est "à dessein".

En outre, le fait de se débarrasser du fichier de pagination aura apparemment le même effet, mais la solution ci-dessus est un pari plus sûr .

tanière
la source
1
Cela a réellement fonctionné. La mémoire utilisée par le système est revenue à environ 0,1 Mo, même après des heures d'utilisation. Merci!
Nayncore
25
Bien qu'une telle utilisation de mémoire soit généralement un signal d'alarme en cas de fuite de mémoire, cette mémoire est utilisée légitimement comme une FONCTION de Windows 10 (voir la réponse de magicandre ci-dessous).
Bigbio2002
7
ce n'est pas un bug et ne devrait pas être désactivé
phuclv
6
Si la fonctionnalité provoque des avertissements de mémoire insuffisants, elle n'est pas bonne. Maintenant, ma Surface Pro avec 4 Go de RAM est complètement inutilisable pour le développement et même sur un ordinateur portable avec 8 Go de RAM, je reçois constamment ces avertissements. Le pouce en l'air pour la solution!
Oleg I.
93

J'ai examiné les traces xperf de plusieurs utilisateurs et la fonction ntoskrnl.exe!SmKmStoreHelperWorkerdu noyau commence à allouer de la mémoire.

Capture d'écran
(Cliquez sur l'image pour l'agrandir)

J'ai découvert cela sur sysinternals .

J'ai demandé à Microsoft à ce sujet et la réponse est que cela est voulu par la conception. Il est lié à la compression de la mémoire système.

Dans l'annonce de Windows 10 Build 10525, Microsoft l'expliquait un peu :

Dans Windows 10, nous avons ajouté un nouveau concept dans le gestionnaire de mémoire, appelé magasin de compression, qui est une collection en mémoire de pages compressées. Cela signifie que lorsque le gestionnaire de mémoire ressent une pression sur la mémoire, il compressera les pages non utilisées au lieu de les écrire sur le disque. Cela réduit la quantité de mémoire utilisée par processus et permet à Windows 10 de gérer simultanément plus d'applications dans la mémoire physique. Cela contribue également à améliorer la réactivité sous Windows 10. Le magasin de compression figure dans l'ensemble de travail du processus système.Etant donné que le processus système garde le magasin en mémoire, son ensemble de travail s'agrandit exactement lorsque la mémoire est mise à disposition pour d'autres processus. Cela est visible dans le Gestionnaire des tâches et la raison pour laquelle le processus système semble utiliser plus de mémoire que les versions précédentes.

Ainsi, au lieu d'écrire des données de mémoire dans le fichier d'échange, celles-ci sont compressées. Et cette mémoire compressée est affichée dans le processus système.

Microsoft a également publié plus de détails dans le hub interne. Winbeta a créé un article qui inclut plus de détails.

Apparemment, la raison en était que Microsoft avait décidé de suspendre les applications UWP lorsqu'elles n'étaient pas au premier plan, ce qui est très similaire à la gestion de certains systèmes d'exploitation de smartphone. Les utilisateurs de Windows 8 ont compris (peut-être pas) que si les applications n'étaient pas à l'écran, elles ne s'exécuteraient pas tant que l'utilisateur ne reviendrait pas à celles-ci. L'approche "tout ou rien" est en cours de mise à jour, Windows 10 introduisant une couche entre le fichier d'échange et l'activité de pagination normale. Désormais, lorsqu'il est confronté à des problèmes de pression de mémoire, MM détermine quelles pages doivent être déplacées vers la liste modifiée dans un processus appelé rognage.La liste modifiée est une liste secondaire de fichiers de page sauvegardant une liste de fichiers de page en attente. Une liste de sauvegarde est capturée dans le cas où la mémoire est récupérée à partir de la liste de secours par un autre processus, et le processus d'origine recherche sa page. Au lieu de tout ou rien, Windows 10 MM compressera les pages inutilisées au lieu de les écrire sur le disque. Avec moins d'écriture, le résultat devrait être moins d'opérations de disque - grâce à la compression - et maintenant plus de données peuvent être stockées en mémoire.

entrez la description de l'image ici

Selon l’équipe Windows, « En pratique, la mémoire compressée occupe environ 40% de la taille non compressée et, du fait d’un périphérique typique exécutant une charge de travail typique, Windows 10 n’écrit les pages sur disque que 50% aussi souvent que les versions précédentes. l'OS. «Si tout se déroule comme prévu, les utilisateurs Windows pourraient connaître des temps d'attente réduits pour tous les périphériques, ainsi qu'une durée de vie prolongée sur les systèmes dotés de disques durs flash .

La décompression est aussi quelque chose que Windows 10 est conçu pour bien faire. Windows 10 utilise la combinaison de lectures séquentielles et de parallélisabilité pour produire des pages en mémoire une fois appelé. La nouvelle décompression devrait permettre une expérience plus rapide, car Windows 10 décompresse simultanément les données et les lit en parallèle à l'aide de plusieurs processeurs. Les anciennes versions de Windows ont peut-être semblé lentes à cause des taux de transfert entre les disques.

Microsoft a également publié une vidéo sur channel9 qui explique la fonctionnalité.

Compression de la mémoire dans Windows 10 RTM
https://channel9.msdn.com/Blogs/Seth-Juarez/Memory-Compression-in-Windows-10-RTM

Dans cette vidéo, Mehmet Iyigun a passé un certain temps à expliquer pourquoi le processus système de Windows 10 utilise un peu plus de mémoire et pourquoi c'est une bonne chose. Un processus nécessitant plus de mémoire semble être une mauvaise chose - c'est tant que je n'en ai pas compris davantage sur la gestion de la mémoire, la pagination et les défauts de page matériels / logiciels. Il s'avère que le système d'exploitation procède à des optimisations astucieuses qui permettent à vos processus de réduire une partie de la mémoire, mais pas nécessairement de la renvoyer sur le disque. Non seulement la mémoire est conservée dans la RAM, mais elle est également comprimée, ce qui rend les erreurs de page difficiles plus rares. Les résultats devraient faire pour une expérience plus vivante.

Dans les dernières versions de TH2, Microsoft a mis à jour la description dans le gestionnaire de tâches et indique désormais que le processus SYSTEM héberge le compressed memory:

entrez la description de l'image ici

pour éviter des confusions sur l'utilisation "élevée".

Dans la mise à jour d'anniversaire de Windows 10 publiée en août 2016, Microsoft a extrait la compression actuellement affichée dans un pseudo processus appelé Memory Compressionà ne plus confondre les utilisateurs, ce qui explique pourquoi SYSTEM a une utilisation de mémoire aussi importante:

entrez la description de l'image ici

Mais il semble que Taskmgr ne montre pas ce processus, seul ProcessExplorer / ProcessHacker est capable de le montrer. Taskmgr affiche uniquement la quantité de mémoire compressée dans la vue d'ensemble:

entrez la description de l'image ici

Si vous passez le curseur de la souris sur le graphique de mémoire utilisé dans Taskmgr, une info-bulle affiche le nombre de données compressées.

entrez la description de l'image ici

Dans cette démonstration, 388 Mo sont compressés à 122 Mo, donc 267 Mo sont enregistrés avec la compression.

magicandre1981
la source
9
@Zaibis: Je pense que l'idée est que vous ne perdez pas 1 Go. 1 Go a été réservé par Windows et sera utilisé pour les allocations. Tu n'as pas perdu la mémoire.
Courses de légèreté en orbite
12
"La mémoire non utilisée est une mémoire perdue" a longtemps été la devise de OS X. On dirait que Windows a également été intégré.
Déceze
1
@ magicandre1981 Que voulez-vous dire parSystem Memory compression
user2284570
2
Je ne peux pas répondre à cela dans les détails. Je n'ai reçu que les informations qu'il s'agit de conception, qui ont quelque chose à voir avec une compression de mémoire, ce qui sera expliqué par un article de blog. Lorsque je recevrai de nouvelles informations, je mettrai à jour mon message.
magicandre1981
2
@JosiahKeller La boîte de dialogue "Mémoire faible" concerne la faible mémoire virtuelle. Cela n’a presque rien à voir avec l’utilisation ou la disponibilité de la mémoire physique (RAM). Ils sont comptabilisés séparément par tous les systèmes d'exploitation modernes.
David Schwartz
0

J'ai trouvé un cas particulier qui entraîne une utilisation importante de la mémoire système et je voulais l'inclure au cas où cette information profiterait à quiconque.

Si vous utilisez abondamment les instantanés en volume de Microsoft (l'instantané logiciel et non l'instantané matériel), plus vous conservez d'instantanés combinés à des modifications de données volumineuses , le système consomme plus de RAM.

Normalement, la quantité de RAM utilisée pour les instantanés de volume est faible et ne sera pas remarquée, sauf si vous avez un volume géant (64 To) avec des deltas de plusieurs téraoctets entre les instantanés. Par défaut, les instantanés se suppriment simplement d'eux-mêmes si les E / S d'écriture deviennent trop élevées, mais il existe des moyens pour empêcher cela, vous permettant ainsi d'atteindre des deltas énormes.

Vous trouverez ci-dessous un cas extrême illustrant le processus système d’un serveur utilisant 13 Go de RAM. Ce serveur ne contient que deux instantanés de volume, espacés de 15 jours, avec environ 10 To de données écrites entre chaque instantané.

Utilisation de la mémoire système à 13 Go

Le processus système ci-dessus était précédemment à 24 Go d'utilisation et les trois comportements suivants ont été observés:

  1. Après un redémarrage et une nouvelle connexion, le système se bloquait pendant un certain temps sur un écran vide jusqu'à ce que le bureau apparaisse.
  2. Pendant ce blocage, le Gestionnaire des tâches (CTRL-SHIFT-ESC) a montré que l'utilisation de la mémoire système augmentait.
  3. Pendant ce blocage, le disque avec les instantanés de volume a effectué beaucoup de lectures qui ne se sont pas affichées dans l'Analyseur de performances. Cependant, du fait que le disque utilisait iSCSI, la carte réseau affichait un flux de lecture constant autour de 200 Mbps.

Comme je soupçonnais les instantanés en volume, j'ai essayé de supprimer le plus ancien instantané qui avait instantanément fait passer l'utilisation de la mémoire système de 24 Go à 13 Go.

Dans ces circonstances, cela peut être un comportement normal, bien que je ne l’aie pas confirmé avec Microsoft. En attendant, j'ajouterai 32 Go de RAM supplémentaires à ce serveur pour gérer le temps système d'instantané.

(Remarque: il s'agit d'un serveur de sauvegarde de gros volumes fonctionnant sous Windows 2016 auquel est connecté un lecteur iSCSI SSD de 64 To. Il conserve en moyenne trois instantanés de volume à la fois, un nouveau étant créé tous les 15 jours. données écrites entre chaque instantané).

Brain2000
la source
-1

Désactiver le prefetcher dans la clé regedit: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\PrefetchParametersvous avez probablement Enable Prefetcherune valeur de 2ou 3alors le changer en0

Ensuite, vous devez désactiver Superfetchdans les services

  1. Rechercher services.msc

  2. superfetchCliquez sur Rechercher propertiespuis définissez-le sur disabledet arrêtez également le service.

Je fais ces étapes et quand je joue et utilise normalement PC et le systemprocessus utilise seulement 28k

Grzesiek Grzychu Góra
la source
12
C'est une idée horrible. Prefetch / superfetch sont utilisés pour une raison. Si vous pensez que vous pouvez gérer la mémoire mieux que votre système d'exploitation, vous vous trompez malheureusement.
b1nary.atr0phy
Désactiver prefetch (ou "nettoyer votre dossier prefetch") est en effet une idée très stupide. Prefetch ne force pas le système à utiliser davantage de RAM. Il accélère le chargement des fichiers exe et dll une fois que vous les démarrez , et seulement à ce moment-là. Re SuperFetch, Microsoft désactive SuperFetch par défaut sur les systèmes dotés d’un SSD pour le lecteur Windows; ils estiment que le bénéfice n'en vaut pas la peine. Personnellement, je le laisse activé car je dispose d'autres lecteurs, non-SSD, sur lesquels je souhaite que SF continue à fonctionner.
Jamie Hanrahan