Wstęp Systemem operacyjnym, który obrósł w największą liczbę mitów optymalizacyjnych, jest wciąż najpopularniejszy Windows XP, który pojawił się niemal dziewięć lat temu (26 października 2001 roku). W Polsce korzysta z niego ponad 65% użytkowników. Windows 7, najnowszy system operacyjny giganta z Redmond, jest już zainstalowany na komputerach prawie 15% polskich użytkowników i jego udział stale rośnie, zbliżając się do poziomu osiągniętego przez Windows Vista, czyli nieco ponad 17% (źródło: Gemius SA, gemiusTraffic, 13.09.2010–19.09.2010; więcej na www.ranking.pl).
Chyba nikogo nie trzeba przekonywać, że system operacyjny to oprogramowanie bardzo złożone. Wystarczy przypomnieć nagłośnioną kilka lat temu sprawę wycieku części kodu źródłowego systemów Windows NT/2000. Według niektórych ekspertów wykradziono wtedy około 13,5 miliona linii kodu. Cały system Windows 2000 to około 35 milionów linii kodu. Oczywiście, nowsze systemy Windows są jeszcze bardziej rozbudowane. Według Vincenta Maraia, konsultanta Microsoftu, autora książki The Build Master: Microsoft’s Software Configuration Management Best Practices, Windows XP ma 40 milionów linii kodu, a Windows Server 2003 – 50 milionów. Kod Siódemki liczy 120 milionów linii. Nasz artykuł będzie co prawda dotyczył tylko systemów Windows, ale warto zdać sobie sprawę, że złożoność nie jest wyłącznie cechą systemów Microsoftu: jądro systemu Linux już w 2008 roku przekroczyło 10 milionów linii kodu.
Skoro współczesny popularny system operacyjny jest tak złożonym produktem, to logiczny wydaje się wniosek, że można coś poprawić, coś zoptymalizować. Należy jednak wyraźnie rozróżnić optymalizację kodu systemu i optymalizację funkcji działającego już produktu. W artykule zajmiemy się wyłącznie tą drugą kwestią. Pierwsza odpada z prozaicznej przyczyny: tzw. reverse engineering Windows jest po prostu nielegalny. Inna sprawa, że kod o takiej złożoności jest niemożliwy do ogarnięcia przez pojedynczego, choćby największego geniusza-programistę.
Zyski i straty Cel wykonywania wszelkich działań optymalizacyjnych jest oczywisty. Wizja wydajniejszego systemu i zainstalowanych w nim aplikacji oddziałuje na wyobraźnię wielu użytkowników. Treść pseudoporad często jest zawiła, pojawiają się w niej skomplikowane terminy, nieznane nazwy elementów systemu – całość sprawia wrażenie niezwykle fachowego, ukrytego triku, którego wdrożenie przyniesie natychmiast obserwowalne efekty. Spotykamy się także z innego typu rozwiązaniami: prostymi w obsłudze programami, w których kliknięcie jednego przycisku w „magiczny” sposób powoduje np. zwolnienie olbrzymich pokładów RAM-u. Niestety, w obu przypadkach najczęściej mamy do czynienia z iluzją. Genialny trik okazuje się nic niewart, a pozornie świetny program-tweaker w najlepszym razie jest zwykłą „obiecanką podniecanką”. Niestety, często wręcz szkodzi, zaburzając działanie funkcji optymalizujących zarządzanie pamięcią w systemie operacyjnym, co w rezultacie zmniejsza wydajność.
Wielu użytkowników zadaje sobie pytanie, ile można zyskać. To niewłaściwe podejście. Należałoby raczej poszukać odpowiedzi na pytanie, ile można stracić. Strata w wyniku zastosowania pseudooptymalizacyjnego triku często jest znacznie większa niż potencjalny zysk z udanego wdrożenia pewnych działań optymalizacyjnych. To wyjaśnia nasze podejście do tematu: chcieliśmy pokazać, jak uniknąć błędnych porad, bo dzięki temu tak naprawdę można zyskać. Warto pamiętać, że nawet w sytuacji, gdy np. zmiana rejestru Windows zasugerowana w jakiejś pseudoporadzie jest tylko ignorowana przez system, to też tracisz – w tym przypadku czas.
Każdy przedstawiony w artykule pseudotrik optymalizacyjny znaleziony w internetowej Wszechnicy Wiedzy Wszelakiej sprawdzaliśmy pod kątem wpływu na wydajność systemu, a dokładnie: czy jest obojętny dla systemu, czy też powoduje skutek odwrotny do zamierzonego. Zysków się nie spodziewaliśmy – w końcu zajęliśmy się wyłącznie obalaniem mitów optymalizacji.
Bardzo często „zysk” z działań optymalizacyjnych przedstawiany jest przez pryzmat czasu uruchamiania się systemu operacyjnego. Jednak w praktyce szybszy start systemu wcale nie musi przekładać się na jego szybsze działanie. Niektóre triki, teoretycznie mające przyśpieszyć uruchamianie, mogą zmniejszyć wygodę pracy. Co z tego, że system operacyjny będzie gotowy 10 sekund wcześniej, gdy później trzeba czekać znacznie dłużej na uruchomienie aplikacji albo na wydruk? Zupełnie kuriozalne okazało się podsumowanie artykułu opublikowanego w jednym z popularnych pism komputerowych. Tekst dotyczył przyśpieszania startu Windows XP i Windows Vista, a ostatnie zdanie epatowało olbrzymim entuzjazmem autora: „Start systemu w… 7,001 s! Szkoda tylko, że taka konfiguracja wieszała się tuż po starcie…”. Chyba nie o taką „optymalizację” chodzi...
Mit 1. Popraw obsługę pamięci podręcznej L2 przez Windows – zyskasz szybszy system Pseudoporada: Jeżeli chcesz zwiększyć wydajność systemu, skonfiguruj go tak, by poprawnie obsługiwał pamięć podręczną procesora drugiego poziomu. Zrobisz to, zmieniając wartość SecondLevelDataCache w rejestrze Windows.
Prawda czy fałsz? FAŁSZ!
Wpływ na działanie systemu: żaden.
W internecie znajduje się mnóstwo porad związanych z tajemniczą wartością SecondLevelDataCache, której zmiana ma rzekomo wpłynąć na „poprawne rozpoznawanie pamięci cache L2 i szybsze działanie systemu”. Porada często przedstawiana jest tak, jak gdyby dotyczyła każdej wersji Windows. Prawda wygląda inaczej. Ostatnią wersją Windows, w której wartość SecondLevelDataCache miała jakiekolwiek znaczenie, był Windows 2000 SP1. Co ważne, nie chodzi w tym przypadku tylko o sam system, ale też o procesory, które były montowane w komputerach w czasach świetności Windows 2000. We wszystkich późniejszych odmianach systemów operacyjnych Microsoftu wartość ta – choć może być, oczywiście, wprowadzona do rejestru – jest po prostu ignorowana. Głównie dlatego, że warstwa abstrakcji sprzętu (HAL – ang. Hardware Abstraction Layer) w nowszych systemach Windows automatycznie rozpoznaje wielkość pamięci L2 w procesorze/procesorach na danym komputerze. Zresztą nawet w systemach Windows NT 4.0 i Windows 2000 zmiany wartości SecondLevelDataCache nie są zalecane.
Zacytujmy fragment artykułu zamieszczonego w Bazie Wiedzy Microsoft:
„Rejestr systemu Windows 2000 zawiera dane konfiguracyjne, które są ważne dla użycia pamięci. Niektóre niezależne źródła błędnie raportują, że wydajność systemu można zwiększyć, modyfikując następujący klucz Rejestru: HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Memory Management\SecondLevelDataCache. Chociaż można zmienić tę wartość z wartości domyślnej na 0, w większości przypadków nie wpłynie to na zwiększenie wydajności. Firma Microsoft nie poleca zmiany tego ustawienia. Gdy wartość klucza jest ustawiona na 0, system próbuje pobierać dla platformy rozmiar buforu poziomu 2 (L2) procesora z konfiguracji HAL. Jeśli nie uzyska tej wartości, system ustawia rozmiar domyślny na 256 KB dla buforu L2”.
Pełen tekst artykułu (w języku polskim) o numerze 228766 znajduje się na tej stronie, a szczegółowe wyjaśnienia związane z wartością SecondLevelDataCache dostępne są w tym artykule.
Ciekawostką jest to, że wartość SecondLevelDataCache standardowo jest obecna w rejestrze systemów Microsoftu nowszych od Windows 2000. Na powyższej ilustracji zaznaczona jest wartość SecondLevelDataCache w oknie Edytora rejestru w systemie Windows 7. Postanowiliśmy zatem sprawdzić, czy zmiana tej wartości w systemach Windows XP i Windows 7 cokolwiek da. Efekt (wyniki pomiarów znajdziecie w dalszej części artykułu) z pewnością nie zadowoli żadnego pasjonata optymalizacji Windows. Ten trik to zwykła strata czasu.
Mit 2. Ustaw większą liczbę rdzeni za pomocą Msconfig, a system będzie dużo szybciej działać Pseudoporada: Chcesz przyśpieszyć ładowanie systemu operacyjnego? Ustaw maksymalną liczbę procesorów za pomocą programu Konfiguracja systemu (Msconfig).
Prawda czy fałsz? FAŁSZ!
Wpływ na działanie systemu: najczęściej żaden, ale możliwy jest spadek wydajności.
W dobie wielordzeniowych procesorów tego typu porada może wyglądać szczególnie kusząco. Prawdą jest, że wbudowane w system Windows Vista/7 narzędzie Konfiguracja systemu udostępnia okno dialogowe Zaawansowane opcje rozruchu, w którym znajduje się pole wyboru Liczba procesorów oraz rozwijalna lista z wartościami liczbowymi.
Aby wywołać to okno dialogowe, należy użyć przycisku Opcje zaawansowane widocznego w oknie Konfiguracja systemu.
W systemie Windows XP rozwijalna lista dostępna jest w oknie Zaawansowane opcje pliku BOOT.INI obok pola wyboru /NUMPROC.
Standardowo pole wyboru widoczne w oknie dialogowym z opcjami rozruchu nie jest zaznaczone, więc wielu żądnych wydajności użytkowników aktywuje je i ustawia maksymalną wartość, licząc na wzrost wydajności (co ciekawe, niektórzy „naprawdę” ten wzrost odczuwają – ach, ten efekt placebo!). Tymczasem sens umieszczenia tej funkcji w systemie Windows jest zupełnie inny. Microsoft wbudował pole wyboru Liczba procesorów po to, by możliwe było ograniczenie liczby procesorów, a nie jej zwiększenie. Znany jest np. przypadek kłopotów z instalacją oprogramowania SQL Server 2005 na komputerze/serwerze wyposażonym w procesor o liczbie rdzeni niebędącej potęgą liczby 2 (przykładem jest trzyrdzeniowy AMD Phenom X3). Receptą jest właśnie ograniczenie liczby wykorzystywanych rdzeni do jednego (szczegóły związane z tym konkretnym przypadkiem można znaleźć w artykule nr 954835 w Bazie Wiedzy Microsoft). Zresztą wszelkie opcje związane z rozruchem w programie Konfiguracja systemu mają na celu rozwiązanie ewentualnych problemów z uruchamianiem, a nie zwiększenie wydajności.
System standardowo wykorzystuje wszystkie dostępne rdzenie procesora. Jedyne, co można „zyskać”, to spadek wydajności spowodowany ograniczeniem liczby dostępnych rdzeni. Na ogół jednak „tweakerzy” nie zyskują nic, bo ustawiają maksymalną dostępną liczbę rdzeni, co jest standardowym ustawieniem. Jedynym „zyskiem” po uaktywnieniu pola wyboru Liczba procesorów oraz ustawieniu maksymalnej dostępnej wartości będzie irytujące pojawianie się komunikatu informującego o selektywnym uruchamianiu. Zainteresowanych szczegółami związanymi z użyciem narzędzia konfiguracji systemu w systemie Windows 7 odsyłamy do artykułu umieszczonego w witrynie producenta.
Mit 3. Wyłączenie stronicowania niektórych elementów zwiększy wydajność systemu Pseudoporada: W rejestrze systemu Windows utwórz wartość o nazwie DisablePagingExecutive i przypisz jej liczbę 1. Wyłączysz powolną pamięć wirtualną, a system będzie działał szybciej, korzystając z szybszego RAM-u.
Prawda czy fałsz? FAŁSZ
Wpływ na działanie systemu: wzrost możliwy tylko w systemach wyposażonych w pojemną pamięć, w przypadku 1 GB RAM-u i mniej możliwy spadek wydajności. W przypadku Windows Vista i Windows 7 brak jakiegokolwiek wpływu.
DisablePagingExecutive to wartość rejestru Windows pełniąca rolę swoistego przełącznika. Jeżeli przypisaną tej wartości daną jest liczba 0 (ustawienie standardowe), oznacza to, że sterowniki i jądro systemu mogą być stronicowane do pliku na dysku (inaczej: przechowywane w pamięci wirtualnej). Przypisanie liczby 1 blokuje możliwość stronicowania i zarówno jądro, jak i sterowniki stale rezydują w pamięci – nawet gdy nie są potrzebne. Rezultat jest łatwy do przewidzenia: zamiast wzrostu wydajności można się spodziewać spadku – bo mniejsza ilość pamięci jest dostępna dla wymagających jej usług i aplikacji działających w systemie. To, że RAM jest szybszy od pamięci wirtualnej (czyli faktycznie dysku twardego), nie ma tu żadnego znaczenia, bo blokując stronicowanie, zmuszamy system do przechowywania w szybkiej pamięci kodu, który w ogóle nie jest wykorzystywany, a aplikacje potrzebujące pamięci „dławią” się, bo ich kod jest przerzucany do pliku stronicowania. Normalnie działający system zwolni pamięć, przerzucając niepotrzebny kod do pliku stronicowania, dzięki czemu więcej pamięci będzie dostępnej dla pierwszoplanowych aplikacji.
W tym przypadku mamy jednak do czynienia z mitem zawierającym ziarnko prawdy. Wyłączenie stronicowania jądra i sterowników może wpływać na wydajność, ale wyłącznie wtedy, gdy z tego przełącznika skorzysta się na komputerze naprawdę bogato wyposażonym w pamięć. Z jednej strony poświęcamy pamięć na stałe przechowywanie jądra i sterowników, ale z drugiej możemy zyskać czas potrzebny na odwołania do pliku stronicowania, gdy kod danego sterownika okaże się niezbędny. Wzrost wydajności jest jednak tak znikomy, że praktycznie niemierzalny – na granicy błędu statystycznego pomiaru. Trudno też jednoznacznie określić próg, od którego można mówić o „dużej pamięci”. Wszystko zależy od stylu pracy użytkownika i uruchamianych przez niego aplikacji.
Bardziej praktyczne zastosowanie wartości DisablePagingExecutive nie ma nic wspólnego ze zwiększaniem wydajności, lecz związane jest z diagnostyką w systemie Windows. Zablokowanie stronicowania kodu sterowników ułatwia ich debugowanie. Zrzut pamięci będzie zawierał wszystkie potrzebne dane. Warto też pamiętać o jeszcze jednej, bardzo istotnej informacji: oficjalne źródła producenta dokumentują wartość DisablePagingExecutive w odniesieniu do systemu Windows 2003, nie zaś nowszych wersji. Inny artykuł (w jęz. angielskim) poświęcony tej tematyce, umieszczony w Bazie Wiedzy Microsoft, dotyczy systemów Windows do wersji Windows XP włącznie.
Nie udało nam się wykryć jakiejkolwiek zależności pomiędzy zmianą wartości DisablePagingExecutive w rejestrze a faktyczną zmianą wydajności systemu Windows 7.
Mit 4. Korzystaj z większego bufora systemu, a wydajność Windows wzrośnie Pseudoporada: Odnajdź w rejestrze wartość o nazwie LargeSystemCache i przypisz jej liczbę 1, dzięki temu system będzie lepiej korzystał z pamięci i wydajność Windows wzrośnie.
Prawda czy fałsz? Zależy od zastosowania komputera.
Wpływ na działanie systemu: w przypadku stacji roboczej – teoretycznie negatywny (spadek wydajności uruchamianych aplikacji).
Następny mit związany z optymalizacją zarządzania pamięcią w systemach Windows. Za bufor systemu odpowiada wartość rejestru Windows o nazwie LargeSystemCache. Jej ustawienie domyślne jest różne, zależnie od wersji systemu. W przypadku desktopowej wersji Windows wartości tej przypisana jest liczba 0, a w serwerowych wartość LargeSystemCache ma przypisaną liczbę 1. Zresztą tej wartości nie trzeba ustawiać wyłącznie za pośrednictwem edytora rejestru Windows. Można do tego celu użyć okna dialogowego Opcje wydajności.
W systemie Windows XP (zarówno Home Edition, jak i Professional) wartością LargeSystemCache można sterować za pomocą opcji widocznych w sekcji Użycie pamięci. Zaznaczenie opcji Bufor systemu odpowiada wartości LargeSystemCache=1.
Czy faktycznie aktywowanie większego bufora systemowego powoduje wzrost wydajności? Jeśli chodzi o stacje robocze – nie. Ustawienie LargeSystemCache określa sposób zarządzania pamięcią przez system operacyjny. Gdy LargeSystemCache=1, więcej pamięci jest poświęcanej na bufor systemowy, ale tym samym mniej zostaje działającym w systemie usługom i aplikacjom uruchamianym przez użytkownika. W przypadku standardowo wykorzystywanego komputera domowego, na którym z aplikacji korzysta się znacznie częściej niż z typowo serwerowych usług, może to powodować spadek wydajności. Możliwość ustawienia większego bufora systemu w desktopowych wersjach Windows została pozostawiona wyłącznie dlatego, by zwiększyć wydajność systemu w przypadku, gdy stacja robocza jest wykorzystywana jako serwer plików w niewielkiej sieci. Reasumując: stosowanie tej porady ma sens wyłącznie w przypadku, gdy rolę serwera pełni komputer z desktopową wersją Windows. W pozostałych standardowe ustawienie buforowania jest optymalne.
Po raz kolejny mamy do czynienia z wartością, która choć obecna w rejestrze Windows 7, jest ignorowana przez system. Najnowsze „okienka” są również pozbawione funkcji aktywowania bufora systemu z poziomu okna dialogowego Opcje wydajności.
Zainteresowanych dalszymi informacjami związanymi z trybem buforowania systemu odsyłam do polskojęzycznego tekstu zamieszczonego w witrynie producenta Windows.
Mit 5. Częsta defragmentacja dysku zwiększa wydajność systemu Pseudoporada: Im dłużej korzystasz z komputera, tym większa jest fragmentacja danych na dysku twardym, co negatywnie wpływa na szybkość działania Windows. Ustaw automatyczną defragmentację na starcie, a system będzie działał szybciej
Prawda czy fałsz? FAŁSZ!
Wpływ na działanie systemu: negatywny (spadek wydajności).
Tego typu porady to typowy przykład niezrozumienia procesu fragmentacji i działań, które można podjąć, by mu przeciwdziałać (defragmentacji). Fragmentacja danych zapisanych na dysku twardym jest zjawiskiem niepożądanym, ale też nieuniknionym. Zjawisko to polega na pojawianiu się coraz większej liczby nieciągłych obszarów dysku na skutek usuwania plików, dodawania nowych, a także zmiany rozmiarów danych już istniejących. Duża fragmentacja danych ma negatywny wpływ na wydajność dysku twardego, a tym samym całego systemu operacyjnego. Nasilenie tego zjawiska zależy nie tylko od intensywności wykorzystania dysku, ale także od użytego systemu plików. Algorytmy alokacji danych na dysku zaimplementowane w różnych systemach plików nie są jednakowe. Stąd też stopień fragmentacji danych na dysku używającym systemu FAT/FAT32 będzie inny niż na dysku korzystającym z systemu plików NTFS. W każdym razie fragmentacji nie da się całkowicie wykluczyć. Można negatywne skutki niwelować, wykonując co jakiś czas działania konserwacyjne, tzw. defragmentację dysku. Jednak sam proces defragmentacji wymaga czasu i zasobów, dlatego przeprowadzanie go zbyt często (np. codziennie albo przy każdym uruchomieniu komputera) jest stratą czasu i zasobów komputera. Jak często zatem wykonywać defragmentację?
System operacyjny Windows 7 jest wyposażony w narzędzie do defragmentacji o nazwie Defragmentator dysków, które standardowo ma przypisane harmonogram cotygodniowy. Najlepiej pozostać przy tym ustawieniu.
Skoro mowa o defragmentacji, nie można pominąć istotnej kwestii: osoby posiadające komputer wyposażony w nośnik SSD powinny raczej o niej zapomnieć. Wykonywanie defragmentacji na SSD jest pozbawione sensu, gdyż dostęp do dowolnej komórki pamięci trwa tyle samo. Zatem to, w których komórkach dane są rozmieszczone, nie ma żadnego znaczenia. Mylące może być też to, że popularne komercyjne narzędzia do defragmentacji (np. program Diskeeper) zawierają funkcje teoretycznie optymalizujące pracę SSD, ale nie mają one nic wspólnego z „tradycyjną” defragmentacją.
Mit 6. Usunięcie bibliotek DLL z pamięci oznacza szybsze działanie aplikacji Pseudoporada: Możesz usunąć zbędne biblioteki z pamięci przez wprowadzenie do rejestru Windows wartości o nazwie AlwaysUnloadDll. Tym samym uruchamiane w systemie aplikacje będą miały więcej pamięci do dyspozycji, co przełoży się na ich szybsze działanie.
Prawda czy fałsz? FAŁSZ!
Wpływ na działanie systemu: żaden.
Usuwanie bibliotek z pamięci w celu przyporządkowania większej ilości RAM-u aplikacjom to tylko pozornie logiczne rozwiązanie. Aplikacje również korzystają z wielu współdzielonych bibliotek DLL, zatem usuwanie ich z pamięci nie tylko nie przyśpieszy działania programów, ale wręcz je spowolni. Inna sprawa, że w przypadku Windows XP i późniejszych systemów Microsoftu obecność wartości AlwaysUnloadDll w rejestrze systemowym nie ma żadnego znaczenia. Wartość ta jest ignorowana, a o tym, czy dana biblioteka zostanie usunięta z pamięci, decydują inne czynniki. System automatycznie usuwa z RAM-u niewykorzystywane biblioteki. Ostatnim systemem, w którym wartość AlwaysUnloadDll miała jeszcze jakiekolwiek znaczenie, był Windows 2000. Jednak nawet w tym i wcześniejszych była przydatna jedynie do debugowania.
Mit 7. Wyczyść plik wymiany, a system będzie uruchamiał się szybciej Odnajdź w rejestrze wartość o nazwie ClearPageFileAtShutdown i przypisz jej liczbę 1. Spowoduje to wyczyszczenie pliku wymiany i szybszy start systemu podczas kolejnych uruchomień.
Prawda czy fałsz? FAŁSZ!
Wpływ na działanie systemu: negatywny (spadek wydajności).
Jedyną prawdą w tej poradzie jest to, że rejestr systemu Windows (od wersji Windows 2000) zawiera wartość typu DWORD o nazwie ClearPageFileAtShutdown. Jednak jakiekolwiek związki tej wartości z optymalizacją wydajności systemu można określić jednym słowem: bzdura. Jedyną funkcją realizowaną przez system po przypisaniu wartości ClearPageFileAtShutdown liczby 1 jest kasowanie zawartości pamięci wirtualnej przez wypełnienie pliku stronicowania zerami. Ta operacja jest wykonywana podczas zamykania systemu. Funkcja ta jest związana z bezpieczeństwem, a nie z wydajnością. Jedynym obserwowalnym efektem jest wydłużenie czasu zamykania systemu operacyjnego. Uruchamianie Windows wcale nie jest przyśpieszane. Zainteresowanych szczegółami związanymi z czyszczeniem pliku stronicowania odsyłamy do dokumentu w witrynie Microsoftu.
Mit 8. Zoptymalizuj wykorzystanie pamięci za pomocą ustawienia NonPagedPoolSize Pseudoporada: System Windows zaczyna intensywnie wykorzystywać powolną pamięć wirtualną po zapełnieniu ok. 70% RAM-u. Zmieniając wartość NonPagedPoolSize w rejestrze, możesz opóźnić uaktywnienie pamięci wirtualnej – system będzie dłużej korzystał z szybkiej pamięci RAM, co wpłynie korzystnie na wydajność.
Prawda czy fałsz? FAŁSZ!
Wpływ na działanie systemu: możliwy spadek wydajności.
NonPagedPoolSize to nic innego jak wartość w rejestrze Windows, za pomocą której użytkownik może ustawić wielkość niestronicowalnej puli w pamięci. Standardowo system dynamicznie zarządza tą wartością. Wpisanie wartości na stałe nie poprawia wydajności, a może powodować kłopoty ze stabilnością systemu Windows, zwłaszcza przy ustawieniu wartości bliskich pojemności fizycznej pamięci RAM w danym komputerze. Zauważyliśmy też, że wiele porad sugeruje wpisanie wartości wyrażonej w kilobajtach, tymczasem należy podawać wartość w bajtach. W rezultacie wielu użytkowników zamiast spodziewanego wzrostu wydajności „zyskuje” jej znaczny spadek.
Uwaga, w systemach Windows Vista SP1 i nowszych ograniczenie niestronicowanej puli ustawia się za pomocą wartości rejestru o nazwie NonPagedPoolLimit, a nie NonPagedPoolSize. Co prawda wartość NonPagedPoolSize jest obecna w rejestrze Windows Vista i Windows 7, ale jej zmiany są ignorowane przez podsystem zarządzania pamięcią. Więcej informacji na temat zarządzania pamięcią można znaleźć we wpisie na blogu Ask The Performance Team.
Mit 9. Zarezerwuj pamięć na operacje wejścia-wyjścia Pseudoporada: Możliwe jest zarezerwowanie fragmentu pamięci na operacje wejścia-wyjścia za pomocą wartości rejestru o nazwie IOPageLockLimit. Standardowo system rezerwuje 512 kB, ale jeżeli zwiększysz tę wartość, zyskasz lepszą wydajność systemu plików.
Prawda czy fałsz? FAŁSZ!
Wpływ na działanie systemu: żaden.
Kolejna optymalizacyjna „półprawda”. Wartość IOPageLockLimit pozwala co prawda ręcznie określać rozmiar pamięci, która ma zostać przydzielona operacjom wejścia-wyjścia, ale jej wprowadzenie do rejestru Windows XP i nowszych wersji systemów Microsoftu nie ma absolutnie żadnego znaczenia. Ostatnim systemem Microsoftu, w którym wartość IOPageLockLimit jeszcze je miała, był Windows 2000, i to bez żadnych dodatków serwisowych. Więcej informacji można znaleźć w witrynie Microsoft Technet.
Mit 10. Wyczyść RAM Pseudoporada: Uruchom program do optymalizacji RAM-u, a zobaczysz, jak wiele pamięci marnuje się w twoim systemie! Zwolniona pamięć może zostać wykorzystana przez uruchamiane programy, które dzięki temu będą działać szybciej.
Prawda czy fałsz? FAŁSZ!
Wpływ na działanie systemu: negatywny (spadek wydajności)
Popularność tego typu porad, jak i samych programów „optymalizujących” RAM wynika z niezrozumienia sposobu, w jaki system Windows (a przynajmniej generacje od Windows XP do najnowszej Siódemki) zarządza pamięcią. Wielu użytkowników traktuje RAM jako zasób, z którego należy bardzo oszczędnie korzystać. Rozumują oni w ten sposób: im więcej dostępnej pamięci, tym system i programy działają szybciej. To błąd. Od kiedy w architekturze współczesnych procesorów pojawiły się funkcje związane z pobraniami wyprzedzającymi i predykcją rozgałęzień przetwarzanego kodu, powstały także algorytmy zarządzania pamięcią (prefetching w Windows XP, SuperFetch w Vista i 7), wykorzystujące zaawansowane techniki predykcji i alokacji zasobów. Od czasu wprowadzenia Windows XP w pewnym sensie można mówić, że więcej dostępnej i niewykorzystywanej pamięci oznacza więcej zmarnowanej pamięci. Warto też mieć na uwadze, w jaki sposób działa większość „optymalizerów” RAM-u. Najczęściej „zwalniają” one całkiem pokaźne zasoby pamięci. Jak to robią? Trik polega na wywołaniu funkcji API Windows, która zmusza uruchomione aplikacje do przepisania ich kodu z RAM-u do pliku stronicowania – czyli pamięci wirtualnej. Inną techniką stosowaną w ramboosterach jest zmuszanie systemu operacyjnego, by przeniósł do pliku wymiany wszystko, co możliwe. W obu przypadkach użytkownik, który jest, oczywiście, informowany o ilości dostępnej pamięci, uzyskuje informacje, że program zwalnia niesamowite ilości RAM-u. Tylko trudno mówić o jakiejkolwiek optymalizacji, gdy kod usunięty z pamięci zostaje przeniesiony do znacznie wolniejszej – bo znajdującej się na dysku twardym – pamięci wirtualnej. Nasza rada: trzymać się z daleka od takich programów!
Zadaniem programu Extra RAM jest „optymalizacja” systemu przez „usunięcie zbędnych elementów” z RAM-u. Rezultat (tutaj w Windows 7) wydaje się imponujący: na komputerze wyposażonym w 1 GB RAM-u wolnych jest 700 MB. Szkoda tylko, że zwalnianie pamięci odbywa się z negatywnym skutkiem dla wydajności całego systemu.
Wyniki pomiarów i podsumowanie
Podczas analizowania mitów optymalizacji systemów Windows wykonaliśmy kilkaset pomiarów, chcąc uzyskać potwierdzenie, że sens stosowania opisywanych pseudoporad budzi wątpliwości. Testy przeprowadzaliśmy w dwóch systemach: Windows XP Home Edition SP3 PL oraz Windows 7 Ultimate PL x64. Na każdym z poniższych wykresów zielony pasek oznacza standardową konfigurację danego systemu operacyjnego, czyli system świeżo zainstalowany oraz zaktualizowany, pozbawiony jakichkolwiek dodatkowych aplikacji użytkowych z wyjątkiem zestawu programów wykorzystywanych przez nas do pomiarów (Maxon Cinebench R11.529, CrystalDiskMark 3.0.0g, ATTO Disk Benchmark 2.46, PassMark Performance Test 7.0). Po przeprowadzeniu pomiaru przy standardowej konfiguracji stosowaliśmy daną pseudoporadę i ponawialiśmy pomiar. Następnie przywracaliśmy system do pierwotnego stanu, by uniknąć ewentualnego kumulowania się efektów pseudooptymalizacji, i stosowaliśmy następną pseudoporadę. Rezultaty pomiarów uśredniliśmy i podaliśmy w miarach względnych (w procentach), przy czym wynik 100% zawsze był przypisywany konfiguracji standardowej. Wyniki nie pozostawiają najmniejszych złudzeń co do skuteczności wszystkich opisywanych pseudotrików optymalizacyjnych.
Zaczęliśmy od zmierzenia czasu uruchamiania systemu Windows XP Home Edition SP3. Elementem wyraźnie rzucającym się w oczy jest ponadtrzykrotnie dłuższy czas uruchamiania się systemu po włączeniu defragmentacji w proces startu systemu.
Analogiczny test szybkości uruchamiania systemu operacyjnego przeprowadzony w najnowszej, 64-bitowej wersji Windows. Włączenie defragmentacji podczas rozruchu wydłuża start systemu, w przypadku pozostałych porad trudno zauważyć różnice istotne statystycznie.
Jeden z najbardziej wyrazistych przykładów nonsensu stosowania opisywanych „trików” w celu zwiększenia wydajności. Testy odczytu danych w programie CrystalDiskMark wykazały, że najbardziej wydajna konfiguracja systemu XP Home Edition to konfiguracja standardowa.
W testach mierzących wydajność zapisu danych na dysku za pomocą programu CrystalDiskMark najlepszy wynik uzyskaliśmy po zastosowaniu porady dotyczącej defragmentacji. Rezultat nie powinien dziwić, bo dysk powinien działać szybciej, gdy zapisuje dane w ciągłym obszarze. Niemniej różnica jest na tyle niewielka, że w praktyce niedostrzegalna dla użytkownika; znacznie bardziej kłopotliwe jest wydłużenie czasu uruchamiania systemu na skutek defragmentacji w jego trakcie, co wykazaliśmy wcześniej.
Testy prędkości odczytu danych w programie CrystalDiskMark, tym razem przeprowadzone w najnowszym systemie Windows 7. Odczuwalnego wzrostu wydajności w stosunku do konfiguracji standardowej nie widać w żadnym przypadku.
Testy szybkości zapisywania danych przez program CrystalDiskMark. Widać wyraźnie odstępstwo: użycie ramboostera na tyle zmusiło dysk do pracy, że wpłynęło zauważalnie na wynik pomiaru. Po zastosowaniu narzędzia do „optymalizacji” pamięci zyskaliśmy sporo RAM-u, ale jak widać, wydajność operacji zapisu spadła o prawie 16%.
Program Maxon CineBench to benchmark oparty na popularnym programie Maxon Cinema 4D. Test jest wymagający obliczeniowo i pozwala oszacować wydajność karty graficznej oraz procesora. Na potrzeby artykułu wykorzystaliśmy tylko funkcje mierzące szybkość operacji obliczeniowych wykonywanych przez procesor główny. Zysku nie widać, straty największe są w przypadku ramboosterów.
Analogiczny test CineBench przeprowadzony z wykorzystaniem 64-bitowej wersji programu i na 64-bitowej platformie Windows 7 Ultimate. 64-bitowy system lepiej sobie radzi z zarządzaniem pamięcią, więc tym bardziej widać, jakie obniżenie wydajności powoduje zastosowanie programów czyszczących RAM.
PassMark Performance Test to prosty w obsłudze benchmark mierzący wydajność poszczególnych podzespołów komputera. Ponownie widać negatywny wpływ narzędzi czyszczących RAM.
W Windows 7 uruchamialiśmy 64-bitową wersję programu PassMark Performance Test 7.0. Inny system, ale wyniki „optymalizacji” tak samo kiepskie; najlepszy rezultat to konfiguracja standardowa.
ATTO Disk Benchmark to następny benchmark pozwalający oszacować wydajność dysku twardego, pamięci flash, dysków SSD itp. Pomiar prędkości odczytu danych nie wykazał, by którakolwiek z pseudoporad dawała jakiekolwiek korzyści w dziedzinie wydajności dysku.
Analogiczny test ATTO Disk Benchmark – prędkość zapisu danych. Brak różnic istotnych z praktycznego punktu widzenia.
Test odczytu różnych porcji danych w programie ATTO Disk Benchmark w systemie Windows 7 Ultimate. Ponownie widać negatywny wpływ programu do „optymalizacji” pamięci. Pozostałe wyniki nie odstają od konfiguracji standardowej.
Wynik podobny do poprzedniego; rambooster zmniejsza wydajność, pozostałe rezultaty w granicach błędu pomiaru.
Wnioski? Zamiast marnować czas na próby zwiększenia wydajności systemu o ułamki procent za pomocą wątpliwych trików, lepiej zainwestować np. w szybszy dysk, procesor lub pamięć. Wtedy na pewno wzrost wydajności będzie odczuwalny. Mamy nadzieję, że nasz tekst nie zniechęci potencjalnych zwolenników optymalizacji systemu Windows. System można nieco przyśpieszyć, ale nie przez wyszukiwanie „tajnych” ustawień, lecz dzięki znacznie prostszym działaniom konserwacyjnym. Tym tematem wkrótce się zajmiemy.