Il computer non utilizza più di 4 dei miei 8 GB di RAM ...? (Computer a 64 bit)


17

Di recente, per proteggere il mio computer dal futuro, ho aggiunto oltre i miei 4 GB di memoria originali. Ho portato la memoria totale a 8 GB e non ho riscontrato alcun cambiamento evidente nella velocità, anche quando dovrebbe. Sono andato a cercare in Task Manager e ho visto che il mio computer NON avrebbe superato i 4 GB di memoria in uso, anche con Chrome e Firefox aperti con 20 schede ciascuno.

Dopo le ricerche, tutto ciò che tutti avevano suggerito di fare era controllare quanta memoria fosse utilizzabile. Stranamente, dice che ho 8 GB di memoria e 7,74 GB è utilizzabile.

Le specifiche del mio HP Pavilion g7-1075dx sono disponibili qui. È un PC portatile con Windows 7 Home Premium a 64 bit con AMD Phenom II.

La mia domanda principale è: con il mio computer a 64 bit, perché il mio computer non utilizza più di 4 GB di memoria, anche quando sono utilizzabili più di 7?

EDIT: se aiuta, Resource Monitor descrive tutte le altre RAM come "Standby"


1
Come vedi che non sta usando più di 4 GB? Hai provato altri miei programmi per testare o usare la memoria? Chrome e Firefox non sono così esigenti per quanto riguarda la memoria ...
Mokubai

9
Finora nessuno ha menzionato che più RAM non rende un computer più veloce di per sé. L'unica volta che vedrai un notevole aumento di velocità è se il tuo carico di lavoro consuma così tanta RAM che Windows ha bisogno di passare continuamente alla pagina su disco - in questo caso l'aggiunta di più RAM può sicuramente velocizzare le cose. Ma il 98% delle persone non fa il tipo di cose che richiedono> 4 GB di RAM e, di conseguenza, non sperimenterà mai alcun beneficio tangibile nell'avere tutta quella RAM in più.
misha256,

1
@mattycfp C'è un'altra possibilità che conosco che può limitare l'utilizzo della RAM di Windows. È possibile che tu, qualcun altro o qualche software imposti un LIMIT sull'utilizzo della RAM?
Dai

1
Firefox ha un limite di 2 GB per tutte le schede / i processi, anche Chrome potrebbe esserlo. Ciò si aggiunge al limite normale per processo.
JamesRyan,

6
Avere Firefox e Chrome aperti con 20 schede ciascuno non è assolutamente sufficiente. Ho Firefox aperto con 157 schede che non consumano nemmeno 1 GB di RAM. Controlla mentre giochi. La risposta di Jamie Hanrahan è molto buona e dettagliata. Per ulteriori informazioni leggi il post sul blog di Mark Russinovich Oltre i limiti di Windows. link .
sbecker

Risposte:


27

se aiuta, Resource Monitor descrive tutte le altre RAM come "Standby"

La RAM "Standby" è in uso. Viene utilizzato come cache di pagina (contiene pagine perse di recente da tutti i gruppi di lavoro di processo; ad esempio, i guasti di pagina a questi possono essere risolti senza andare su disco) e anche per la cache di file proattiva da SuperFetch.

È considerato "disponibile" perché le pagine di standby non devono essere scritte su disco prima di poter essere assegnate ad altri usi. Come quando un processo colpisce un errore di pagina che non richiede la lettura dal disco, nuova pagina fisica (s) devono essere allocate a tale processo, e, se necessario, questi possono essere presi dalla lista di attesa. (Questa non è la prima scelta per trovare pagine a questo scopo, sarebbe quella gratuita e quindi l'elenco delle pagine zero.)

In altre parole, il sistema funziona come dovrebbe essere.

Puoi forzare il tuo sistema a ottenere più RAM nello stato "in uso" facilmente con lo strumento da riga di comando testlimit, uno degli strumenti utilizzati negli esperimenti in Windows Internals . Non fa parte dei normali strumenti di sistema ma è associato ad essi; lo trovi qui sul sito sysinternals. Il download è un file zip che contiene due versioni, testlimit.exe e testlimit64.exe. Entrambi sono collegati in grado di riconoscere indirizzi di grandi dimensioni, quindi la versione a 32 bit sarà in grado di allocare fino a 3 GiB su una macchina a 32 bit avviata con / 3GB, fino a 4 GiB su una macchina a 64 bit.

c:\> testlimit -? dà aiuto.

c:\> testlimit -d 4 -c 512tenterà di allocare 2 GiB di spazio degli indirizzi virtuali di processo privato in 512 allocazioni di 4 MiB ciascuna. Questo dovrebbe funzionare bene su una macchina a 64 bit. Su una macchina a 32 bit non avviata con / 3GB (la maggior parte non lo è) potrebbe esserci un errore un po 'prima b / c ci sono già alcuni MiB di roba nel processo (come il programma stesso, tutte le DLL, ecc.), Quindi non sono disponibili 2 GiB completi da assegnare al programma.

In entrambi i casi ci sarà una riduzione della RAM "disponibile" e un aumento della RAM "in uso", ma non necessariamente di 2 GiB perché non vi è alcuna garanzia che il sistema operativo lascerà tutti i 2 GiB nel set di lavoro privato del processo. Anche se lo fa a breve termine, potresti vedere che il processo di lavoro diminuisce in seguito quando il sistema operativo decide "hm, non stai davvero facendo nulla con esso, altri processi ne hanno più bisogno" e lo espone.

Aumentare troppo le dimensioni dei "blocchi" di allocazione, riducendo il numero di blocchi di conseguenza e probabilmente fallirà prima poiché ogni allocazione deve essere praticamente contigua. ad esempio, prova a trovare sette blocchi da 512 MiB in uno spazio di indirizzi di 4 GiB e probabilmente fallirai.

Se si utilizza l'opzione l (eak) invece di d (irty), il programma alloca lo spazio virtuale ma non lo farà mai riferimento. Ciò non comporterà alcuna sensibile riduzione della RAM "disponibile".

(L'opzione d (irty) prende il nome dal "bit della pagina sporca" nella voce della tabella delle pagine x86 / x64, che viene impostata quando si accede alla pagina virtuale corrispondente con un operando in stile "modifica", il che significa che il contenuto della pagina ha è stato modificato. Questa è l'indicazione di Windows che, nel caso in cui la pagina debba essere sfrattata dal set di processi, il suo contenuto deve essere salvato da qualche parte prima che la pagina possa essere utilizzata per qualcos'altro. Le pagine con il bit "sporco" impostato vanno a l '"elenco di pagine modificate" immediatamente dopo lo sfratto, da lì Windows le scrive nei rispettivi archivi di supporto.)

Sarà necessario disporre di un "commit" sufficiente affinché questi test funzionino come descritto sopra (anche per l'opzione l (eak), anche se questa opzione non utilizza una quantità apprezzabile di RAM). In particolare, il tuo "limite di commit" dovrebbe essere almeno 2 GiB (o comunque quanto stai allocando) più alto del "costo di commit" prima di iniziare il test. Nota che questo vale anche se stai usando l'opzione l (eak), non solo d (irty). Se ti imbatti in questo limite vedrai i pop-up "il sistema sta esaurendo la memoria" o simili. La cura, ovviamente, è quella di aggiungere più RAM e / o aumentare le impostazioni del file di paging.


16

Windows può effettivamente essere configurato per limitare l'utilizzo della RAM. Non so come o chi avrebbe configurato questa impostazione sul tuo laptop, ma dovresti controllare:

Impostazione Ram max

Questo articolo ha maggiori dettagli, ma arrivare alla finestra di dialogo sopra è facile:

  1. Fai clic sull'icona Start e digita msconfig.exenella casella di ricerca

    come avviare msconfig

  2. Avvia msconfig.exe, fai clic sulla Bootscheda, quindi fai clic sul Advanced Options...pulsante e sei in:

    Finestra di dialogo delle impostazioni di avvio di msconfig

  3. Immettere un valore ragionevole, ad esempio 8192 per 8 GB di RAM, oppure deselezionare la Maximum memorycasella di controllo che dovrebbe consentire a Windows di utilizzare tutta la RAM disponibile. Proverei sicuramente ENTRAMBI le opzioni.

    impostazione massima del ram


@ misha256 - Profondamente confuso da una risposta che inizialmente aveva pochissimi contenuti, e sì, se qualcun altro avesse inviato una delle risposte non avrei nemmeno pensato due volte alle risposte (tranne forse giudicare la loro disponibilità leggermente più dura).
Ramhound,

@ misha256 se questo fosse il problema, OP non vedrebbe circa 4 GB in uso e circa un altro standby di 4 GB. La RAM esclusa da tale opzione non viene visualizzata in "standby"; OP non vedrebbe "8 GB di memoria e 7,74 GB utilizzabili". (sono previsti 256 MB non "utilizzabili" a causa, ad esempio, della scheda video).
Jamie Hanrahan,

10

Puoi usare SysInternals RAMMap per vedere esattamente cosa fa il PC con la tua RAM fisica . Altri strumenti come Task Manager o Process Explorer si concentrano principalmente sulla memoria virtuale e non sono gli strumenti migliori per questa situazione.

Nella scheda "Usa conteggio", potresti vedere che porzioni grandi non sono utilizzate mentre non hai aperto molte applicazioni.

SysInternals RAMMap

Ciò non significa che il tuo PC rimarrà mai in questo stato. Basta aprire alcuni programmi e la memoria verrà utilizzata.


Il termine "RAM virtuale" non deve essere utilizzato. Inoltre, non direi che quegli altri strumenti si concentrano principalmente sulla memoria virtuale: hanno molti contatori disponibili che mostrano l'utilizzo della memoria fisica.
Jamie Hanrahan,

5

Citando un ottimo articolo sull'argomento:

Più memoria non aumenta effettivamente la velocità di elaborazione di un computer. Solo una CPU più veloce può farlo.

E nella mia esperienza è assolutamente vero, in generale. A meno che tu non stia eseguendo molti programmi contemporaneamente e quei programmi abbiano requisiti di RAM significativi, difficilmente vedrai alcun vantaggio reale avere più di 4 GB di RAM.

Le persone non sembrano rendersi conto che 4 GB sono un sacco di RAM. Fare in modo che Windows usi più di questo richiede uno sforzo. Dovrai aprire molte app diverse e, in quelle app, aprire alcuni file di grandi dimensioni. Inserisci alcune schede dei video di YouTube e potresti iniziare a vedere> 4 GB di utilizzo.


2
@mattycfp Ho appena aperto 16 Windows sul mio computer da 4 GB, tra cui Internet Explorer, Firefox, Word, Excel, Outlook, Skype, Visual Studio 2010 (un noto maiale RAM), Photoshop, Media Player, VLC, MPC-HC, più alcune altre app casuali, e sto passando da una all'altra facendo cose, caricando documenti, riproducendo video, tutto e il mio effettivo utilizzo della RAM è di 2,2 GB E la macchina è VELOCE come non mai. Vedi, 4 GB fa tutto così facile ;-)
misha256

3
@mattycfp 120 Windows of FF? È più probabile che tu riesca a massimizzare la tua CPU rispetto alla RAM, specialmente su un laptop. Inoltre, non dimenticare che FF è un'app a 32 bit e più finestre FF in realtà CONDIVIDONO un singolo processo a 32 bit, quindi FF è in realtà abbastanza limitato, può usare solo 2 GB del totale di 8 GB. Ecco perché è necessario eseguire molte app diverse allo stesso tempo per testare come Windows utilizza la RAM, non solo 120 Windows di FF.
misha256,

4
@ misha256 Si sarà vedere i guadagni di prestazioni se il sistema è costante scambio di memoria. All'aumentare della pressione della memoria, il paging aumenta e il sistema rallenta. Non è che l'aggiunta di memoria ti farà andare più veloce, ma ti impedirà di rallentare, specialmente se il software in questione assume una certa quantità di paging nei suoi requisiti di sistema. Quell'articolo non sembrava menzionare molto il paging. Il paging è ciò che ti rallenta.
phyrfox

4
@ misha256 Ho IRC, Spotify, Notepad ++, Chrome e Task Manager aperti e sto usando 3,02 GB sul mio totale di 4 GB :( Aprendo 3 istanze VS2013 (che tendo a fare al lavoro) e questo mi massimizza. un po 'più facile raggiungere il limite di 4 GB di quanto si pensi, ma praticamente richiede un utente
esperto

1
@ misha256 Correzione: FF è a conoscenza dell'indirizzo di grandi dimensioni e può indirizzare fino a 3 GB in un processo a 32 bit. La versione a 64 bit di FF (attualmente in beta per Windows) può ovviamente indirizzare molto di più. Sento anche che stai generalizzando un po 'troppo quando dici che è difficile "usare" (set di lavoro privato residente) più di 4 GB di RAM; dipende molto da quello che stai facendo e da quanto tieni aperto. Il mio utilizzo di base supera già quello.
Bob

5

Windows fa alcune cose intelligenti come la memoria di paging. Potrebbe essere che vede la maggior parte delle attività che stai svolgendo come inutili e decide di scaricare un carico di roba nel file di paging, facendo sembrare che lo stia facendo solo per evitare di utilizzare tutta la RAM. Potresti testare questa teoria disabilitando il paging, anche se non è una cosa che dovresti aver configurato in modo permanente. Ci sono molti tutorial su Internet per farlo. Una delle cose che fa (anche sulle mie macchine da 24 GB e 64 GB) è quella di rendere le regole di paginazione molto più rigorose quando raggiunge circa il 50%, l'80% e il 90% di consumo (queste cifre sono approssimative). Ho notato in ognuna di queste fasi un carico di cose che viene scaricato nel file di paging.

Una cosa divertente da fare potrebbe essere qualcosa del genere:

#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;
}

Questo è un po 'di codice C. Ottieni GCC o qualche compilatore, renditi un exe e osserva aumentare il consumo di memoria. Se desideri consumare più di 2 GB di memoria, dovrai compilare ed eseguire un processo a 64 bit. Se ti piacciono cose del genere, potrebbe essere un esperimento interessante, se non altro :)

Modifica: volevo solo notare che il programma non morirà con questo. L'ho modificato da un codice precedente poiché non sono sicuro che l'altro codice avrebbe funzionato (la memoria sarebbe stata paginata, senza che si consumasse memoria, lol). Il nuovo codice contiene una riga int gb = 2; // memory to consume in GB: cambiando il 2 si adatterà la quantità di memoria che il programma dovrebbe consumare, quindi è possibile impostarlo per utilizzare tutto ciò che si desidera. Impostarlo su qualcosa al di sopra di quello che ha il tuo sistema probabilmente causerà un arresto anomalo (non testato, quindi usalo con cautela)


Vorrei poterlo compilare, ma la mia Internet continua a corrompere ogni download che provo: U
mattycfp

5
@mattycfp Quindi non è possibile utilizzare> 4 GB di RAM nel sistema operativo e tutti i download continuano a corrompersi? È ora di (a) WIPE il disco rigido e fare una nuova installazione del sistema operativo, oppure (b) gettare il laptop nel cestino e procurarsene già uno appropriato.
misha256,

1
Il programma offerto alloca e "tocca" 2 GB di memoria virtuale, una pagina alla volta, il che comporterà un errore nella RAM di ogni pagina immediatamente dopo la sua allocazione. Ma ciò non garantisce che Windows manterrà tutto nella RAM contemporaneamente. Poiché il programma non accede ripetutamente a tutte le VM, le pagine allocate per prime potrebbero essere soggette a paging. Puoi ottenere lo stesso effetto di quel programma con lo strumento Windows Testals "testlimit", opzione -d.
Jamie Hanrahan,

@mattycfp, in tal caso, potresti voler vedere che la RAM non è in errore ... Ogni file scaricato viene danneggiato in qualche modo? A volte ci sono anche problemi con stick incompatibili, quindi dovresti controllare il manuale della scheda madre e confermare che la tua RAM è organizzata secondo quelle istruzioni (gli slot saranno numerati 1 & 2 o 1-4, e di solito 1 & 3 devono essere accoppiati con stesso "tipo" o "marca e modello" di RAM, come faranno 2 e 4). & Sì, questo programma dovrebbe usare fino a 2 GB, che possono essere modificati cambiando la linea int gb = 2; // memory to consume in GB- basta cambiare il 2.
XtrmJosh

Perché hai dichiarato che gb è di tipo int quando il solo uso lo lancia a unsigned long? Stai anche trattando allo stesso modo e facendo un confronto misto tra int e cast-to unsigned. Quindi, anche solo per farti firmare a lungo.
JDługosz,

1

Stai utilizzando un programma a 32 bit per testare la velocità di esecuzione del computer? In tal caso, tenere presente che gli indirizzi a 32 bit possono puntare solo a 4 GB di RAM, anche se è presente più RAM. Dovrai ripetere il test utilizzando un programma a 64 bit e verificarne la velocità con 4 GB di RAM presenti, e di nuovo con 8 GB di RAM presenti, se desideri risultati utili. Inoltre, dovrà essere un programma a 64 bit che può utilizzare più di 4 GB di memoria per funzionare più velocemente, non tutti possono farlo. Per sapere se un programma è a 32 bit, avvia il programma e lascialo in esecuzione, quindi avvia Task Manager di Windows, fai clic su Processi e scorri verso il basso fino a trovare il programma di interesse. Se il nome del programma nella colonna Nome immagine è seguito da uno spazio, quindi * 32, allora è un programma a 32 bit.


se esegui diversi programmi a 32 bit, il loro utilizzo totale di RAM può facilmente raggiungere 8 GB.
Jamie Hanrahan,

0

Ottieni process explorer (procexp) da Sysinternals . Ha un grafico delle risorse e può mostrare l'uso della memoria per processo, molto meglio della visualizzazione del processo di magazzino.

Puoi vedere l'utilizzo fisico della RAM rispetto all'utilizzo virtuale dello spqce, per vedere se semplicemente non lo stai usando o sembra che tu abbia bisogno di più ma stai limitando l'uso fisico.

La maggior parte dei programmi banali usa una diversa dimensione del set di lavoro che manterrà bassa la domanda. Se un programma alloca una tonnellata di memoria non sta realmente usando tutto allo stesso tempo ...

Windows sposterà in modo aggressivo le pagine dal programma in un elenco in cui sono disponibili, ma se si verifica un errore di pagina, verrà ritirato dall'elenco senza doverlo caricare dal file di scambio. Lo standby potrebbe includere questi. Strumenti diversi identificano insiemi diversi in modi diversi.

Potresti provare a disattivare il file di scambio, almeno per questo test. Ciò farà sì che la memoria dei dati venga realmente utilizzata. Anche se procexp potrebbe essere sufficiente per vederlo chiaramente.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.