Komputer nie używa więcej niż 4 z 8 GB pamięci RAM…? (Komputer 64-bitowy)

17

Ostatnio, aby zabezpieczyć swój komputer na przyszłość, dodałem oryginalną 4 GB pamięci. Przyniosłem całkowitą pamięć do 8 GB i nie mam zauważalnej zmiany prędkości - nawet gdy powinna. Poszedłem do Menedżera zadań i zobaczyłem, że mój komputer NIE przejdzie użycia ponad 4 GB pamięci, nawet przy otwartych przeglądarkach Chrome i Firefox z 20 kartami.

Po zbadaniu wszystko, co wszyscy zasugerowali, to sprawdzić, ile pamięci można wykorzystać. Co dziwne, mówi, że mam 8 GB pamięci i można użyć 7,74 GB.

Dane techniczne mojego HP Pavilion g7-1075dx można znaleźć tutaj. Jest to notebook z systemem Windows 7 Home Premium 64-bitowym z AMD Phenom II.

Moje główne pytanie brzmi: w moim 64-bitowym komputerze, dlaczego mój komputer nie używa więcej niż 4 GB pamięci, nawet jeśli można użyć więcej niż 7?

EDYCJA: jeśli to pomaga, Monitor zasobów opisuje całą pozostałą pamięć RAM jako „Czuwanie”

mattycfp
źródło
1
Jak widzisz, że nie używa więcej niż 4 GB? Próbowałeś już moich innych programów do testowania lub używania pamięci? Chrome i Firefox nie są tak wymagające pod względem pamięci ...
Mokubai
9
Jak dotąd nikt nie wspominał, że więcej pamięci RAM nie czyni komputera samym w sobie szybszym. Widoczny zauważalny skok prędkości jest jedyny, gdy obciążenie zużywa tak dużo pamięci RAM, że system Windows musi stale przesyłać strony do dysku - w tym przypadku dodanie większej ilości pamięci RAM może zdecydowanie przyspieszyć. Ale 98% ludzi nie robi rzeczy, które wymagają> 4 GB pamięci RAM, w związku z czym nigdy nie doświadczy żadnych wymiernych korzyści z posiadania dodatkowej pamięci RAM.
misha256
1
@mattycfp Znam jeszcze jedną możliwość, która może ograniczyć użycie pamięci RAM systemu Windows. Czy to możliwe, że Ty, ktoś inny lub jakieś oprogramowanie OGRANICZA użycie pamięci RAM?
Przeczytaj
1
Firefox ma limit 2 GB na wszystkie karty / procesy, chrom też może. Jest to dodatek do normalnego limitu na proces.
JamesRyan
6
Otwarcie przeglądarki Firefox i Chrome z 20 kartami to zdecydowanie za mało. Mam Firefoksa z 157 kartami, nie zużywa nawet 1 GB pamięci RAM. Sprawdź podczas uruchamiania gier. Odpowiedź Jamie Hanrahan jest bardzo dobra i szczegółowa. Więcej informacji można znaleźć na blogu Marka Russinovicha Przekraczanie granic systemu Windows. link .
sbecker

Odpowiedzi:

27

jeśli to pomoże, Monitor zasobów opisuje całą pozostałą pamięć RAM jako „Czuwanie”

Używana jest pamięć „Standby” RAM . Jest używany jako pamięć podręczna stron (przechowuje strony ostatnio utracone ze wszystkich zestawów roboczych procesu, tj. Błędy stron można rozwiązać bez przechodzenia na dysk), a także do proaktywnego buforowania plików przez SuperFetch.

Jest uważany za „dostępny”, ponieważ strony trybu gotowości nie muszą być zapisywane na dysku, zanim można je przypisać do innego użytku. Na przykład, gdy proces napotka błąd strony, który wymaga odczytu z dysku, nowe fizyczne strony muszą zostać przypisane do tego procesu, a jeśli to konieczne, można je pobrać z listy rezerwowej. (To nie jest pierwszy wybór do znalezienia stron do tego celu, to byłaby darmowa, a następnie lista zerowych stron).

Innymi słowy twój system działa tak, jak powinien.

Możesz zmusić swój system do łatwego wprowadzenia większej ilości pamięci RAM do stanu „w użyciu” za pomocą narzędzia wiersza polecenia testlimit, jednego z narzędzi używanych w eksperymentach w Windows Wewnętrznych . Nie jest częścią zwykłych narzędzi sysinternals, ale jest z nimi związana; znajdź go tutaj na stronie sysinternals. Pobrany plik zip zawiera dwie wersje: testlimit.exe i testlimit64.exe. Oba są połączone z funkcją rozpoznawania dużych adresów, więc wersja 32-bitowa będzie mogła przydzielić do 3 GiB na 32-bitowym komputerze uruchomionym z / 3GB, do 4 GiB na 64-bitowym komputerze.

c:\> testlimit -? daje pomoc.

c:\> testlimit -d 4 -c 512spróbuje przydzielić 2 GiB wirtualnej przestrzeni adresowej procesowej w 512 przydziałach po 4 MiB każdy. Powinno to działać dobrze na komputerze 64-bitowym. Na 32-bitowej maszynie, która nie została uruchomiona z / 3GB (większość nie jest), może nieco wcześniej popełnić błąd, ponieważ proces ten zawiera już kilka plików MiB (takich jak sam program, wszystkie biblioteki DLL itp.), Więc program nie może w pełni przydzielić 2 GiB do przydzielenia.

W obu przypadkach nastąpi zmniejszenie ilości „dostępnej” pamięci RAM i zwiększenie ilości „używanej” pamięci RAM, ale niekoniecznie wartość 2 GiB, ponieważ nie ma gwarancji, że system operacyjny pozostawi wszystkie 2 GiB w prywatnym zestawie roboczym procesu. Nawet jeśli tak się stanie w krótkim okresie, zestaw roboczy procesu może później ulec zmniejszeniu, gdy system operacyjny zdecyduje „hm, tak naprawdę nic z tym nie robisz, inne procesy potrzebują go bardziej” i stronicuje.

Zbyt duże zwiększenie „fragmentów” alokacji, odpowiednio zmniejszając liczbę porcji, i prawdopodobnie zakończy się to niepowodzeniem wcześniej, ponieważ każdy przydział musi być praktycznie ciągły. np. spróbuj znaleźć siedem fragmentów 512 MiB w przestrzeni adresowej 4 GiB, a prawdopodobnie się nie uda.

Jeśli użyjesz opcji l (eak) zamiast d (irty), program przydzieli przestrzeń wirtualną, ale nigdy do niej nie odniesie. Nie spowoduje to znacznego zmniejszenia „dostępnej” pamięci RAM.

(Opcja d (irty) bierze swoją nazwę od „brudnego bitu strony” we wpisie tablicy strony x86 / x64, który jest ustawiany, gdy dostęp do odpowiedniej strony wirtualnej uzyskuje się za pomocą argumentu typu „modyfikuj”, co oznacza, że ​​zawartość strony ma zostało to wskazane przez system Windows, że jeśli strona musi zostać usunięta z zestawu roboczego procesu, jej zawartość musi zostać gdzieś zapisana, zanim strona będzie mogła zostać użyta do czegoś innego. Strony z „brudnym” zestawem bitów przejdź do „zmodyfikowana lista stron” natychmiast po eksmisji; stamtąd Windows zapisuje je w swoich odpowiednich sklepach).

Będziesz musiał mieć dostępną wystarczającą liczbę „zatwierdzeń”, aby testy te działały zgodnie z powyższym opisem (nawet dla opcji l (eak), nawet jeśli ta opcja nie używa znacznej ilości pamięci RAM). W szczególności „limit zatwierdzeń” powinien wynosić co najmniej 2 GiB (lub tyle, ile przeznaczasz) przed rozpoczęciem testu. Zauważ, że dotyczy to nawet jeśli korzystasz z opcji l (eak), a nie tylko d (irty). Jeśli napotkasz ten limit, zobaczysz wyskakujące okienka „w systemie zaczyna brakować pamięci” lub podobne. Lekarstwem jest oczywiście dodanie większej ilości pamięci RAM i / lub zwiększenie ustawień pliku strony.

Jamie Hanrahan
źródło
15

System Windows można tak skonfigurować, aby ograniczyć użycie pamięci RAM. Nie wiem, jak i kto skonfigurowałby to ustawienie na twoim laptopie, ale powinieneś sprawdzić:

Ustawienie Max Ram

Ten artykuł zawiera więcej szczegółów, ale przejście do powyższego okna dialogowego jest łatwe:

  1. Kliknij ikonę Start i wpisz msconfig.exew polu wyszukiwania

    jak uruchomić msconfig

  2. Uruchom msconfig.exe, kliknij Bootkartę, a następnie kliknij Advanced Options...przycisk i jesteś w:

    okno dialogowe ustawień uruchamiania msconfig

  3. Wprowadź rozsądną wartość, np. 8192 dla 8 GB pamięci RAM, lubMaximum memory całkowicie odznacz pole wyboru, które powinno sprawić, że system Windows wykorzysta całą posiadaną pamięć RAM. Zdecydowanie wypróbowałbym OBA opcje.

    maksymalne ustawienie suwaka

misha256
źródło
@ misha256 - Głęboko zdezorientowany odpowiedzią, która początkowo miała bardzo mało treści, i tak, jeśli ktoś inny podałby jedną z odpowiedzi, nie pomyślałbym nawet dwa razy o odpowiedziach (chyba że oceniłbym ich przydatność nieco ostrzej).
Ramhound,
@ misha256, jeśli to był problem, OP nie widziałby około 4 GB w użyciu i około 4 GB gotowości. Pamięć RAM wykluczona przez tę opcję nie pojawia się w trybie gotowości; OP również nie widziałby „8 GB pamięci i można użyć 7,74 GB”. (Oczekuje się, że 256 MB nie nadaje się do użytku z powodu np. karty graficznej).
Jamie Hanrahan,
10

Możesz użyć SysInternals RAMMap, aby zobaczyć dokładnie, co komputer robi z fizyczną pamięcią RAM. Inne narzędzia, takie jak Menedżer zadań lub Eksplorator procesów, koncentrują się głównie na pamięci wirtualnej i nie są najlepszymi narzędziami w tej sytuacji.

Na karcie „Licznik użycia” możesz zobaczyć, że duże porcje są nieużywane, mimo że nie otworzyłeś wielu aplikacji.

SysInternals RAMMap

Nie oznacza to, że komputer pozostanie w tym stanie. Wystarczy otworzyć kilka programów, a pamięć się przyzwyczai.

Thomas Weller
źródło
Termin „wirtualna pamięć RAM” nie powinien być używany. Nie powiedziałbym też, że te inne narzędzia koncentrują się głównie na pamięci wirtualnej - mają wiele dostępnych liczników, które pokazują użycie pamięci fizycznej.
Jamie Hanrahan,
5

Cytując bardzo dobry artykuł na ten temat:

Więcej pamięci tak naprawdę nie zwiększa szybkości przetwarzania [komputera]. Może to zrobić tylko szybszy procesor.

Z mojego doświadczenia wynika, że ​​jest to absolutnie prawda. O ile nie uruchamiasz wielu programów jednocześnie, a programy te mają znaczące wymagania dotyczące pamięci RAM, nie zobaczysz żadnych rzeczywistych korzyści z posiadania więcej niż 4 GB pamięci RAM.

Wydaje się, że ludzie nie zdają sobie sprawy, że 4 GB to naprawdę dużo pamięci RAM. Zwiększenie wykorzystania systemu Windows wymaga więcej wysiłku. Będziesz musiał otworzyć wiele różnych aplikacji i, w tych aplikacjach, otworzyć duże pliki. Dodaj kilka zakładek filmów z YouTube, a możesz zacząć widzieć wykorzystanie> 4 GB.

misha256
źródło
2
@mattycfp Właśnie otworzyłem 16 Windows na moim komputerze o pojemności 4 GB, w tym Internet Explorer, Firefox, Word, Excel, Outlook, Skype, Visual Studio 2010 (znany RAM RAM), Photoshop, Media Player, VLC, MPC-HC, plus inne losowe aplikacje, a ja przełączam się między nimi, robiąc różne rzeczy, ładując dokumenty, odtwarzając filmy, wszystko, a moje rzeczywiste użycie pamięci RAM wynosi 2,2 GB, a maszyna jest SZYBKA jak zawsze. Zobacz, 4 GB robi wszystko tak łatwo ;-)
misha256
3
@mattycfp 120 Windows FF? Jest to bardziej prawdopodobne, że maksymalnie wykorzystasz procesor niż pamięć RAM, szczególnie na laptopie. Nie zapominaj również, że FF jest aplikacją 32-bitową, a wiele okien FF faktycznie dzieli jeden 32-bitowy proces, więc FF jest w rzeczywistości dość ograniczony, może zużywać tylko 2 GB z 8 GB całości. Dlatego musisz uruchomić wiele różnych aplikacji w tym samym czasie, aby przetestować, w jaki sposób Windows wykorzystuje pamięć RAM, a nie tylko 120 Windows FF.
misha256
4
@ misha256 można będzie zobaczyć wzrost wydajności, jeśli system jest stale wymieniając pamięć. Wraz ze wzrostem ciśnienia pamięci rośnie stronicowanie, a system zwalnia. To nie tak, że dodanie pamięci będzie można jechać szybciej, ale to będzie trzymać cię od spowolnienia, zwłaszcza jeśli oprogramowanie zaangażowany zakłada pewną ilość stronicowania w swoich wymaganiach systemowych. Ten artykuł nie wspominał wiele o stronicowaniu. Przywoływanie jest tym, co spowalnia.
phyrfox,
4
@ misha256 Mam IRC, Spotify, Notepad ++, Chrome i Task Manager otwarte i używam 3,02 GB z moich wszystkich 4 GB :( Otwieram 3 instancje VS2013 (które zwykle robię w pracy) i to mnie maksymalizuje. nieco łatwiej jest osiągnąć limit 4 GB, niż mogłoby się
wydawać
1
@ misha256 Poprawka: FF rozpoznaje duże adresy i może adresować do 3 GB w procesie 32-bitowym. 64-bitowa wersja FF (obecnie w wersji beta dla Windows) może oczywiście rozwiązać znacznie więcej. Uważam również, że generalizujesz trochę za dużo, mówiąc, że trudno jest „używać” (prywatny zestaw roboczy rezydenta) więcej niż 4 GB pamięci RAM; to naprawdę zależy bardzo od tego, co robisz i od tego, jak długo jesteś otwarty. Moje podstawowe użycie już to przekracza.
Bob
5

Windows robi sprytne rzeczy, takie jak pamięć stronicowania. Może być tak, że widzi większość zadań, które wykonujesz, jako niepotrzebne i decyduje się na zrzucenie dużej ilości rzeczy do pliku strony, dzięki czemu wygląda na to, że robi to po prostu, aby uniknąć zużycia całej pamięci RAM. Możesz przetestować tę teorię, wyłączając stronicowanie, chociaż nie należy tego na stałe konfigurować. W tym celu istnieje wiele samouczków. Jedną z rzeczy, które robi (nawet na moich urządzeniach 24 GB i 64 GB), jest zaostrzenie reguł stronicowania, gdy osiągnie około 50%, 80% i 90% zużycia (te liczby są przybliżone). Zauważyłem na każdym z tych etapów, że zawartość pliku jest zrzucana do pliku strony.

Zabawną rzeczą może być coś takiego:

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

To trochę kodu C. Pobierz GCC lub jakiś kompilator, stań się exe i obserwuj, jak zwiększa się zużycie pamięci. Jeśli chcesz zużyć więcej niż 2 GB pamięci, musisz skompilować i uruchomić jako proces 64-bitowy. Jeśli lubisz takie rzeczy, może to być ciekawy eksperyment, jeśli nic więcej :)

Edycja: Chciałem tylko zauważyć, że program nie umrze przy tym. Edytowałem go z wcześniejszego kodu, ponieważ nie jestem pewien, czy zadziałałby inny kod (pamięć byłaby stronicowana, w wyniku czego pamięć nie byłaby zużywana, lol). Nowy kod zawiera wiersz int gb = 2; // memory to consume in GB- zmiana 2 dostosuje ilość pamięci, którą program powinien zużyć, dzięki czemu możesz ustawić, aby zużywał tyle, ile chcesz. Ustawienie go na wartość wyższą niż w systemie prawdopodobnie spowoduje awarię (nie przetestowano, więc używaj go ostrożnie)

XtrmJosh
źródło
Chciałbym móc go skompilować, ale mój Internet wciąż
psuje
5
@mattycfp Więc nie możesz użyć> 4 GB pamięci RAM w systemie operacyjnym, a wszystkie pobierane pliki nadal psują? Czas, aby (a) WYTRZYMAĆ dysk twardy i wykonać nową instalację systemu operacyjnego, lub (b) wrzucić laptopa do kosza i zdobyć już właściwy.
misha256
1
Oferowany program przydziela i „dotyka” 2 GB pamięci wirtualnej, po jednej stronie na raz, co spowoduje uszkodzenie każdej strony w pamięci RAM natychmiast po jej przydzieleniu. Ale to nie gwarantuje, że Windows zachowa to wszystko w pamięci RAM jednocześnie. Ponieważ program nie uzyskuje wielokrotnego dostępu do wszystkich maszyn wirtualnych, strony przydzielone jako pierwsze mogą podlegać stronicowaniu. Możesz uzyskać taki sam efekt jak ten program dzięki narzędziu Windows Windows „testlimit”, opcja -d.
Jamie Hanrahan,
@mattycfp, jeśli tak jest, możesz chcieć zobaczyć, że pamięć RAM nie jest winna ... Czy każdy pobrany plik jest w jakiś sposób uszkodzony? Czasami występują również problemy z niekompatybilnymi kartami, więc powinieneś sprawdzić instrukcję płyty głównej i potwierdzić, że pamięć RAM jest zorganizowana zgodnie z tymi instrukcjami (gniazda będą ponumerowane 1 i 2 lub 1–4, a zwykle 1 i 3 muszą być sparowane z ten sam „typ” lub „marka i model” pamięci RAM, podobnie jak 2 i 4). I tak, ten program powinien zużywać 2 GB, które można edytować, zmieniając wiersz int gb = 2; // memory to consume in GB- wystarczy zmienić 2.
XtrmJosh
Dlaczego zadeklarowałeś, że gb jest typu int, gdy jedyne użycie rzuca go na unsigned long? Również traktujesz mnie w ten sam sposób i robisz mieszane porównanie int i cast-to bez znaku. Więc po prostu spraw, żebym również podpisał długo.
JDługosz
1

Czy używasz 32-bitowego programu do testowania szybkości działania komputera? Jeśli tak, pamiętaj, że adresy 32-bitowe mogą wskazywać tylko 4 GB pamięci RAM, nawet jeśli masz więcej pamięci RAM. Musisz powtórzyć test przy użyciu 64-bitowego programu i sprawdzić jego szybkość przy 4 GB pamięci RAM i ponownie przy 8 GB pamięci RAM, jeśli chcesz uzyskać przydatne wyniki. Będzie też musiał być programem 64-bitowym, który może zużywać więcej niż 4 GB pamięci, aby działać szybciej - nie wszystkie z nich mogą. Aby stwierdzić, czy program ma 32 bity, uruchom program i pozostaw go uruchomionym, a następnie uruchom Menedżera zadań Windows, kliknij Procesy i przewiń w dół, aż znajdziesz program, który Cię interesuje. Jeśli po nazwie programu w kolumnie Nazwa obrazu znajduje się spacja, to * 32, to jest to program 32-bitowy.

milesrf
źródło
jeśli uruchomisz kilka programów 32-bitowych, ich całkowite użycie pamięci RAM może łatwo osiągnąć 8 GB.
Jamie Hanrahan
0

Uzyskaj eksploratora procesów (procexp) od Sysinternals . Ma wykres zasobów i może pokazywać użycie pamięci na proces, znacznie lepiej niż widok procesu podstawowego.

Możesz spojrzeć na użycie fizycznych pamięci RAM w porównaniu z użyciem wirtualnego pliku SPQCE, aby zobaczyć, czy po prostu nie używasz tego wszystkiego, czy wydaje się, że potrzebujesz więcej, ale ograniczasz użycie fizyczne.

Większość przyziemnych programów używa innego zestawu roboczego , który utrzyma niski popyt. Jeśli program przydziela tonę pamięci, tak naprawdę nie wykorzystuje całej z nich jednocześnie ...

Windows agresywnie przeniesie strony z twojego programu na listę, na której są one dostępne, ale jeśli wystąpi błąd strony, zostanie wycofany z listy bez konieczności ładowania go z pliku wymiany. Czuwania może być w tym tych. Różne narzędzia opisują różne zestawy na różne sposoby.

Możesz spróbować wyłączyć plik wymiany, przynajmniej dla tego testu. To spowoduje, że pamięć danych będzie naprawdę używana. Chociaż procexp może wystarczyć, aby to wyraźnie zobaczyć.

JDługosz
źródło