web-dev-qa-db-fra.com

L'ordinateur n'utilise pas plus de 4 de mes 8 Go de RAM ...? (Ordinateur 64 bits)

Récemment, pour pérenniser mon ordinateur, j'ai ajouté 4 Go de mémoire d'origine. J'ai ramené la mémoire totale à 8 Go, et je n'ai aucun changement notable dans la vitesse, même quand il le devrait. J'ai consulté le Gestionnaire des tâches pour constater que mon ordinateur n'utiliserait PAS plus de 4 Go de mémoire, même avec Chrome et Firefox ouverts avec 20 onglets chacun.

Après des recherches, tout ce que tout le monde avait suggéré de faire était de vérifier combien de mémoire était utilisable. Curieusement, il est dit que j'ai 8 Go de mémoire, et 7,74 Go est utilisable.

Les spécifications de mon HP Pavilion g7-1075dx sont disponibles ici. Il s’agit d’un PC portable avec Windows 7 Édition Familiale Premium 64 bits avec AMD Phenom II.

Ma question principale est la suivante: 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 vous aide, le moniteur de ressources décrit tous les autres RAM comme "en veille"

17
mattycfp

si cela peut aider, Resource Monitor décrit tous les autres RAM comme "en veille".

"Veille" RAM est utilisé. Il est utilisé en tant que cache de pages (il conserve les pages récemment perdues de tous les ensembles de travail de processus; les erreurs de page de ceux-ci peuvent être résolues sans passer sur le disque) et également pour la mise en cache de fichiers proactive par SuperFetch.

Elle est considérée comme "disponible" car les pages de secours n'ont pas besoin d'être écrites sur le disque avant de pouvoir être affectées à un autre usage. Par exemple, lorsqu'un processus rencontre une erreur de page dont requiert une lecture sur le disque, de nouvelles pages physiques doivent être allouées à ce processus et, si nécessaire, elles peuvent être extraites du disque. Liste d'attente. (Ce n'est pas le premier choix pour trouver des pages à cette fin, ce serait la liste des pages libres puis zéro.)

En d'autres termes, votre système fonctionne comme il se doit.

Vous pouvez forcer votre système à obtenir plus de RAM dans l'état "utilisé" avec l'outil de ligne de commande testlimit, l'un des outils utilisés dans les expériences de Windows Internals . Il ne fait pas partie des outils sysinternals habituels mais leur est associé. trouvez-le ici sur le site sysinternals. Le téléchargement est un fichier Zip contenant deux versions, testlimit.exe et testlimit64.exe. Les deux sont liés par une adresse large, donc la version 32 bits pourra allouer jusqu'à 3 GiB sur un ordinateur 32 bits démarré avec/3GB, jusqu'à 4 GiB sur une machine 64 bits.

c:\> testlimit -? donne de l'aide.

c:\> testlimit -d 4 -c 512 tentera d'allouer 2 GiB 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/3GB (la plupart ne le sont pas), il est possible qu’une erreur se produise un peu plus tôt, car il existe déjà quelques MoB dans le processus (comme le programme lui-même, toutes les DLL, etc.), il n’ya donc pas encore assez de 2 GiB 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 de 2 GiB valeur car il y a Rien ne garantit que le système d'exploitation laissera tous les 2 GiB dans le groupe de travail privé du processus. Même si cela se produit à court terme, vous constaterez peut-être que l'ensemble de processus du processus diminuera plus tard, car le système d'exploitation décide "hm, vous ne faites rien avec cela, les autres processus en ont plus besoin" et le repassent.

Si vous augmentez trop la taille des "morceaux" d'allocation, vous réduisez le nombre de morceaux en conséquence, et cela échouera probablement plus tôt, car chaque allocation doit être pratiquement contiguë. par exemple. essayez de trouver sept morceaux de 512 Mio dans un espace d'adressage de 4 GiB 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 et non n'entraînera aucune 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 des pages x86/x64, qui est définie lorsque l'utilisateur accède à la page virtuelle correspondante avec un opérande de type "modify" , ce qui signifie que le contenu de la page a été modifié. Ceci indique à Windows que, si la page devait être expulsée du jeu de processus, son contenu devait être enregistré quelque part avant que la page ne puisse être utilisée pour autre chose. "sale" jeu de bits va à la "liste de pages modifiées" immédiatement après l'expulsion; à partir de là, Windows les écrit dans leurs magasins respectifs.)

Vous aurez besoin de suffisamment de "commit" pour que ces tests fonctionnent comme décrit ci-dessus (même pour l'option l(eak), même si cette option n'utilise aucune quantité appréciable de RAM). Plus précisément, votre "limite de validation" doit être supérieure d'au moins 2 GiB (ou la somme que vous allouez) à 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 apparaître des fenêtres contextuelles "Le système manque de mémoire" ou similaire. Bien sûr, le remède consiste à ajouter davantage de RAM et/ou à augmenter les paramètres de votre fichier d'échange.

27
Jamie Hanrahan

Windows peut en réalité être configuré pour limiter l'utilisation de RAM. Je ne sais pas comment ni qui aurait configuré ce paramètre sur votre ordinateur portable, mais vous devriez vérifier:

Max Ram Setting

Cet article contient plus de détails, mais accéder à la boîte de dialogue ci-dessus est simple:

  1. Cliquez sur l'icône Démarrer et tapez msconfig.exe dans le champ de recherche.

    how to launch msconfig

  2. Lancez msconfig.exe, cliquez sur l'onglet Boot, puis cliquez sur le bouton Advanced Options... et vous êtes dans:

    msconfig boot settings dialog

  3. Entrez une valeur raisonnable, par exemple 8192 pour 8 Go de RAM, ou décochez complètement la case Maximum memory, ce qui devrait inciter Windows à utiliser tous les RAM dont vous disposez. Je voudrais certainement essayer les deux options.

    maximum ram setting

17
misha256

Vous pouvez utiliser SysInternals RAMMap pour voir exactement ce que le PC fait avec votre physique RAM. D'autres outils tels que Task Manager ou Process Explorer se concentrent principalement sur mémoire virtuelle et ne sont pas les meilleurs outils pour cette situation.

Dans l'onglet "Utiliser le nombre", vous remarquerez peut-être que de grandes portions sont inutilisées alors que vous n'avez pas ouvert beaucoup d'applications.

SysInternals RAMMap

Cela ne signifie pas que votre PC restera dans cet état. Il suffit d'ouvrir quelques programmes et la mémoire va s'habituer.

10
Thomas Weller

Windows fait des choses intelligentes telles que la mémoire de pagination. Il se peut qu’il considère que la plupart des tâches que vous effectuez ne soit pas nécessaire et décide de déposer une charge dans le fichier de page, ce qui lui donne l’impression de le faire pour éviter d’utiliser toute votre mémoire vive. Vous pouvez tester cette théorie en désactivant la pagination, bien que cela ne doive pas être configuré de manière permanente. Il existe de nombreux tutoriels sur Internet pour le faire. L’une des choses qu’elle fait (même sur mes machines de 24 et 64 Go) consiste à rendre les règles de pagination beaucoup plus strictes lorsqu’elles atteignent une consommation d’environ 50%, 80% et 90% (ces chiffres sont approximatifs). J'ai remarqué à chacune de ces étapes qu'un chargement d'éléments est déposé dans le fichier d'échange.

Une chose amusante à faire pourrait être quelque chose comme ceci:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define PAGE_SZ (1<<12)

int main() {
    int i;
    int gb = 2; // memory to consume in GB

    for (i = 0; i < ((unsigned long)gb<<30)/PAGE_SZ ; ++i) {
        void *m = malloc(PAGE_SZ);
        if (!m)
            break;
        memset(m, 0, 1);
    }
    printf("allocated %lu MB\n", ((unsigned long)i*PAGE_SZ)>>20);
    getchar();
    return 0;
}

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 utiliser plus de 2 Go de mémoire, vous devez compiler et exécuter en tant que processus 64 bits. Si vous aimez ce genre de chose, ce pourrait être une expérience intéressante, sinon rien :)

Edit: Je voulais juste noter que le programme ne mourra pas avec cela. 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 pourrez donc le configurer pour utiliser autant que vous le souhaitez. Si vous le réglez sur une valeur supérieure à celle de votre système, cela provoquera probablement un crash (non testé, utilisez-le avec prudence).

5
XtrmJosh

Citant un très bon article sur le sujet:

Plus de mémoire n'augmente pas réellement la vitesse de traitement [d'un ordinateur]. Seul un processeur plus rapide peut le faire.

Et dans 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 exigences significatives RAM, vous ne verrez aucun avantage réel à avoir plus que 4 Go de RAM.

Les gens ne semblent pas se rendre compte que 4 Go est une sacrée quantité de RAM. Faire en sorte que Windows utilise plus que cela prend des efforts. Vous allez devoir ouvrir un grand nombre d'applications différentes et, dans ces applications, ouvrir des fichiers volumineux. Ajoutez quelques onglets de vidéos YouTube et vous commencerez peut-être à voir une utilisation supérieure à 4 Go.

5
misha256

Utilisez-vous un programme 32 bits pour tester la vitesse d'exécution de l'ordinateur? Si tel est le cas, notez que les adresses 32 bits ne peuvent pointer que sur 4 Go de RAM, même si vous avez plus de RAM. Vous devrez répéter le test en utilisant un programme 64 bits et en vérifiant sa vitesse avec 4 Go de RAM présents, et à nouveau avec 8 Go de RAM présents, si vous le souhaitez. résultats. En outre, il devra s'agir d'un programme 64 bits pouvant utiliser plus de 4 Go de mémoire pour fonctionner plus rapidement - tous ne le peuvent pas. Pour savoir si un programme est en 32 bits, démarrez le programme et laissez-le en cours d'exécution, puis lancez le Gestionnaire de tâches Windows, cliquez sur Processus et faites défiler l'écran jusqu'à trouver 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, il s'agit d'un programme 32 bits.

1
milesrf

Obtenez le processus Explorer (procexp) de Sysinternals . Il possède un graphique de ressources et peut montrer une utilisation de la mémoire par processus, bien meilleure que la vue du processus stock.

Vous pouvez examiner l’utilisation physique de la RAM par rapport à l’utilisation virtuelle de l’espace virtuel pour voir si vous ne l’utilisez tout simplement pas ou si vous semblez avoir besoin de plus d’aide mais que vous limitez l’utilisation physique.

La plupart des programmes ordinaires utilisent une taille différente de travail qui maintiendra une demande faible. Si un programme alloue une tonne de mémoire, il n'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 devoir la charger à partir du fichier d'échange. Le standby 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, du moins pour ce test. Cela entraînera une réelle utilisation de la mémoire de données. Bien que procexp puisse être suffisant pour voir cela clairement.

0
JDługosz