86 votes

Windows 10, le processus 'System' consomme d'énormes quantités de RAM

Depuis que j'ai mis à niveau vers Windows 10, mon système utilise excessivement de la RAM

Description de l'image ici

J'ai lu un peu et j'ai déterminé qu'il s'agit probablement d'un pilote qui fuit la mémoire. J'ai donc obtenu le Windows Driver Kit et j'ai suivi l'utilisation de la mémoire avec poolmon:

Description de l'image ici

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

J'ai essayé des trucs comme "C:\Windows\System32\drivers>findstr /s smnp ." mais cela n'a donné aucun résultat. J'ai également regardé le fichier pooltag.txt et voici la description que j'ai trouvée pour cela:

Description de l'image ici

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

98voto

magicandre1981 Points 94338

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

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

J'ai découvert cela sur Sysinternals.

J'ai posé la question à Microsoft et la réponse est que c'est intentionnel. Cela est lié à la compression de la mémoire système.

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

Dans Windows 10, nous avons ajouté un nouveau concept dans le gestionnaire de mémoire appelé un magasin de compression, qui est une collection en mémoire de pages comprimées. Cela signifie que lorsque le gestionnaire de mémoire ressent une pression sur 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, permettant à Windows 10 de maintenir plus d'applications en mémoire physique en même temps. Cela améliore également la réactivité de Windows 10. Le magasin de compression vit dans l'ensemble de travaux du processus Système. Comme le le processus système contient le magasin en mémoire, son ensemble de travail s'agrandit exactement lorsque de la mémoire est libérée pour d'autres processus. Ceci est visible dans le Gestionnaire de tâches et la raison pour laquelle le processus Système semble consommer plus de mémoire que les versions précédentes.

Donc au lieu d'écrire les données mémoire dans le fichier d'échange, il les compresse. Et cette mémoire compressée est affichée dans le processus Système.

Microsoft a également publié plus de détails dans l'inside hub. Winbeta a créé un article qui inclut plus de détails.

Apparemment, la raison pour laquelle cela s'est produit est que Microsoft a choisi de suspendre les applications UWP lorsqu'elles n'étaient pas au premier plan, très similaire à la gestion de certains OS de smartphones. 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 jusqu'à ce que l'utilisateur revienne vers eux. L'approche 'tout ou rien' est mise à jour avec Windows 10 introduisant une couche entre le fichier d'échange et l'activité de pagination normale. Maintenant, lorsqu'il est confronté à des problèmes de pression sur la mémoire, MM déterminera quelles pages doivent être déplacées vers la liste modifiée du dans un processus appelé trimming. La liste modifiée est une liste secondaire de fichiers de pagination sauvegardant une liste de fichiers de pagination en veille. Une liste de sauvegarde est capturée au cas où la mémoire serait récupérée de la liste en veille par un autre processus, et le processus d'origine vient chercher sa page. Au lieu de tout ou rien, Windows 10 MM va compresser 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 de disque - grâce à la compression - et maintenant plus de données peut être stocké en mémoire.

description de l'image

D'après l'équipe Windows, "En pratique, la mémoire compressée occupe environ 40 % de la taille décompressée, et en conséquence d'un périphérique typique exécutant une charge de travail typique, Windows 10 écrit des pages sur le disque seulement 50 % aussi souvent que les versions précédentes du système d'exploitation." Si tout se passe comme prévu, les utilisateurs de Windows pourraient avoir des temps d'attente réduits pour tous les appareils ainsi qu'une durée de vie prolongée sur les systèmes qui ont des disques durs à base de flash.

La décompression est également quelque chose pour laquelle Windows 10 est bien conçu. Windows 10 utilise la combinaison de parallélisme et lectures séquentielles pour produire des pages en mémoire une fois appelées. La nouvelle la décompression devrait se traduire par une expérience plus rapide car Windows 10 est décompresser les données et les lire en parallèle en utilisant plusieurs CPU. Les versions plus anciennes de Windows peuvent sembler lentes en raison des taux de transfert entre le disque.

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

Compression de 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é du temps à expliquer pourquoi le processus Système dans Windows 10 prend un peu plus de mémoire et pourquoi c'est une bonne chose. Un processus prenant plus de mémoire peut sembler être une mauvaise chose - jusqu'à ce que j'en apprenne davantage sur la gestion de la mémoire, la pagination et les fautes de page dures / molles. Il s'avère que le système d'exploitation effectue des optimisations astucieuses qui permettent à vos processus de réduire une partie de la mémoire sans nécessairement le paginer sur le disque. Non seulement la mémoire est-elle préservée en RAM, mais elle est également compressée - rendant les fautes de page dures plus une occurrence rare. Les résultats devraient donner une expérience plus réactive.

Dans les dernières versions TH2, Microsoft a mis à jour la description dans le gestionnaire de tâches et montre maintenant que le processus SYSTEM héberge la mémoire compressée:

description de l'image

pour éviter les confusions concernant l'utilisation "élevée".

Dans la mise à jour de l'anniversaire de Windows 10 publiée en août 2016, Microsoft a extrait la Compression en la montrant désormais dans un pseudo-processus appelé Memory Compression pour ne plus dérouter les utilisateurs sur la raison pour laquelle SYSTEM a une utilisation de mémoire aussi importante :

description de l'image

Mais il semble que Taskmgr ne montre pas ce processus, seuls ProcessExplorer/ProcessHacker peuvent le montrer. Le Taskmgr montre uniquement la quantité de mémoire compressée dans l'ensemble :

description de l'image

Si vous survolez le graphique de mémoire utilisée dans Taskmgr, vous verrez une info-bulle montrant la quantité de données compressées.

description de l'image

Dans cette démo, 388MB sont compressés à 122MB, donc 267MB sont économisés avec la compression.

13voto

den Points 242

En allant dans services.msc (via Win+R) et en désactivant complètement Superfetch, cela résout complètement ce problème. Je ne suis pas sûr si Superfetch est simplement cassé pour le moment ou si c'est "par conception".

De plus, apparemment se débarrasser du fichier d'échange aura le même effet mais la solution ci-dessus est un choix plus sûr.

0voto

Brain2000 Points 374

J'ai trouvé un cas aberrant qui entraîne une utilisation élevée de la mémoire système et je voulais l'inclure au cas où cette information pourrait bénéficier à quelqu'un.

Si vous utilisez intensivement les instantanés de volume de Microsoft (l'instantané logiciel, pas l'instantané matériel), plus vous gardez d'instantanés combinés à de grandes modifications de données, plus le Système utilisera de RAM.

Normalement, la quantité de RAM utilisée pour les instantanés de volume est faible et ne sera pas remarquée, à moins d'avoir un volume géant (par exemple 64 To) avec des delta de plusieurs téraoctets entre les instantanés. Par défaut, les instantanés se supprimeront simplement si les E/S en écriture deviennent trop élevées, mais il existe des moyens de l'empêcher, vous permettant d'atteindre d'importants deltas.

Ci-dessous, un cas extrême montrant que le processus Système d'un serveur utilise 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é.

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

Le processus Système ci-dessus utilisait précédemment 24 Go, et les trois comportements suivants ont été observés :

  1. Après un redémarrage et une connexion, le système se figeait pendant un certain temps sur un écran blanc jusqu'à ce que le bureau apparaisse.
  2. Pendant cette attente, en ouvrant le Gestionnaire des tâches (CTRL-SHIFT-ESC), l'utilisation de la mémoire système augmentait.
  3. Pendant cet arrêt, le disque contenant les instantanés de volume effectuait de nombreuses lectures qui n'apparaissaient pas dans le Moniteur de ressources. Cependant, puisque le disque utilisait l'iSCSI, la carte réseau affichait un flux de lecture constant autour de 200 Mo/s.

J'ai soupçonné les instantanés de volume, j'ai donc essayé de supprimer le plus ancien instantané, ce qui a immédiatement fait chuter l'utilisation de mémoire du Système de 24 Go à 13 Go.

Dans ces circonstances, ce comportement peut être normal, bien que je n'aie pas confirmé cela avec Microsoft. En attendant, je vais ajouter 32 Go de RAM supplémentaires à ce serveur pour gérer la surcharge des instantanés.

(Note : il s'agit d'un serveur de sauvegarde à haut volume exécutant Windows 2016 avec un disque SSD iSCSI de 64 To attaché. Il maintient en moyenne trois instantanés de volume à tout moment, un nouveau étant créé tous les 15 jours. Environ 10 To de données sont écrites entre chaque instantané).

-2voto

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

Ensuite, vous devez désactiver Superfetch dans les services

  1. Recherchez services.msc

  2. Recherchez superfetch cliquez sur propriétés puis définissez-le sur désactivé et arrêtez également le service.

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

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X