Récemment, pour pérenniser mon ordinateur, j'ai ajouté au-dessus de mes 4 Go de mémoire d'origine. J'ai porté la mémoire totale à 8 Go, et je n'ai aucun changement notable de vitesse, même quand cela devrait. Je suis allé voir le Gestionnaire des tâches et j'ai vu que mon ordinateur ne dépasserait pas 4 Go de mémoire utilisée, même avec Chrome et Firefox ouverts avec 20 onglets chacun.
Après avoir fait des recherches, tout ce que chacun avait suggéré de faire était de vérifier la quantité de mémoire utilisable. Curieusement, il dit que j'ai 8 Go de mémoire et 7,74 Go est utilisable.
Les spécifications de mon HP Pavilion g7-1075dx se trouvent ici. Il s'agit d'un ordinateur portable avec Windows 7 Home Premium 64 bits avec AMD Phenom II.
Ma question principale est: avec mon ordinateur 64 bits, pourquoi mon ordinateur n'utilise-t-il pas plus de 4 Go de mémoire, même si plus de 7 sont utilisables?
EDIT: si cela aide, Resource Monitor décrit toutes les autres RAM comme "Standby"
Réponses:
La RAM "en veille" est en cours d'utilisation. Il est utilisé comme cache de pages (il contient les pages récemment perdues de tous les ensembles de travail de processus; c'est-à-dire que les erreurs de page peuvent être résolues sans aller sur le disque) et également pour le cache de fichiers proactif par SuperFetch.
Il est considéré comme "disponible" car les pages de secours n'ont pas besoin d'être écrites sur le disque avant de pouvoir être affectées à une autre utilisation. Tels que lorsqu'un processus frappe un défaut de page qui ne nécessite la lecture à partir du disque, nouvelle page physique (s) doivent être alloués à ce processus, et le cas échéant ceux - ci peuvent être pris dans la liste d' attente. (Ce n'est pas le premier choix pour trouver des pages à cet effet, ce serait la liste gratuite puis la page zéro.)
En d'autres termes, votre système fonctionne comme il se doit.
Vous pouvez forcer votre système à mettre plus de RAM dans l'état "en cours d'utilisation" facilement avec l'outil de ligne de commande
testlimit
, l'un des outils utilisés dans les expériences dans Windows Internals . Il ne fait pas partie des outils sysinternals habituels mais y est associé; trouver ici sur le site Sysinternals. Le téléchargement est un fichier zip qui contient deux versions, testlimit.exe et testlimit64.exe. Les deux sont liés aux grandes adresses, la version 32 bits pourra donc allouer jusqu'à 3 Gio sur une machine 32 bits démarrée avec / 3 Go, jusqu'à 4 Gio sur une machine 64 bits.c:\> testlimit -?
donne de l'aide.c:\> testlimit -d 4 -c 512
tentera d'allouer 2 Gio d'espace d'adressage virtuel privé de processus dans 512 allocations de 4 Mio chacune. Cela devrait fonctionner correctement sur une machine 64 bits. Sur une machine 32 bits non démarrée avec / 3 Go (la plupart ne le sont pas), il peut y avoir une erreur un peu plus tôt b / c, il y a déjà quelques Mio de choses dans le processus (comme le programme lui-même, toutes les DLL, etc.), donc il n'y a pas tout à fait 2 Gio disponibles pour le programme à allouer.Dans les deux cas, il y aura une réduction de la RAM «disponible» et une augmentation de la RAM «en cours d'utilisation», mais pas nécessairement 2 Gio car il n'y a aucune garantie que le système d'exploitation laissera les 2 Gio dans le jeu de travail privé du processus. Même si c'est le cas à court terme, vous pouvez voir l'ensemble de travail du processus diminuer plus tard, car le système d'exploitation décide "hm, vous ne faites rien avec, les autres processus en ont plus besoin" et les pages.
Augmentez trop la taille des «morceaux» d'allocation, en réduisant le nombre de morceaux en conséquence, et cela échouera probablement plus tôt car chaque allocation doit être virtuellement contiguë. Par exemple, essayez de trouver sept morceaux de 512 Mo dans un espace d'adressage de 4 Gio et vous échouerez probablement.
Si vous utilisez l'option l (eak) au lieu de d (irty), le programme allouera l'espace virtuel mais ne le référencera jamais. Cela n'entraînera pas de diminution appréciable de la RAM "disponible".
(L'option d (irty) tire son nom du "bit de page sale" dans l'entrée de table de page x86 / x64, qui est définie lorsque la page virtuelle correspondante est accessible avec un opérande de style "modifier", ce qui signifie que le contenu de la page a Ceci est une indication de Windows que, si la page doit être supprimée du jeu de processus, son contenu doit être enregistré quelque part avant que la page puisse être utilisée pour autre chose. Les pages avec le bit "sale" vont à la "liste des pages modifiées" immédiatement après l'expulsion; à partir de là, Windows les écrit dans leurs magasins de sauvegarde respectifs.)
Vous aurez besoin d'avoir suffisamment de "commit" disponible pour que ces tests fonctionnent comme décrit ci-dessus (même pour l'option l (eak), même si cette option n'utilise pas une quantité appréciable de RAM). Plus précisément, votre «limite de validation» doit être d'au moins 2 Gio (ou quelle que soit la quantité que vous allouez) supérieure à la «charge de validation» avant de commencer votre test. Notez que cela s'applique même si vous utilisez l'option l (eak), pas seulement d (irty). Si vous rencontrez cette limite, vous verrez les fenêtres contextuelles «le système manque de mémoire» ou similaires. Le remède, bien sûr, consiste à ajouter plus de RAM et / ou à augmenter les paramètres de votre fichier d'échange.
la source
Windows peut en fait être configuré pour limiter l'utilisation de la RAM. Je ne sais pas comment ni qui aurait configuré ce paramètre sur votre ordinateur portable, mais vous devriez vérifier:
Cet article contient plus de détails, mais il est facile d'accéder à la boîte de dialogue ci-dessus:
Cliquez sur l'icône Démarrer et tapez
msconfig.exe
dans la zone de rechercheLancez msconfig.exe, cliquez sur l'
Boot
onglet, puis cliquez sur leAdvanced Options...
bouton, et vous êtes dans:Entrez une valeur raisonnable, par exemple 8192 pour 8 Go de RAM, ou décochez
Maximum memory
complètement la case qui devrait permettre à Windows d'utiliser toute la RAM dont vous disposez. J'essaierais certainement les DEUX options.la source
Vous pouvez utiliser SysInternals RAMMap pour voir exactement ce que le PC fait avec votre RAM physique . D'autres outils comme le Gestionnaire des tâches ou l'Explorateur de processus se concentrent principalement sur la mémoire virtuelle et ne sont pas les meilleurs outils pour cette situation.
Dans l'onglet "Utiliser le nombre", vous pouvez constater que de grandes portions ne sont pas utilisées alors que vous n'avez pas ouvert de nombreuses applications.
Cela ne signifie pas que votre PC restera dans cet état. Ouvrez simplement quelques programmes et la mémoire sera utilisée.
la source
Citant un très bon article sur le sujet:
Et d'après mon expérience, c'est absolument vrai, en général. À moins que vous exécutiez plusieurs programmes en même temps et que ces programmes aient des besoins importants en RAM, vous ne verrez pratiquement aucun avantage réel à avoir plus de 4 Go de RAM.
Les gens ne semblent pas se rendre compte que 4 Go, c'est beaucoup de RAM. Faire utiliser Windows plus que cela demande des efforts. Vous devrez ouvrir de nombreuses applications différentes et, dans ces applications, ouvrir des fichiers volumineux. Ajoutez quelques onglets de vidéos YouTube et vous pourriez commencer à voir> 4 Go d'utilisation.
la source
Windows fait des choses intelligentes telles que la mémoire de pagination. Il se pourrait qu'il considère la plupart des tâches que vous effectuez comme inutiles et décide de vider une charge de choses dans le fichier d'échange, ce qui donne l'impression qu'il le fait juste pour éviter d'utiliser toute votre RAM. Vous pouvez tester cette théorie en désactivant la pagination, bien que ce ne soit pas une chose que vous devriez avoir configurée en permanence. Il existe de nombreux tutoriels sur Internet pour ce faire. L'une des choses qu'il fait (même sur mes machines de 24 Go et 64 Go) est de rendre les règles de pagination beaucoup plus strictes lorsqu'il atteint une consommation d'environ 50%, 80% et 90% (ces chiffres sont approximatifs). J'ai remarqué à chacune de ces étapes qu'une charge de trucs était déversée dans le fichier d'échange.
Une chose amusante à faire pourrait être quelque chose comme ceci:
C'est du code C. Obtenez GCC ou un compilateur, faites-vous un exe et regardez votre consommation de mémoire augmenter. Si vous souhaitez consommer plus de 2 Go de mémoire, vous devrez compiler et exécuter en tant que processus 64 bits. Si vous aimez ce genre de choses, cela pourrait être une expérience intéressante, si rien d'autre :)
Edit: Je voulais juste noter que le programme ne mourra pas avec ça. Je l'ai édité à partir d'un code précédent car je ne suis pas sûr qu'un autre code aurait fonctionné (la mémoire serait paginée, ce qui entraînerait l'absence de mémoire, lol). Le nouveau code contient une ligne
int gb = 2; // memory to consume in GB
- changer le 2 ajustera la quantité de mémoire que le programme devrait consommer, vous pouvez donc le configurer pour utiliser autant que vous le souhaitez. Si vous le définissez sur un niveau supérieur à celui de votre système, il se bloquera probablement (non testé, donc à utiliser avec prudence)la source
int gb = 2; // memory to consume in GB
- il suffit de changer le 2.Utilisez-vous un programme 32 bits pour tester la vitesse d'exécution de l'ordinateur? Si c'est le cas, notez que les adresses 32 bits ne peuvent pointer que vers 4 Go de RAM, même si vous avez plus de RAM présente. Vous devrez répéter le test à l'aide d'un programme 64 bits et vérifier sa vitesse avec 4 Go de RAM présents, et à nouveau avec 8 Go de RAM présents, si vous voulez des résultats utiles. En outre, il devra s'agir d'un programme 64 bits qui peut utiliser plus de 4 Go de mémoire pour s'exécuter plus rapidement - pas tous. Pour savoir si un programme est en 32 bits, démarrez le programme et laissez-le fonctionner, puis démarrez le Gestionnaire des tâches de Windows, cliquez sur Processus et faites défiler vers le bas jusqu'à ce que vous trouviez le programme qui vous intéresse. Si le nom du programme dans la colonne Nom de l'image est suivi d'un espace, puis * 32, alors c'est un programme 32 bits.
la source
Obtenez l' explorateur de processus (procexp) de Sysinternals . Il dispose d'un graphique de ressources et peut afficher l'utilisation de la mémoire par processus, bien mieux que la vue du processus de stock.
Vous pouvez regarder l'utilisation physique du RAM par rapport à l'utilisation de l'espace virtuel, pour voir si vous n'utilisez tout simplement pas tout ou si vous semblez avoir besoin de plus mais limitez l'utilisation physique.
La plupart des programmes ordinaires utilisent une taille de jeu de travail différente qui maintiendra la demande faible. Si un programme alloue une tonne de mémoire, il ne l' utilise pas vraiment en même temps ...
Windows déplacera agressivement les pages de votre programme vers une liste où elles sont disponibles, mais si une erreur de page se produit, elle sera retirée de la liste sans avoir à la charger depuis le fichier d'échange. Le mode veille pourrait inclure ces derniers. Différents outils étiquettent différents ensembles de différentes manières.
Vous pouvez essayer de désactiver le fichier d'échange, au moins pour ce test. Cela entraînera une réelle utilisation de la mémoire de données. Bien que procexp soit suffisant pour le voir clairement.
la source