Cóż, pierwsza rzecz, zanim przejdę do bardziej szczegółowej odpowiedzi. Na twoim pierwszym zrzucie ekranu, twoja pula Non-Paged Pool (rodzaj użycia pamięci jądra) jest na poziomie 1.3GB. Wydaje mi się to niezwykle wysokie, szczególnie dla zaledwie 30 minut po starcie systemu. Myślę, że mógłbym sobie wyobrazić NP Pool osiągający tak wysoki poziom po dłuższym czasie użytkowania lub z programem, który przeciekał jak sito. Dla kontrastu, mój NP Pool wynosi zwykle między 100 a 200 megabajtów, a mój paged pool może mieć nawet 400 lub 500 (i to po tym, jak mój system działa bez restartu przez tygodnie).
Możesz włączyć kilka dodatkowych kolumn w Menedżerze zadań, klikając prawym przyciskiem myszy nagłówki kolumn i wybierając opcję wybierz kolumny. Powinieneś dodać Working Set (private)
, Working Set (shared)
, Commit
i NP Pool
. Przeskanowałbym wszystkie twoje procesy od wszystkich użytkowników i zobaczyłbym, czy któryś z nich ma NP Pool większy niż około 256KB. Jeśli widzisz jakieś, zwłaszcza takie, które są znacznie wyższe, może to być źródłem problemu, lub przynajmniej jego częścią.
Twój całkowity zestaw roboczy, ilość pamięci fizycznej używanej przez proces, jest kombinacją prywatnego i współdzielonego zestawu roboczego (WS). Prywatny jest zazwyczaj większy dla większości procesów, jednak mogą być takie, które używają większej ilości współdzielonego WS. Te dwie wartości powinny być sumą całkowitego WS. Zaangażowanie jest ilością twojego zestawu roboczego, który został zaangażowany do magazynu kopii zapasowych (w większości przypadków, plik strony Windows). Aplikacje działające w tle często będą miały większy Commit niż WS, wskazując, że duża część ich puli stronicowania została zamieniona z pamięci do pliku stronicowania (co jest całkiem normalne dla aplikacji desktopowych, które zostały zminimalizowane i nie były używane przez jakiś czas).
Pula niestronicowana to pamięć, która nie może i nigdy nie będzie wymieniana z pamięci fizycznej… jest to efektywnie twoje stałe minimalne użycie pamięci fizycznej. Pamięć NP Pool często zawiera kod programu i krytyczne sekcje, które muszą być w pamięci fizycznej, aby zachowywać się poprawnie lub bezpiecznie, specjalne sterty, itp. Z 60 procesów, jeśli wszystkie z nich mają 256KB pamięci NP Pool, wtedy twoje absolutne minimum użycia pamięci fizycznej wynosiłoby około 15,360KB. W większości przypadków jedna lub dwie aplikacje mogą mieć 256KB NP Pool, podczas gdy większość ma mniej, często znacznie mniej (lub wcale). Jest bardzo mało prawdopodobne, aby system kiedykolwiek wyrzucił cały zestaw procesów, więc nie oczekuj, że użycie pamięci będzie tak niskie.
Wreszcie, celem posiadania większej ilości pamięci jest uniknięcie konieczności stronicowania danych do i z rozszerzonej przestrzeni pamięci (swap, plik strony) na dysku fizycznym. Stronicowanie jest procesem, który polega na przenoszeniu bloków przydzielonej pamięci fizycznej wokół, wypychając niektóre na dysk i przynosząc inne do pamięci fizycznej z dysku. Stronicowanie jest, mówiąc najprościej, wysoce niepożądane. Nie jest “złe” per-se, ale może być prawdziwym obciążeniem dla wydajności, gdy występuje zbyt często. Ostatecznym celem zwiększenia całkowitej ilości fizycznej pamięci RAM w systemie jest umożliwienie większej ilości procesów przechowywania większej ilości ich commitów w pamięci fizycznej (większy zestaw roboczy). Zużywanie pamięci nie jest problemem, a gdy więcej procesów używa więcej pamięci, całkowita wydajność systemu i wydajność aktywnych procesów będzie zazwyczaj wyższa, ponieważ aktywność dysku fizycznego związana z dostępem do pamięci (w szczególności błędy stron) będzie niższa.
Windows zarządza pamięcią za Ciebie i automatycznie stronicuje dane w pamięci i z pamięci do i z pliku strony (swap) za Ciebie. Jeśli uruchomisz proces, który potrzebuje 9GB pamięci, a Twój system używa już 4GB (z 12GB), to system automatycznie zorientuje się, które procesy nie potrzebują natychmiastowego dostępu do całego swojego zestawu roboczego, i będzie stronicował część lub całość ich stronicowanej puli do pliku wymiany, aby zwolnić ten dodatkowy 1GB. Jeśli duży proces w końcu potrzebuje więcej pamięci, Windows będzie dalej redukował zestaw roboczy innych procesów, aż będzie miał wystarczająco dużo wolnego miejsca, aby zaalokować nowo zażądany blok. Twój duży proces może ostatecznie zużyć całą dostępną pamięć z wyjątkiem NP Pool i być może jakiegoś dodatkowego minimalnego narzutu dla okresowo wykonywanych procesów, które nie pozwalają Windowsowi zwolnić więcej swojego zestawu roboczego (tj. mają oczekujące błędy strony, które Windows w przeciwnym razie wymieniłby z pamięci fizycznej, ale ponieważ są żądane, nie mogą zostać przeniesione).
Jeśli proces potrzebuje więcej pamięci niż ma dostęp (procesy 32bitowe mają zazwyczaj dostęp do 2Gb, a niektóre trochę mniej niż 4Gb z ulepszonymi technikami, podczas gdy procesy 64bitowe mają zazwyczaj dostęp do około 48Gb pamięci, każdy), wtedy Windows czasami spróbuje zwirtualizować swoją pamięć za pomocą przestrzeni wymiany. Jeśli aplikacja 32bit chce wykorzystać swoje maksymalne dozwolone 2Gb przestrzeni, ale tylko 1.2Gb są dostępne, Windows zarezerwuje pełne 2Gb w pliku strony i przeniesie własne dane procesów do i z pliku strony w razie potrzeby, aby wspierać wykorzystanie pamięci przez aplikację. Całkowite użycie “pamięci” w tym przypadku może wydawać się większe niż dostępna pamięć fizyczna, gdy idzie o Total Commit. Total Commit zazwyczaj osiągnie maksimum przy wielkości całego pliku strony, który zarządzany przez system, jest zazwyczaj 2-3 razy większy niż ilość pamięci fizycznej. W twoim przypadku, Total Commit wynosiłby około 24Gb, lub 2x 12Gb pamięci fizycznej (i to jest wskazane na pierwszym zrzucie ekranu, gdzie jest napisane: Commit (GB) 3 / 23).
Jedna ostatnia uwaga. Powiedziałeś w swojej odpowiedzi, że masz 16Gb pamięci RAM, podczas gdy Menedżer zadań widzi tylko 12Gb pamięci RAM. Jest tu jedna z dwóch rzeczy. Albo twój system naprawdę ma tylko 12Gb RAM, albo jeden z twoich patyków nie rejestruje się poprawnie. Jeśli chodzi o pamięć RAM (zakładam, że 4x 4Gb), może ona być uszkodzona, może nie być prawidłowo osadzona w płycie głównej lub płyta główna może mieć problem z wykrywaniem pamięci.
Aby sprawdzić, czy to ostatnie, powinieneś najpierw zaktualizować BIOS płyty głównej do najnowszej wersji. Miałem podobny problem… moje sześć pamięci Tripple-Channel DDR3 (6x 2Gb) były w porządku, bazując na indywidualnych testach każdej z nich… ale moja płyta główna losowo decydowała się nie liczyć jednej lub dwóch z nich co jakiś czas, często zostawiając mnie z tylko 8Gb pamięci. Aktualizacja BIOS-u naprawiła ten problem i mam teraz niezawodny dostęp do wszystkich 12 GB pamięci.