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

Windows 10, processus "système" nécessitant une quantité massive de mémoire vive

Depuis que je suis passé à Windows 10, mon système consomme excessivement de la RAM

J'ai lu un peu et j'ai déterminé qu'il s'agit probablement d'une fuite de mémoire du pilote. Je me suis donc procuré le Windows Driver Kit et j'ai suivi l'utilisation de la mémoire avec poolmon :

Cependant, je ne sais pas vraiment comment procéder à partir de là. L'article marqué “smNp” est-il le coupable dans ce numéro ? Comment procéder à partir de là pour identifier réellement le conducteur ?

J'ai essayé des trucs comme “C:\Windows\System32\drivers>findstr /s smnp .” mais ça n'a donné aucun résultat. J'ai aussi jeté un coup d'oeil au fichier pooltag.txt et voici la description que j'ai trouvée :

Donc oui, toute aide serait appréciée. Merci d'avance.

Réponses (4)

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

J'ai regardé les traces xperf de plusieurs utilisateurs et ici la fonction ntoskrnl.exe!SmKmStoreHelperWorker du noyau commence à allouer de la mémoire.

(Cliquez sur l'image pour l'agrandir)

J'ai découvert ceci sur sysinternals .

J'ai interrogé Microsoft à ce sujet et la réponse est que c'est à dessein. C'est lié à la compression de la mémoire système.

Dans l'annonce de Windows 10 Build 10525, Microsoft l'a un peu expliqué :

Dans Windows 10, nous avons ajouté un nouveau concept dans le gestionnaire de mémoire appelé “compression store”, qui est une collection de pages compressées en mémoire. Cela signifie que lorsque le Memory Manager ressent la pression de la mémoire, il va compresser les pages inutilisées au lieu de les écrire sur le disque. Cela réduit la quantité de mémoire utilisée par processus, ce qui permet à Windows 10 de maintenir plus d'applications en mémoire physique à la fois. Cela permet également d'améliorer la réactivité de Windows 10. Le magasin de compression vit dans le jeu de travail du processus système. Du fait que le processus système conserve le magasin en mémoire, son jeu de travail s'agrandit exactement au moment où la mémoire est mise à disposition d'autres processus. Ceci est visible dans le gestionnaire des tâches et la raison pour laquelle le processus système semble consommer plus de mémoire que les versions précédentes.

Ainsi, au lieu d'écrire des données en mémoire dans le fichier de page, il les compresse. Et cette mémoire compressée est affichée dans le processus système.

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

Apparemment, la raison en est que Microsoft a choisi de suspendre les applications UWP lorsqu'elles n'étaient pas au premier plan, ce qui est très similaire à la gestion du système d'exploitation de certains smartphones. Les utilisateurs de Windows 8 ont compris (peut-être pas) que si les applications n'étaient pas à l'écran, elles ne fonctionnaient pas jusqu'à ce que l'utilisateur y revienne. L'approche “tout ou rien” est en cours de mise à jour ** avec Windows 10 qui introduit une couche entre le fichier de page et l'activité normale de pagination. Désormais, en cas de problème de mémoire, le MM déterminera quelles pages doivent être déplacées vers la liste modifiée par un processus appelé “trimming” ** La liste modifiée est une liste secondaire de fichiers de pages qui vient compléter une liste de fichiers de pages en attente. La liste modifiée est une liste secondaire de fichiers de pages qui vient en complément d'une liste de fichiers de pages en attente. Une liste de sauvegarde est capturée au cas où la mémoire est récupérée de la liste de réserve par un autre processus, et que le processus d'origine vient chercher sa page. Au lieu de tout ou rien, Windows 10 MM compresse les pages inutilisées plutôt que de les écrire sur le disque. Avec moins d'écriture, le résultat devrait être moins d'opérations sur le disque - grâce à la compression - et maintenant plus de données peuvent être stockées en mémoire.

Selon l'équipe Windows, “ En pratique, la mémoire compressée occupe environ 40% de la taille non compressée, et du fait qu'un appareil typique exécute une charge de travail typique, Windows 10 n'écrit des pages sur le disque que 50% plus souvent que les versions précédentes de l'OS. ” Si tout se passe comme prévu, les utilisateurs de Windows pourraient connaître des temps d'attente réduits pour tous les appareils ainsi que des durées de vie prolongées sur les systèmes qui ont des disques durs à base de flash.

La décompression est également un point sur lequel Windows 10 est conçu pour bien faire. Windows 10 utilise la combinaison de la parallélisation et des lectures séquentielles pour produire des pages en mémoire une fois appelées. La nouvelle décompression devrait permettre une expérience plus rapide car Windows 10 décompresse les données et les lit en parallèle en utilisant plusieurs processeurs. Les anciennes versions de Windows pouvaient sembler lentes en raison des taux de transfert entre les disques.

Microsoft a également publié une vidéo sur le canal 9 qui explique cette 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 à discuter des raisons pour lesquelles le processus système de Windows 10 prend un peu plus de mémoire et pourquoi c'est une bonne chose. Un processus qui prend plus de mémoire semble être une mauvaise chose - jusqu'à ce que j'en comprenne plus sur la gestion de la mémoire, la pagination et les erreurs de pages dures / douces. Il s'avère que le système d'exploitation effectue des optimisations intelligentes qui permettent à vos processus de réduire une partie de la mémoire mais pas nécessairement de la transférer sur le disque. Non seulement la mémoire est conservée en RAM, mais elle est également compressée, ce qui rend les erreurs de page dures plus rares. Les résultats devraient rendre l'expérience plus agréable.

Dans les derniers TH2 Builds, Microsoft a mis à jour la description dans le gestionnaire de tâches et montre maintenant que le processus SYSTEM héberge les compressed memory :

pour éviter les confusions sur l'utilisation “élevée”.

Dans la mise à jour du 10e anniversaire de Windows, publiée en août 2016, Microsoft a extrait la compression dans un pseudo processus appelé Memory Compression pour ne plus confondre les utilisateurs et leur expliquer pourquoi SYSTEM a une si grande utilisation de la mémoire :

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

Si vous survolez le graphique de la mémoire utilisée dans Taskmgr, vous verrez une infobulle qui indique la quantité de données compressées.

Dans cette démo, 388 Mo sont compressés à 122 Mo, ce qui signifie que 267 Mo sont enregistrés avec la compression.

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

En allant dans services.msc (via Win+R) et en désactivant Superfetch, on résout complètement ce problème. Je ne sais pas si Superfetch est juste cassé dès maintenant ou si c'est “par conception”.

De plus, apparemment, se débarrasser du fichier de pagination aura le même effet mais la solution ci-dessus est un pari safer.

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

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

Si vous utilisez fortement les Volume Snapshots de Microsoft (l'instantané logiciel, pas l'instantané matériel), plus vous conservez d'instantanés combinés à de grandes modifications de données, alors le système consommera plus de mémoire vive.

Normalement, la quantité de mémoire vive utilisée pour les instantanés de volume est faible et ne sera pas remarquée, à moins que vous n'ayez un volume géant (c'est-à-dire 64 To) avec des deltas de plusieurs téraoctets entre les instantanés. Par défaut, les snapshots s'effacent simplement d'eux-mêmes si les E/S d'écriture deviennent trop élevées, mais il existe des moyens d'empêcher cela, vous permettant d'atteindre des deltas massifs.

Ci-dessous, un cas extrême montrant le processus système d'un serveur utilisant 13 Go de RAM. Ce serveur n'a que deux instantanés de volume, pris à 15 jours d'intervalle, avec environ 10 To de données écrites entre chaque instantané.

Le processus système ci-dessus était auparavant utilisé à 24 Go, et les trois comportements suivants ont été observés :

  1. après un redémarrage et une reconnexion, le système restait suspendu pendant un certain temps à un écran vide jusqu'à ce que le bureau apparaisse.
  2. Pendant cette période, le fait de tirer le gestionnaire de tâches (CTRL-SHIFT-ESC) a montré que l'utilisation de la mémoire du système augmentait.
  3. Pendant cette suspension, le disque avec les instantanés du volume a effectué de nombreuses lectures qui n'ont pas été affichées dans le moniteur de performance. Cependant, comme le disque utilisait l'iSCSI, la carte réseau a montré un flux de lecture régulier d'environ 200 Mbps.

Je soupçonnais les Volume Snapshots, j'ai donc essayé de supprimer le plus ancien snapshot, ce qui a instantanément fait chuter l'utilisation de la mémoire du système de 24 Go à 13 Go.

Dans ces circonstances, cela peut être un comportement normal, bien que je ne l'aie pas confirmé auprès de Microsoft. En attendant, je vais ajouter 32 Go de mémoire vive à ce serveur pour gérer la surcharge de l'instantané.

(Note : il s'agit d'un serveur de sauvegarde à haut volume fonctionnant sous Windows 2016 avec un lecteur iSCSI SSD de 64 To connecté. Il conserve une moyenne de trois instantanés de volume à tout moment, un nouveau étant créé tous les 15 jours. Il y a environ 10 To de données écrites entre chaque instantané).

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

Désactivez le préchargeur dans la clé de regedit : HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\PrefetchParameters vous avez probablement Enable Prefetcher à une valeur de 2 ou 3 donc changez le en 0

Ensuite vous devez désactiver Superfetch dans les services

  1. Recherchez services.msc

  2. Trouvez superfetch cliquez sur properties puis réglez-le sur disabled et arrêtez également le service.

Je fais ces étapes et lorsque je joue et que j'utilise normalement mon PC et que le processus system n'utilise que 28k