Windows 7

Windows 7 — zagadnienia związane z wydajnością systemu

Autor: Steven Sinofsky

Opublikowano: 10 stycznia 2008

Artykuł jest tłumaczeniem wpisu z bloga Engineering Windows 7.

Temat wydajności Windows był opisywany w listach i komentowany przez wiele osób. Dyskusja toczyła się bardzo szerokim torem — oczywiście wszyscy oczekują poprawienia wydajności systemu. Podobnie jak w przypadku wielu innych omawianych przez nas tematów, wydajność — postrzegana tak dosłownie i wymiernie, jak to możliwe — także jest tematem bardzo subtelnym. Osiągnięcie wydajności spełniającej oczekiwania wszystkich użytkowników uzależnione jest od wielu czynników i wymaga wielu kompromisów. Wiemy, że nawet jeśli spełnimy oczekiwania, ludzie i tak będą chcieli więcej od swoich komputerów z systemem Windows (i to także jest oczekiwane). Postanowiliśmy, że tworząc Windows 7 (i IE 8) zagadnieniom tym poświęcimy szczególną uwagę. Wydajność jest ważnym zagadnieniem dla każdego z naszych zespołów zajmujących się poszczególnymi obszarami funkcjonalnymi systemu, a dla jednego z tych zespołów (Fundamentals) jest jednym z podstawowych zadań. W tym artykule chciałem jedynie usystematyzować wiedzę, nim zagłębimy się w temat wydajności w następnych artykułach. Zainteresowanym tematem wydajności polecam lekturę artykułu na temat wydajności IE8.

Za wydajność odpowiedzialnych jest wiele różnych czynników. Możemy ją rozumieć przez czas odpowiedzi na określone żądanie. Wydajność może wyznaczać „typową” ilość pamięci RAM lub zalecany model procesora. Może być mierzona czasem potrzebnym na uruchomienie jakiegoś programu. Może oznaczać czas potrzebny na uruchomienie komputera albo uśpienie go bądź obudzenie ze stanu uśpienia. Może być wyznaczana aktywnością procesora i twardego dysku lub brakiem takiej aktywności. Może być mierzona czasem pracy na bateriach. Może to być tak przyziemna sprawa, jak przestrzeń dyskowa zajęta po instalacji. Wszystkie te parametry są miarami wydajności. Wszystkie te parametry są systematycznie monitorowane w czasie prac nad rozwojem systemu. Wydajność mierzymy wykonując zbiór określonych zadań (liczący kilka tysięcy), a programiści mogą uruchamiać określone zadania dobierając ich szczegółowość i zakres. Poniżej zestawiłem niektóre (nie jest to pełna lista) parametry monitorowane i analizowane w miarę tworzenia Windows 7:

  • Wykorzystanie pamięci — ilość pamięci alokowanej podczas realizacji danego zadania. Jak wiemy, znalezienie kompromisu pomiędzy czasem wykonywania a ilością potrzebnej pamięci jest klasycznym problemem informatyki i my też od niego nie uciekniemy. Związek pomiędzy czasem wykonywania a ilością pamięci jest szczególnie widoczny w przypadku stosowania pamięci podręcznej, która kosztem zwiększonego zapotrzebowania na pamięć operacyjną lub przestrzeń dyskową pozwala podnieść wydajność lub uniknąć wielokrotnego wykonywania obliczeń.
  • Wykorzystanie procesora — współczesne mikroprocesory oferują ogromną moc obliczeniową, a wprowadzenie procesorów wielordzeniowych pozwala na częstsze niż do tej pory stosowanie przetwarzania równoległego. Oczywiście zasoby procesora też mają swoją cenę, a my mierzymy wykorzystanie procesora podczas realizacji zadań testowych. Celem jest utrzymanie wykorzystania procesora na niskim poziomie, co poprawia osiągi w zastosowaniach wieloużytkownikowych, a także obniża pobieraną moc elektryczną.
  • Operacje dyskowe — mimo że wydajność twardych dysków została znacznie poprawiona, nadal musimy robić co się da, by ograniczyć liczbę zlecanych przez system operacji odczytu i zapisu na dysku, w tym oczywiście operacji stronicowania. Zagadnieniu temu w Windows 7 chcemy poświęcić szczególną uwagę ze względu na rosnącą popularność urządzeń SSD (solid state drive), których charakterystyki są diametralnie inne.Czas potrzebny na uruchomienie, zamknięcie, uśpienie i obudzenie komputera— na wszystkie te parametry zwracamy dużą uwagę projektując Windows 7. Wiemy, że czasy te nigdy nie będą wystarczająco krótkie. Z tego względu współpracujemy z producentami komputerów i podzespołów komputerowych aby zagwarantować, że czasy, jakie osiągamy w naszych laboratoriach (lub użytkownicy uzyskują w świeżej instalacji systemu), będzie można także uzyskać w systemie zakupionym z nowym komputerem.
  • System bazowy— kolejnym ważnym zadaniem jest odpowiednie zwymiarowanie i dostrojenie systemu bazowego. Chodzi tu o zasoby zajmowane przez system bazowy przed załadowaniem dodatkowego oprogramowania. System ten stanowi platformę, która definiuje zbiór technologii, jakie ma do dyspozycji programista, oraz określa wymagania systemowe pozwalające uzyskać zadowalającą wydajność. Typowym działaniem w tym obszarze jest wyrzucenie jakiegoś elementu z systemu bazowego i ładowanie go na żądanie. Tu także niezbędne jest osiągnięcie rozsądnego kompromisu — chcemy uniknąć sytuacji, w której większość klientów będzie musiała na żądanie ładować jakieś komponenty systemu, co może obniżyć postrzeganą wydajność systemu w typowych zastosowaniach.
  • Przestrzeń dyskowa— chociaż parametr ten nie jest bezpośrednio związany z rzeczywistą wydajnością systemu, wiele osób przestrzeń dyskową zajmowaną przez system traktuje jako wskaźnik postrzeganej wydajności systemu. Określiliśmy kilka celów związanych z tym wskaźnikiem, a szczegóły omówimy wkrótce. Poświęcimy także trochę czasu na wyjaśnienie \Windows\WinSxS, ponieważ jest to temat często poruszany na grupach dyskusyjnych TechNet i MSDN. Problem ten widzimy raczej nie jako problem wydajności, a problem wygodnego przechowywania elementów takich jak: sterowniki urządzeń, zawartość pomocy systemu, opcjonalne składniki Windows, a także informacje i dzienniki diagnostyczne.

Przyjęliśmy pewne kryteria, które sprawdzamy pod koniec poszczególnych etapów rozwoju systemu oraz przed wypuszczeniem wersji beta, i nie udostępnimy systemu bez wcześniejszego spełnienia tych kryteriów. Niektóre z tych kryteriów są wskaźnikami takimi jak liczba błędów stron, wykorzystanie procesora, zestaw roboczy, liczba klatek na sekundę w grach komputerowych, a inne kryteria oparte są na zadaniach testowych i oceniają szybkość realizacji danego zadania wyrażoną czasem lub liczbą kliknięć. Kryteria sprawdzamy na różnych platformach sprzętowych (systemy 32 i 64-bitowe, 1, 2 lub 4 GB RAM, dyski twarde o prędkości obrotowej 5400 i 7200 obrotów na minutę, dyski SSD, różnorodne procesory itp.). Ze względu na nieodłączne kompromisy towarzyszące tworzeniu oprogramowania na różne platformy, często wprowadzamy instrukcje warunkowe uzależniające sposób wykonywania kodu od sprzętu, na którym uruchamiany jest system.

Z drugiej strony sprawa poprawiania wydajności powinna być oczywista — używaj mniej, rób mniej, zajmuj mniej. Gdy wszystkiego będzie mniej, wydajność powinna wzrosnąć. W szczególnych przypadkach postępowanie takie z pewnością przyniesie oczekiwane rezultaty. Jednak — jak wynika z komentarzy na temat systemu — element, który dla jednej osoby jest niezbędny, dla innej może być całkowicie nieprzydatny. Szczególnie wyraźnie widać to w przypadku interfejsu użytkownika — wiele osób chciałoby, żeby podstawowy interfejs był bardziej efektowny, zawierał animacje i grafikę („jak u konkurencji”), a jednocześnie inne osoby mówią: „pozbądźcie się grafiki i wróćcie do interfejsu z Windows 2000”. System Windows jest wyjątkowo elastyczny i zapewnia wiele możliwości dopasowania sposobu działania. Widzieliśmy tu wiele komentarzy zachęcających do przygotowania różnych wersji Windows dostosowanych dla różnych odbiorców, a także całkiem sporo z zachętami do zmniejszenia liczby różnych wersji systemu. Liczba różnych wersji, jakie możemy przygotować, zapewniając jednocześnie platformę, która jest stabilna i wiarygodna dla klientów i programistów oraz wydajna i łatwa w zarządzaniu, jest ograniczona. Oczywiście w znanym kontekście (w domu albo w firmie i ze znanym zestawem oprogramowania) zawsze będzie możliwe skorzystanie z dostępnych w Windows narzędzi dostosowywania i zarządzania i dopasowanie sposobu działania systemu. Pozostawienie użytkownikom swobody i kontroli nad sposobem działania ich komputerów ma dla nas ogromne znaczenie. Przekonacie się, że wzięliśmy to pod uwagę także podczas tworzenia Windows 7.

Zdecydowanie największym wyzwaniem w zapewnieniu wysokiej atrakcyjności systemu przy jednoczesnym utrzymaniu wysokiej wydajności jest fakt, że klienci chcą używać swoich komputerów do realizacji coraz większej liczby zdań i spodziewają się, że będą mogli to osiągnąć, instalując na posiadanym już sprzęcie coraz więcej oprogramowania. Nie można nie zgodzić się z faktem, że sam system Windows oferuje coraz większą funkcjonalność, a my ciężko pracujemy, starając się wybrać te funkcje, które przydadzą się najszerszemu gronu klientów. Jednocześnie duża część prac nad systemem Windows 7 będzie miała na celu dalsze zapewnianie użytkownikom wyboru i kontroli nad tym, co dzieje się w systemie, nad zainstalowanym oprogramowaniem, nad domyślnymi sposobami obsługi różnych typów plików i protokołów. Celem będzie także zapewnienie platformy, która ułatwi użytkownikom końcowym personalizację sposobu korzystania z komputera.

Warto także porównać rzeczywiste wyniki z wynikami laboratoryjnymi, uzyskiwanymi przy idealnych ustawieniach. W ramach prac nad rozwojem systemu Windows prowadzimy w warunkach laboratoryjnych testy pozwalające nam śledzić, jak zmiany w kodzie wpływają na wydajność systemu. Współpracujemy także z producentami komputerów i pomagamy im testować komputery schodzące z linii produkcyjnej. Natomiast dane o rzeczywistej wydajności systemu uzyskujemy za pośrednictwem programu Microsoft Customer Experience Improvement Program (dane w tym programie przekazywane są w sposób anonimowy, poufny i dobrowolny). Będziemy korzystać z tych danych w ciągu najbliższych kilku miesięcy i to one będą podstawą wszystkich decyzji, a nie anegdoty i inne mało wiarygodne źródła informacji.

 Do początku strony

Windows 7