J'ai 16 Go de RAM système. Au démarrage, aucune application ouverte sauf le gestionnaire de tâches Windows utilise environ 3 Go de RAM. J'ai regardé dans l'onglet des processus, mais rien ne semble sortir de l'ordinaire. Comment puis-je savoir pourquoi Windows utilise autant de RAM?
tous les processus de tous les utilisateurs
En lisant le pool, il semble que mon pilote broadcom sans fil utilise environ 0,4 Go de RAM. Même si je l'enlève, il utilisera toujours 2,6 Go au démarrage, ce qui est encore trop.
Après avoir réinstallé le pilote sans fil associé à la fuite de mémoire. J'ai une nouvelle capture d'écran et je voudrais confirmer qu'il s'agissait bien d'une fuite de mémoire.
Réponses:
Vous avez une fuite de mémoire causée par un pilote. Regardez la valeur élevée de la mémoire du noyau non paginée. Dans votre cas, cela dépasse 3,7 Go. Vous pouvez utiliser poolmon pour voir quel pilote est à l'origine de l'utilisation élevée.
Installez Windows WDK , exécutez poolmon, triez-le par Ptype de pool après afin que le nom non paginé soit placé en haut et par Boctets après pour afficher la balise qui utilise le plus de mémoire. Exécutez poolmon en allant dans le dossier où WDK est installé, accédez à Outils (ou C: \ Program Files (x86) \ Windows Kits \ 10 \ Tools \ x64) et cliquez sur poolmon.exe.
Regardez maintenant quel pooltag utilise le plus de mémoire, comme indiqué ici:
Ouvrez maintenant une invite de commande et exécutez la commande findstr. Pour ce faire, ouvrez l'invite cmd et tapez "cd C: \ Windows \ System32 \ drivers", sans guillemets. Puis tapez "findstr / s __ . ", Où __ est la balise (nom le plus à gauche dans poolmon). Faites ceci pour voir quel pilote utilise cette balise:
À présent, accédez au dossier des pilotes (C: \ Windows \ System32 \ drivers) et cliquez avec le bouton droit sur le pilote en question (intmsd.sys dans l'exemple d'image ci-dessus). Cliquez sur Propriétés, accédez à l'onglet Détails pour trouver le nom du produit. Recherchez une mise à jour pour ce produit.
Si le pooltag ne montre que les pilotes Windows ou est répertorié dans le pooltag.txt (
"C:\Program Files (x86)\Windows Kits\8.1\Debuggers\x64\triage\pooltag.txt"
)vous devez utiliser xperf pour identifier la cause de l'utilisation . Installez le WPT à partir du SDK Windows , ouvrez un cmd.exe en tant qu'administrateur et exécutez ceci:
capturer 30 à 60 de la croissance. Ouvrez l'ETL avec WPA.exe, ajoutez les graphiques de pool au volet d'analyse.
Placez la colonne pooltag en premier lieu et ajoutez la colonne de pile. Maintenant, chargez les symboles à l' intérieur de WPA.exe et développez la pile de la balise que vous avez vue dans poolmon.
Trouvez maintenant d’autres pilotes tiers que vous pouvez voir dans la pile. Ici, la
Thre
balise (Thread) est utilisée par AVKCl.exe de G-Data. Recherchez les mises à jour de pilotes / programmes pour y remédier.la source
Eh bien, la première chose, avant d'entrer dans une réponse plus détaillée. Dans votre première capture d'écran, votre réserve non paginée (type d'utilisation de la mémoire du noyau) est à 1,3 Go. Cela me semble inhabituellement élevé, surtout 30 minutes seulement après le démarrage. Je pense que NP Pool pourrait atteindre un tel niveau après une utilisation prolongée ou avec un programme qui fuyait comme un tamis. Par contraste, mon pool NP mesure généralement entre 100 et 200 mégaoctets, et mon pool paginé peut atteindre 400 ou 500 (et cela après que mon système ait fonctionné sans redémarrage pendant des semaines).
Vous pouvez activer quelques colonnes supplémentaires dans le Gestionnaire des tâches en cliquant avec le bouton droit de la souris sur les en-têtes de colonne et en choisissant la sélection de colonnes. Vous devez ajouter
Working Set (private)
,Working Set (shared)
,Commit
etNP Pool
. J'analyserais tous vos processus de tous les utilisateurs et verrais si l'un d'entre eux possède un pool NP supérieur à environ 256 Ko. Si vous en voyez, en particulier ceux qui sont considérablement plus élevés, cela pourrait être la source du problème, ou du moins une partie de celui-ci.Votre ensemble de travail total, la quantité de mémoire physique utilisée par un processus, est la combinaison des ensembles de travail privés et partagés. Privé est généralement plus volumineux pour la plupart des processus, mais certains d'entre eux utilisent une plus grande quantité de services partagés. La somme des deux doit normalement correspondre au nombre total de WS. La validation correspond à la quantité de votre groupe de travail qui a été validée dans le magasin de sauvegarde (dans la plupart des cas, le fichier d'échange Windows). Les applications en arrière-plan ont souvent une plus grande validation que WS, ce qui indique qu'une grande partie de leur pool paginé a été remplacée par la mémoire et insérée dans votre fichier de pagination (ce qui est plutôt normal pour les applications de bureau minimisées et non utilisées pendant un certain temps).
Le pool non paginé est une mémoire qui ne peut pas, et ne pourra jamais, être remplacée par de la mémoire physique ... ce qui correspond effectivement à l'utilisation minimale permanente de la mémoire physique. La mémoire du pool NP contient souvent du code de programme et des sections critiques qui doivent se trouver dans la mémoire physique pour se comporter correctement ou de manière sécurisée, des tas spéciaux, etc. Sur 60 processus, si chacun d'entre eux possède 256 Ko de mémoire du pool NP, votre consommation de mémoire physique minimale absolue serait autour de 15.360KB. Dans la plupart des cas, une ou deux applications peuvent avoir un pool NP de 256 Ko, tandis que la plupart en ont moins, souvent considérablement moins (voire pas du tout). Il est hautement improbable que le système trace jamais la totalité de l'ensemble des processus en cours, aussi ne vous attendez pas à ce que l'utilisation de la mémoire devienne aussi faible.
Enfin, l’intérêt d’avoir davantage de mémoire est d’éviter d’avoir à feuilleter des données vers et depuis l’espace mémoire étendu (swap, fichier de page) d’un disque physique. La pagination est un processus qui implique le déplacement de blocs de mémoire physique allouée, le transfert de certains sur le disque et le transfert des autres dans la mémoire physique. La pagination est, pour rester simple, hautement indésirable. Ce n'est pas «mauvais» en soi, mais cela peut être un frein sérieux aux performances quand elles se produisent trop fréquemment. Le but ultime de l’augmentation de la RAM physique totale dans un système est de permettre à davantage de processus de conserver une plus grande partie de leur validation dans la mémoire physique (ensemble de travail plus grand). Consommer de la mémoire n'est pas un problème, et lorsque davantage de processus en cours utilisent plus de mémoire, les performances système globales et les performances des processus actifs seront généralement plus performantes,
Windows gère la mémoire pour vous et met automatiquement en mémoire les données des pages vers et depuis le fichier d'échange (swap). Si vous exécutez un processus nécessitant 9 Go de mémoire et que votre système en utilise déjà 4 (sur 12 Go), le système déterminera automatiquement les processus qui ne nécessitent pas un accès immédiat à leur ensemble de travail complet, et pagera tout ou partie de celui-ci. de leur pool paginé sur pour échanger afin de libérer ce 1GB supplémentaire. Si votre processus volumineux a finalement besoin de plus de mémoire, Windows réduira encore le nombre de processus en cours jusqu'à ce qu'il dispose de suffisamment d'espace libre pour allouer le nouveau bloc demandé. Votre processus volumineux risque de consommer éventuellement toute la mémoire disponible, à l'exception de NP Pool, et éventuellement une surcharge supplémentaire pour l'exécution périodique de processus qui ne permettent pas à Windows de libérer davantage de son jeu de travail (i. e. ils ont des défauts de page en attente que Windows échangerait autrement en dehors de la mémoire physique, mais étant donné qu'ils sont demandés, ils ne peuvent pas être déplacés.)
Si un processus nécessite plus de mémoire qu'il n'est autorisé à en accéder (les processus 32 bits peuvent généralement accéder à 2 Go et certains à un peu moins de 4 Go avec des techniques améliorées, alors que les processus 64 bits peuvent généralement accéder à environ 48 Go de mémoire), Windows essaie parfois virtualiser sa mémoire avec l’espace de swap. Si une application 32 bits veut utiliser son maximum d'espace autorisé de 2 Go, mais que seulement 1,2 Go sont disponibles, Windows réservera l'intégralité des 2 Go dans le fichier de page et déplacera les données propres du processus dans et hors du fichier de page selon les besoins afin de: soutenir l'utilisation de la mémoire de l'application. L'utilisation totale de "mémoire" dans ce cas peut sembler être supérieure à la mémoire physique disponible, lors de l'activation totale. L'engagement total correspond généralement au maximum de la taille du fichier de page, qui, lorsqu'il est géré par le système, correspond généralement à 2 à 3 fois la quantité de mémoire physique. Dans ton cas,
Un dernier point. Vous avez dit dans votre réponse que vous disposiez de 16 Go de RAM, alors que le Gestionnaire des tâches ne voit que 12 Go de RAM. Une des deux choses ici. Soit votre système n’a en réalité que 12 Go de RAM, soit l’un de vos bâtons n’est pas enregistré correctement. Si un bâton de bélier (je suppose 4 bâtons de 4 Go), il peut être mauvais, ne pas être correctement installé dans votre carte mère ou avoir un problème de détection de mémoire.
Pour vérifier s’il s’agit de la dernière, vous devez d’abord mettre à jour le BIOS de votre carte mère vers la dernière version. J'ai eu un problème similaire ... mes six bâtons de bélier DDR3 Tripple-Channel (6x 2 Go) étaient tous bons sur la base de tests individuels chacun ... mais ma carte mère a décidé au hasard de ne pas compter un ou deux d'entre eux de temps en temps, me laissant souvent avec seulement 8 Go de bélier. Une mise à jour du BIOS a corrigé le problème et j’ai maintenant un accès fiable à tous les 12 Go de ma mémoire.
la source
Il utilise tellement de RAM parce qu'il est conçu pour le faire. Il n'y a absolument aucun coût associé à l'utilisation de la RAM. En fait, la RAM utilisée est meilleure que la RAM libre car le système d’exploitation n’a rien à faire pour l’utiliser. Utiliser de la RAM libre nécessite de l'utiliser, ce qui demande un effort.
Si vous pensez "Je veux ma RAM libre maintenant pour pouvoir l'utiliser plus tard", oubliez ça. Il n'est pas nécessaire que la RAM soit libre maintenant pour l'utiliser plus tard. Vous pouvez l'utiliser maintenant et l' utiliser plus tard. Il n'y a pas de compromis ici - il n'y a absolument aucun inconvénient à utiliser la RAM.
La mémoire vive est utilisée et directement commutée d’une utilisation à l’autre sans avoir à passer par l’effort de la libérer, il suffit de la réutiliser. Les systèmes d'exploitation modernes ne libèrent de la RAM que lorsqu'ils n'ont pas d'autre choix.
la source
“Why is Windows using RAM?”
, la question est“Why do the RAM usage numbers not add up; why is one part reporting a higher usage than another part?”
Ce post doit être au mieux un commentaire car il n'aborde pas la question elle-même ni ne tente d'y répondre; il ne fait que donner un conseil, et un mauvais conseil car si le PO l'avait ignoré comme suggéré, la fuite de mémoire ne serait pas découverte.Une raison non mentionnée ci-dessus est Hyper-V.
J'ai pu l'identifier avec l'excellent utilitaire RamMap :
La capture d'écran est d'après. Avant la mémoire du «pilote verrouillé», elle dépassait 6 Go, soit plus de 80% de la mémoire vive de cette machine. Je devais entrer dans le gestionnaire Hyper-V et désactiver la "mémoire dynamique". Curieusement, même après la réactivation, la mémoire "Driver Locked" est restée faible - je ne peux que supposer que les instances antérieures l'ont augmentée et que Hyper-V ne réduit pas automatiquement la mémoire allouée:
la source