Opublikowano
9 marca 2012 w
Portal komputerowy » Systemy Operacyjne » Windows XP » Przyspieszanie »
Optymalizacja wykorzystywania pamięci
Sposób w jaki należy dokonać optymalizacji pamięci w Windows XP.
W tym celu otwieramy w edytorze rejestru [Menu Start – uruchom – 'regedit’] gałąź [HKEY_LOCAL_MACHINE\ SYSTEM\ CurrentControlSet\ Control\ SessionManager\ Memory Management] i edytujemy dane wartości: Jeżeli jakiejś wartości [typu DWORD] brakuje, należy ją utworzyć.
[Edycja – Modyfikuj – Nowy…]
- IoPageLockLimit[wartość DWORD trzeba utworzyć]- określa maksymalną ilość kilobajtów, które mogą zostać zarezerwowane na operacje wejścia/wyjścia. Standardowe ustawienie to: 512 KB (wartość=0). Zwiększenie tej wartości przynosi lepszą wydajność systemu plików. System zamiast często zapisywać małe porcie danych, będzie zapisywał większe, ale rzadziej [+mniejsze na żądanie]. Wartość (dziesiętną) ustawiamy zgodnie ze wzorem:
Wielkość pamięci Ram * 1024 * 0.125 np.
256 MB* 1024 * 0.125=32768,inna szkoła zaleca podwojenie tej wartości, co przynosi korzyści aplikacjom, które które nieustannie odczytują i zapisują na dysku np. obróbka filmów.
- SecondLevelDataCache – określa wielkość pamięci podręcznej drugiego poziomu Cache L2 dostępnej dla systemu Windows. Należy ustawić taką wartość (dziesiętną) ile KB Cache L2 posiada Twój procesor. Może się okazać, że system źle wykrywa tę wielkość, sprawdź! Błędy mogą się pojawić zwłaszcza przy nowych typach procesorów dysponujących bardzo dużą pamięcią Cache L2 np. Athlon FX (512-1024 KB) lub Pentium-M (1024-2048 KB). Błędne wykrycie tej wartości przez system to kilkuprocentowa strata wydajności.
Cache L2 jest rodzajem sprzętowego „dopalacza” dla operacji adresowania pamięci [dokładniej jego elementem], ma również inne zastosowania. - NonPagedPoolSize[0= system sam kontroluje ten parametr] – Po zapełnieniu około 70% RAM-u XP zacznie intensywnie używać pliku wymiany (Windows 2000 przy ~80%), dzieje się tak ponieważ Windows będzie starał się stronicować jak najwięcej danych. Tyle, że te 20-30% w pewnym sensie się marnuje (nie dosłownie, zostanie użyte, tyle że nie optymalnie, gdyż Windows wcześniej zaczyna „kręcić dyskiem”, który kilkadziesiąt razy wolniejszy niż RAM). Te 30% dla XP to rodzaj bufora, dzięki któremu system będzie zawsze miał trochę wolnej pamięci dla kolejnych aplikacji. Modyfikując ten parametr musisz skorzystać ze wzoru:
- wielkość Ram-u po, której plik wymiany ma zostać intensywniej wykorzystywany * 1024 (wartość trzeba podać w KB)
np. 230*1024= 235520 (wartość dziesiętna).
- Nie wolno przekraczać wielkości Ram-u!!! Jeżeli w pewnym momencie system zostanie poddany zbyt wysokiemu obciążeniu, zaistnieje wówczas duże ryzyku częstego kontaktu z niebieskim ekranem.
- wielkość Ram-u po, której plik wymiany ma zostać intensywniej wykorzystywany * 1024 (wartość trzeba podać w KB)
- W zależności od ilości posiadanego Ram-u parametr można bezpiecznie ustawić zgodnie z poniższą tabelą. Zagwarantuje to, że nawet w skrajnych przypadkach system będzie w stanie odpalić nowy program bez potrzeby reorganizacji pamięci wirtualnej [czytaj – tak będzie bezpieczniej i szybciej].
Ram bezpieczna wartość optymalna wartość do 256 MB nie modyfikować parametru 80% np.
192MB *80%*1024=157286KB256 – 384 MB 80% 85% lub 90% [dla 384 MB] 512 MB i więcej 90% 95% [powyżej 512 MB] Wyższe wartości tylko dla ekstremalistów. Nie biorę odpowiedzialności za ich działania.
Sprawy kontrowersyjne
- LargeSystemCache – '1′ [Bufor Systemu], '0′ [Programy] odpowiada za ustawienie dostępne również w [Menu Start – Panel Sterowania – Wydajność i Konserwacja – System – zakładka 'Zaawansowane’ – Okienko Wydajność Ustawienia – zakładka 'Zaawansowane’ – Użycie Pamięci]. Ustawienie na Programy zalecane jest dla systemów, które mają do 256MB RAM-u, jeżeli masz więcej niż 256MB RAM-u lepiej, ustawić na Bufor Systemu. Dzięki temu system będzie trzymał w pamięci często używane dane np. biblioteki”.dll”. Z pewnością podniesie to wydajność, jednak ta opcja została stworzona z myślą o serwerach i mogą wystąpić pewne komplikacje w działaniu niektórych programów. Nie twierdzę, że wystąpią, ale po prostu dla ścisłości informuję, że takowe mogą się pojawić [ale nie muszą!]. Osobiście zalecam tę modyfikację.
- DisablePagingExecutive – Gdy ustawisz '1′ wszystkie sterowniki i jądro systemu nie będą ładowane w plik wymiany, ale przechowywane na stałe w pamięci Ram. Co ważne, a wielu o tym zapomina Windows tak właśnie postępuje, jednak gdy potrzebuje więcej wolnej pamięci przesuwa te pliki do pamięci wirtualnej. Gdy to zapotrzebowanie na pamięć spadnie, system automatycznie załaduje jądro i sterowniki do pamięci Ram. Wartość '1′ przyspiesza odrobinę system, ponieważ zabrania mu przenoszenia tych istotnych dla wydajności elementów do wolniejszego pliku wymiany. Cała sprawa jest jednak dosyć śliska i trudno powiedzieć, czy warto skorzystać z tej „optymalizacji”. W pewnym sensie jest to bowiem zmuszanie systemu do działania na siłę i może w skrajnych okolicznościach doprowadzić do zawieszenia systemu dysponującego stosunkowo niewielką pamięcią [256 MB]. Jeżeli masz mało pamięci dwa razy się zastanów zanim skorzystasz z tej metody. Nie jestem również do końca przekonany, że dla komputer które nie mają więcej niż 256 MB Ram-u ustawienie '1′ przyniesie wzrost, a nie spadek wydajności. W momencie, gdy potrzebna jest maksymalna moc, mała ilość pamięci zostanie dopchana danymi, które się w takiej sytuacji powinny znaleźć w pliku wymiany. Wówczas podsystem pamięci wirtualnej ma ograniczone pole manewru i musi kręcić dyskiem jeszcze bardziej niż zwykle w takich sytuacjach. Czy zyski równoważą wówczas straty?
- AlwaysUnloadDLL – System często nie usuwa z pamięci bibliotek DLL należących do programów, które zostały wyłączone prze użytkownika. Pozwala to na szybsze ponowne uruchomienie tego programu, ale obciąża i to czasem znacznie pamięć. Jeśli bardziej zależy Ci na wydajności programów, niż na ich szybszym (o kilka sekund) starcie w kluczu [HKEY_LOCAL_MACHINE\ SOFTWARE\ Microsoft\ Windows\ CurrentVersion\ Explorer] utwórz wartość DWORD 'AlwaysUnloadDLL’ i przypisz jej parametr '1′. (Explorer zawsze będzie usuwał z pamięci nieużywane pliki DLL). Jeżeli masz mniej niż 256MB Ram-u jest to bardzo wskazane. Co prawda, Windows przyparty do muru i tak sam pozbędzie się w końcu niepotrzebnych bibliotek, jednak ten mechanizm może zawieść i jakieś wpisy pozostaną. Osobiście polecam wszystkim, którzy maja mniej niż 384 MB Ram-u, aby uaktywnili czyszczenie bibliotek DLL. Pozostali nawet nie zauważa różnicy, poza tym Windows ma jeszcze jeden i to skuteczniejszy mechanizm przyspieszania startu aplikacji – prefetch, któremu poświęcony jest cały rozdział.
- ClearPageFileAtShutdown – jeśli ustawimy na '1′ system będzie czyścił plik wymiany przy zamykaniu. '0′ – wyłączone. Wiele poradników poleca tą przeróbkę, co ma rzekomo przyspieszyć system, ponieważ plik wymiany będzie pusty przy starcie systemu. Przyznam się, że też to polecałem, ale nigdy więcej! Dlaczego?,… ponieważ Windows automatycznie tworzy plik wymiany przy każdym starcie od zera i wszystkie strony w nim zapisane ulegają skasowaniu. Żadne dane na dysku nie muszą zostać skasowane, aby można było na nim zapisać nową porcję danych. W skrócie mówiąc ustawienie parametru na '1′ spowalnia tylko zamykanie systemu, a jedyną jego zaletą jest zwiększenie poziomu bezpieczeństwa [zanim nastąpi ponowne uruchomienie systemu plik wymiany wciąż jest pełen różnych informacji, które można wykraść].
- Ściągnij program czyszczący Ram z nieużywanych już zasobów np. MemStat XP (77 KB), jest bardzo skuteczny. Odpal go przed uruchomieniem jakiejś mocno obciążającej zasoby aplikacji.
Jednak tylko pod pewnymi warunkami! Do tej pory nie wierzyłem oponentom takich programów, jednak do momentu zapoznania się z pewnym artykułem. Jak przekonuje sam Mark Russinovich znający się na Windowsach jak mało kto, takie programu bardziej szkodzą niż pomagają. treść artykułu [w języku angielskim]Nie trzeba, aż tak demonizować tych „czyścicieli pamięci”, ale warto zdać sobie sprawę, że ich skuteczność zależy w dużej mierze od tego, czy zostaną spełnione pewne warunki, w innym wypadku nie miejcie pretensji, że wydajność spadnie:- Minimalizuj korzystanie z takich programów. XP naprawdę dobrze sobie radzi z zarządzaniem pamięcią, jeżeli możesz, zamiast odpalać takowy lepiej zresetuj system, z pewnością przyniesie to większe korzyści.
- Pamiętaj, że te programu czyszczą czasem aż za ostro i dlatego są skuteczne, kiedy jakaś aplikacja potrzebuje dużo pamięci [gry, zaawansowane aplikacje], którą otrzyma kosztem innych aplikacji. Nie ma sensu zwalniać pamięci na siłę, skoro nie zamierzasz jej przeznaczyć dla programu, który bardzo jej potrzebuje. Zastanów się, które programy „zapychają Ci całą pamięć”, ponieważ tylko przed ich uruchomieniem użycie „czyściciela” ma sens.
- Zanim odpalisz taki program wyłącz wszystkie zbędne aplikacje, których nie zamierzasz używać w czasie korzystania z zasobochłonnego programu. Zostaną one ograbione z pamięci, a więc i stracą na funkcjonalności.
- Bardzo istotne jest wyłączenie opcji auto-oczyszczania Ram-u. Powoduje ona… chwilowe „pożarcie pamięci” przez optymalizator, co jest bardzo niewskazane. Automat zadziała tylko wtedy, kiedy system będzie naprawdę potrzebował pewnej ilości pamięci i zamiast ją otrzymać zostanie mocno obciążony przez program, który ma pomagać, a nie szkodzić. W rezultacie można odnieść wrażenie, że komputer się „przycina”, a tak naprawdę bardzo mocno zwolnił. Dlatego lepiej samemu i tylko w razie konieczności korzystać z tego typu programów.
- Nie nadużywaj tych programów, wystarczy odpalić raz, a potem wyłączyć go całkowicie.
Słowa kluczowe: nonpagedpoolsize, secondleveldatacache, windows 7 iopagelocklimit
Click to rate this post!
[Total: 1 Average: 4]
nurtuje mnie jedno pytanie, jak to jest z tymi parametrami, gdzie je wpisac, tam gdzie wartosc czy dopisac do nazwy czy gdzie?
w rejestrze
START -> URUCHOM
wpisz "regedit" (bez cudzys³owów) i kliknij ok…
no i tam szukaj owych kluczy
UWAGA: nie kasuj nic w rejestrze, je¶li nie wiesz co to jest!
ja wiem gdzie te klucze sa i je znalazlem, ale w ClearPageFileAtShutdown ustawiamy parametr 1 lub 0, i chodzi mi o to ze nie wiem gdzie ten parametr wpisac. Mam dac na modyfikacje i tam gdzie jest wartosc wpisac 1 lub pozostawic 0 czy do nazwy dopisac, czest z tych zalecen gdzie wartosci sie wpisywalo ramu itd. to zrobilem, a te z parametrami nie robie bo nie wiem dokladnie jak.
ustawienie 1 w polu LargeSystemCache powoduje, ze mozilla firefox przestaje dzialac:)
Szczególnie warto przestawić pozycje SecondLevelDataCache i NonPagedPoolSize. Pozytywny skutek murowany, szczególnie w grach.
u mnie w SecondLevelDataCach sa same zera jak zmienic to na 512 kb (bo takiego mam procka) dac Modyfikuj czy Modyfikuj dane binarne ? I te 512 gdzie wpisac ??
Nie polecam żadnego z wymienionych tweaków. Bawiłem się trochę z tymi ustawieniami i stwierdziłem, że w niczym nie poprawia to wydajności systemu. Jeżeli używacie kompa tylko jako serwer to możecie najwyżej ustawić LargeSystemCache na 1, nie polecam włączać tego na zwykłym kompie bo możecie mieć problemy ze stabilnością systemu. Jak dla mnie bezsensowne są takie artykuły, pisać o czymś czego się samemu nie sprawdziło i niepotrzebnie wprowadzać ludzi w błąd. Jeżeli ktoś po zastosowaniu, któregoś z w.w. tweaków odniósł wrażenie, że poprawiło to działanie komputera to było to nic więcej jak tylko zwykła iluzja. Pomijam już sam fakt, że przy dwóch wartościach zamiast danych podanych w bajtach to tutaj jest w kilobajtach oraz, że wartość IoPageLockLimit w ogóle nie jest brana pod uwagę w WinXP czy Win2K, tylko w starszych wersjach Windowsa. Tak samo ustawienie wartości NonPagedPoolSize nic nie daje, dalej plik wymiany jest wykorzystywany przy tej samej ilości użycia pamięci czyli w moim przypadku ok. 80% czasami nawet mniej. Nie polecam również żadnego rodzaju programów do czyszczenia pamięci, bo te programy nic nie dają.
Mam pytanie do autora, te wartosci wpisujemy w hexidecimal czy w decimal ?
mam pytanie jak to jest z ustawianiem parametru SecondLevelDataCache w przyptku procesora 2rdzeniowego takiego Athlon X2 ??
no właśnie ile ustawic na dwa rdzenie?